From 94d89124d139f6484d3d2fba0773ab9791ed1ef9 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Wed, 15 Nov 2017 09:09:09 +1000 Subject: $ Fix crashes related to client side calls from the server side. - Removed RFTools additions. --- .../gtPlusPlus/core/item/bauble/ModularBauble.java | 2 +- .../core/item/general/books/ItemBaseBook.java | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java b/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java index 0e7df1703c..de12a77c27 100644 --- a/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java +++ b/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java @@ -36,7 +36,6 @@ public class ModularBauble extends BaseBauble { private IIcon mTextureRing; @SideOnly(Side.CLIENT) private IIcon mTextureBelt; - @SideOnly(Side.CLIENT) private IIcon iconArray[] = new IIcon[3]; @SideOnly(Side.CLIENT) private IIcon mfallback; @@ -342,6 +341,7 @@ public class ModularBauble extends BaseBauble { }*/ @Override + @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int meta) { if (meta < this.iconArray.length && this.iconArray[meta] != null){ return this.iconArray[meta]; diff --git a/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java index 8c4a262c32..fe0405d175 100644 --- a/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java +++ b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java @@ -2,18 +2,21 @@ package gtPlusPlus.core.item.general.books; import static gtPlusPlus.core.handler.BookHandler.mBookMap; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.util.List; import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.handler.BookHandler; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.nbt.NBTUtils; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreenBook; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -96,6 +99,7 @@ public class ItemBaseBook extends ItemWritableBook{ } @Override + @SideOnly(Side.CLIENT) public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) { //player.displayGUIBook(item); int i = item.getItemDamage(); @@ -106,7 +110,16 @@ public class ItemBaseBook extends ItemWritableBook{ mBookMap.get(i).mPages); if (player.worldObj.isRemote){ - Minecraft.getMinecraft().displayGuiScreen(new GuiScreenBook(player, bookstack, false)); + try { + Class clazz = Class.forName("net.minecraft.client.gui.GuiScreenBook"); + Constructor ctor = clazz.getConstructor(EntityPlayer.class, ItemStack.class, boolean.class); + Object object = ctor.newInstance(new Object[] { player, bookstack, false }); + Minecraft.getMinecraft().displayGuiScreen((GuiScreen) object); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + //Minecraft.getMinecraft().displayGuiScreen(new GuiScreenBook(player, bookstack, false)); } return item; } -- cgit From 04344136279524749cc07dc979c18baee6a72e4d Mon Sep 17 00:00:00 2001 From: Alkalus Date: Sat, 18 Nov 2017 05:46:28 +1000 Subject: + Added the Grindle, a portable E-reader for Data-Sticks. --- .../core/container/Container_Grindle.java | 182 ++++++++++++++++ .../gtPlusPlus/core/gui/item/GuiBaseGrindle.java | 141 ++++++++++++ src/Java/gtPlusPlus/core/handler/GuiHandler.java | 11 + .../core/inventories/BaseInventoryGrindle.java | 240 +++++++++++++++++++++ src/Java/gtPlusPlus/core/item/ModItems.java | 4 + .../core/item/general/BaseItemGrindle.java | 87 ++++++++ .../gregtech/common/render/GTPP_CapeRenderer.java | 2 +- .../assets/miscutils/textures/gui/itemGrindle.png | Bin 0 -> 1812 bytes .../assets/miscutils/textures/items/itemTablet.png | Bin 0 -> 372 bytes 9 files changed, 666 insertions(+), 1 deletion(-) create mode 100644 src/Java/gtPlusPlus/core/container/Container_Grindle.java create mode 100644 src/Java/gtPlusPlus/core/gui/item/GuiBaseGrindle.java create mode 100644 src/Java/gtPlusPlus/core/inventories/BaseInventoryGrindle.java create mode 100644 src/Java/gtPlusPlus/core/item/general/BaseItemGrindle.java create mode 100644 src/resources/assets/miscutils/textures/gui/itemGrindle.png create mode 100644 src/resources/assets/miscutils/textures/items/itemTablet.png (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/container/Container_Grindle.java b/src/Java/gtPlusPlus/core/container/Container_Grindle.java new file mode 100644 index 0000000000..8b218f5993 --- /dev/null +++ b/src/Java/gtPlusPlus/core/container/Container_Grindle.java @@ -0,0 +1,182 @@ +package gtPlusPlus.core.container; + +import gtPlusPlus.core.inventories.BaseInventoryGrindle; +import gtPlusPlus.core.slots.SlotDataStick; +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 Container_Grindle extends Container +{ + /** The Item Inventory for this Container, only needed if you want to reference isUseableByPlayer */ + public final BaseInventoryGrindle inventory; + + /** Using these will make transferStackInSlot easier to understand and implement + * INV_START is the index of the first slot in the Player's Inventory, so our + * BaseInventoryBackpack's number of slots (e.g. 5 slots is array indices 0-4, so start at 5) + * Notice how we don't have to remember how many slots we made? We can just use + * BaseInventoryBackpack.INV_SIZE and if we ever change it, the Container updates automatically. */ + private static final int INV_START = BaseInventoryGrindle.INV_SIZE, INV_END = INV_START+0, + HOTBAR_START = INV_END, HOTBAR_END = HOTBAR_START+8; + + // If you're planning to add armor slots, put those first like this: + // ARMOR_START = BaseInventoryBackpack.INV_SIZE, ARMOR_END = ARMOR_START+3, + // INV_START = ARMOR_END+1, and then carry on like above. + + public Container_Grindle(final EntityPlayer par1Player, final InventoryPlayer inventoryPlayer, final BaseInventoryGrindle inventoryItem) + { + this.inventory = inventoryItem; + + int i; + + //Actual Scan Slot + this.addSlotToContainer(new SlotDataStick(this.inventory, 0, 152, 5)); + + for (i = 1; i < BaseInventoryGrindle.INV_SIZE; ++i){ + this.addSlotToContainer(new SlotDataStick(this.inventory, i, 153, 30+(18*i))); + } + + // PLAYER ACTION BAR - uses default locations for standard action bar texture file + for (i = 0; i < 9; ++i) + { + this.addSlotToContainer(new Slot(inventoryPlayer, i, 8 + (i * 18), 142)); + } + } + + @Override + public boolean canInteractWith(final EntityPlayer entityplayer) + { + // be sure to return the inventory's isUseableByPlayer method + // if you defined special behavior there: + return this.inventory.isUseableByPlayer(entityplayer); + } + + /** + * Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that. + */ + @Override + public ItemStack transferStackInSlot(final EntityPlayer par1EntityPlayer, final int index) + { + ItemStack itemstack = null; + final Slot slot = (Slot) this.inventorySlots.get(index); + + if ((slot != null) && slot.getHasStack()) + { + final ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); + + // If item is in our custom Inventory or armor slot + if (index < INV_START) + { + // try to place in player inventory / action bar + if (!this.mergeItemStack(itemstack1, INV_START, HOTBAR_END+1, true)) + { + return null; + } + + slot.onSlotChange(itemstack1, itemstack); + } + // Item is in inventory / hotbar, try to place in custom inventory or armor slots + else + { + /* + If your inventory only stores certain instances of Items, + you can implement shift-clicking to your inventory like this: + + // Check that the item is the right type + if (itemstack1.getItem() instanceof ItemCustom) + { + // Try to merge into your custom inventory slots + // We use 'BaseInventoryBackpack.INV_SIZE' instead of INV_START just in case + // you also add armor or other custom slots + if (!this.mergeItemStack(itemstack1, 0, BaseInventoryBackpack.INV_SIZE, false)) + { + return null; + } + } + // If you added armor slots, check them here as well: + // Item being shift-clicked is armor - try to put in armor slot + if (itemstack1.getItem() instanceof ItemArmor) + { + int type = ((ItemArmor) itemstack1.getItem()).armorType; + if (!this.mergeItemStack(itemstack1, ARMOR_START + type, ARMOR_START + type + 1, false)) + { + return null; + } + } + Otherwise, you have basically 2 choices: + 1. shift-clicking between player inventory and custom inventory + 2. shift-clicking between action bar and inventory + + Be sure to choose only ONE of the following implementations!!! + */ + /** + * Implementation number 1: Shift-click into your custom inventory + */ + if (index >= INV_START) + { + // place in custom inventory + if (!this.mergeItemStack(itemstack1, 0, INV_START, false)) + { + return null; + } + } + + /** + * Implementation number 2: Shift-click items between action bar and inventory + */ + // item is in player's inventory, but not in action bar + if ((index >= INV_START) && (index < HOTBAR_START)) + { + // place in action bar + if (!this.mergeItemStack(itemstack1, HOTBAR_START, HOTBAR_END+1, false)) + { + return null; + } + } + // item in action bar - place in player inventory + else if ((index >= HOTBAR_START) && (index < (HOTBAR_END+1))) + { + if (!this.mergeItemStack(itemstack1, INV_START, INV_END+1, false)) + { + return null; + } + } + } + + if (itemstack1.stackSize == 0) + { + slot.putStack((ItemStack) null); + } + else + { + slot.onSlotChanged(); + } + + if (itemstack1.stackSize == itemstack.stackSize) + { + return null; + } + + slot.onPickupFromSlot(par1EntityPlayer, itemstack1); + } + + return itemstack; + } + + /** + * You should override this method to prevent the player from moving the stack that + * opened the inventory, otherwise if the player moves it, the inventory will not + * be able to save properly + */ + @Override + public ItemStack slotClick(final int slot, final int button, final int flag, final EntityPlayer player) { + // this will prevent the player from interacting with the item that opened the inventory: + if ((slot >= 0) && (this.getSlot(slot) != null) && (this.getSlot(slot).getStack() == player.getHeldItem())) { + return null; + } + return super.slotClick(slot, button, flag, player); + } +} diff --git a/src/Java/gtPlusPlus/core/gui/item/GuiBaseGrindle.java b/src/Java/gtPlusPlus/core/gui/item/GuiBaseGrindle.java new file mode 100644 index 0000000000..798b74b48f --- /dev/null +++ b/src/Java/gtPlusPlus/core/gui/item/GuiBaseGrindle.java @@ -0,0 +1,141 @@ +package gtPlusPlus.core.gui.item; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import gregtech.api.util.GT_Utility; +import gregtech.api.util.GT_Utility.ItemNBT; +import gtPlusPlus.core.container.Container_BackpackBase; +import gtPlusPlus.core.container.Container_Grindle; +import gtPlusPlus.core.inventories.BaseInventoryBackpack; +import gtPlusPlus.core.inventories.BaseInventoryGrindle; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.nbt.NBTUtils; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; +import net.minecraft.util.ResourceLocation; + +public class GuiBaseGrindle extends GuiContainer { + + /** The FontRenderer used by GuiScreen */ + protected FontRenderer fontRenderer; + + private static final ResourceLocation iconLocation = new ResourceLocation(CORE.MODID, "textures/gui/itemGrindle.png"); + + /** The inventory to render on screen */ + private final BaseInventoryGrindle inventory; + + public GuiBaseGrindle(final Container_Grindle containerItem){ + super(containerItem); + this.inventory = containerItem.inventory; + } + + /** + * Draws the screen and all the components in it. + */ + @Override + public void drawScreen(final int par1, final int par2, final float par3){ + super.drawScreen(par1, par2, par3); + } + + /** + * Draw the foreground layer for the GuiContainer (everything in front of the items) + */ + @Override + protected void drawGuiContainerForegroundLayer(final int par1, final int par2){ + final String s = "Git"; + //Title + this.fontRendererObj.drawStringWithShadow(I18n.format("Gregtech Information Transponder", new Object[0]), 0, -12, Utils.rgbtoHexValue(255, 255, 255)); + + if (this.inventory.getStackInSlot(0) != null){ + this.fontRendererObj.drawString(I18n.format(""+NBTUtils.getBookTitle(this.inventory.getStackInSlot(0)), new Object[0]), 10, 8, Utils.rgbtoHexValue(125, 255, 125)); + + if (!NBTUtils.tryIterateNBTData(this.inventory.getStackInSlot(0))){ + this.fontRendererObj.drawString(I18n.format("Very Bad prospection data.", new Object[0]), 10, 38, Utils.rgbtoHexValue(255, 125, 125)); + } + + NBTTagCompound tNBT = ItemNBT.getNBT(this.inventory.getStackInSlot(0)); + byte tTier = tNBT.getByte("prospection_tier"); + //List Tier + //this.fontRendererObj.drawStringWithShadow(I18n.format("Tier: "+tTier, new Object[0]), 10, 18, Utils.rgbtoHexValue(125, 255, 125)); + + if (tTier == 0) { // basic prospection data + String tData = tNBT.getString("prospection"); + //List prospection + //this.fontRendererObj.drawStringWithShadow(I18n.format("Prospection : "+tData, new Object[0]), 10, 28, Utils.rgbtoHexValue(125, 255, 125)); + + String[] tDataArray = tData.split(","); + if (tDataArray.length > 6) { + tNBT.setString("author", "X: " + tDataArray[0] + " Y: " + tDataArray[1] + " Z: " + tDataArray[2] + " Dim: " + tDataArray[3]); + //List prospection + this.fontRendererObj.drawString(I18n.format("X: " + tDataArray[0], new Object[0]), 10, 28, Utils.rgbtoHexValue(125, 125, 255)); + this.fontRendererObj.drawString(I18n.format("Y: " + tDataArray[1], new Object[0]), 10, 38, Utils.rgbtoHexValue(125, 125, 255)); + this.fontRendererObj.drawString(I18n.format("Z: " + tDataArray[2], new Object[0]), 10, 48, Utils.rgbtoHexValue(125, 125, 255)); + this.fontRendererObj.drawString(I18n.format("Dim: " + tDataArray[3], new Object[0]), 10, 58, Utils.rgbtoHexValue(125, 125, 255)); + + //Divider + this.fontRendererObj.drawString(I18n.format("-------------------", new Object[0]), 10, 63, Utils.rgbtoHexValue(125, 125, 255)); + + NBTTagList tNBTList = new NBTTagList(); + String[] mOreTypes = new String[50]; + String tOres = " Prospected Ores: "; + for (int i = 6; tDataArray.length > i; i++) { + mOreTypes[i] = (tDataArray[i] + " "); + if ((68+(i-6)*8) < (68+56)){ + this.fontRendererObj.drawString(I18n.format(mOreTypes[i], new Object[0]), 10, 68+((i-6)*8), Utils.rgbtoHexValue(125, 255, 125)); + } + } + Utils.LOG_INFO("test - "+tOres); + tNBTList.appendTag(new NBTTagString("Prospection Data From: X" + tDataArray[0] + " Z:" + tDataArray[2] + " Dim:" + tDataArray[3] + " Produces " + tDataArray[4] + "L " + tDataArray[5] + " " + tOres)); + tNBT.setTag("pages", tNBTList); + + + //List prospection + this.fontRendererObj.drawString(I18n.format("Tier: "+tTier+ " | Pages: "+tNBTList.tagCount(), new Object[0]), 10, 18, Utils.rgbtoHexValue(125, 255, 125)); + //Divider + this.fontRendererObj.drawString(I18n.format("-------------------", new Object[0]), 10, 23, Utils.rgbtoHexValue(125, 125, 255)); + + } + else { + this.fontRendererObj.drawString(I18n.format("Bad prospection data.", new Object[0]), 10, 68, Utils.rgbtoHexValue(255, 125, 125)); + } + } + } + else { + //Valid Datastick? + this.fontRendererObj.drawStringWithShadow(I18n.format("Insert device into port.", new Object[0]), 10, 8, Utils.rgbtoHexValue(255, 125, 125)); + } + + + + //Inventory Label + this.fontRendererObj.drawStringWithShadow(I18n.format("container.inventory", new Object[0]), 8, 131, Utils.rgbtoHexValue(255, 255, 255)); + + //this.fontRenderer.drawString(s, this.xSize / 2 - this.fontRenderer.getStringWidth(s) / 2, 0, 4210752); + //this.fontRenderer.drawString(I18n.translate("container.inventory"), 26, this.ySize - 96 + 4, 4210752); + } + + /** + * Draw the background layer for the GuiContainer (everything behind the items) + */ + @Override + protected void drawGuiContainerBackgroundLayer(final float par1, final int par2, final int par3) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(iconLocation); + final int k = (this.width - this.xSize) / 2; + final int l = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); + final int i1; + //drawPlayerModel(k + 51, l + 75, 30, k + 51 - this.xSize_lo, (l + 75) - 50 - this.ySize_lo, this.mc.thePlayer); + } +} diff --git a/src/Java/gtPlusPlus/core/handler/GuiHandler.java b/src/Java/gtPlusPlus/core/handler/GuiHandler.java index 70e2934349..124b01a2c0 100644 --- a/src/Java/gtPlusPlus/core/handler/GuiHandler.java +++ b/src/Java/gtPlusPlus/core/handler/GuiHandler.java @@ -7,9 +7,11 @@ import gtPlusPlus.core.container.*; import gtPlusPlus.core.gui.beta.Gui_ID_Registry; import gtPlusPlus.core.gui.beta.MU_GuiId; import gtPlusPlus.core.gui.item.GuiBaseBackpack; +import gtPlusPlus.core.gui.item.GuiBaseGrindle; import gtPlusPlus.core.gui.machine.*; import gtPlusPlus.core.interfaces.IGuiManager; import gtPlusPlus.core.inventories.BaseInventoryBackpack; +import gtPlusPlus.core.inventories.BaseInventoryGrindle; import gtPlusPlus.core.tileentities.base.TileEntityBase; import gtPlusPlus.core.tileentities.general.TileEntityFishTrap; import gtPlusPlus.core.tileentities.machines.TileEntityModularityTable; @@ -33,6 +35,7 @@ public class GuiHandler implements IGuiHandler { public static final int GUI6 = 5; //Fish trap public static final int GUI7 = 6; //Trade table public static final int GUI8 = 7; // + public static final int GUI9 = 8; // @@ -80,6 +83,10 @@ public class GuiHandler implements IGuiHandler { return new Container_TradeTable(player.inventory, (TileEntityTradeTable)te); } } + + if (ID == GUI9){ + return new Container_Grindle(player, player.inventory, new BaseInventoryGrindle(player.getHeldItem())); + } @@ -125,6 +132,10 @@ public class GuiHandler implements IGuiHandler { return new GUI_TradeTable(player.inventory, (TileEntityTradeTable)te, ((TileEntityBase) te).getOwner()); } } + + if (ID == GUI9){ + return new GuiBaseGrindle(new Container_Grindle(player, player.inventory, new BaseInventoryGrindle(player.getHeldItem()))); + } return null; } diff --git a/src/Java/gtPlusPlus/core/inventories/BaseInventoryGrindle.java b/src/Java/gtPlusPlus/core/inventories/BaseInventoryGrindle.java new file mode 100644 index 0000000000..ca7fcd6d03 --- /dev/null +++ b/src/Java/gtPlusPlus/core/inventories/BaseInventoryGrindle.java @@ -0,0 +1,240 @@ +package gtPlusPlus.core.inventories; + +import java.util.UUID; + +import gtPlusPlus.core.item.base.BaseItemBackpack; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.common.util.Constants; + +public class BaseInventoryGrindle implements IInventory{ + + private final String name = "Inventory Item"; + + /** Provides NBT Tag Compound to reference */ + private final ItemStack invItem; + + /** Defining your inventory size this way is handy */ + public static final int INV_SIZE = 6; + + /** Inventory's size must be same as number of slots you add to the Container class */ + private final ItemStack[] inventory = new ItemStack[INV_SIZE]; + + // declaration of variable: + protected String uniqueID; + + /** + * @param itemstack - the ItemStack to which this inventory belongs + */ + public BaseInventoryGrindle(final ItemStack stack) + { + this.invItem = stack; + + /** initialize variable within the constructor: */ + this.uniqueID = ""; + + if (!stack.hasTagCompound()) + { + stack.setTagCompound(new NBTTagCompound()); + // no tag compound means the itemstack does not yet have a UUID, so assign one: + this.uniqueID = UUID.randomUUID().toString(); + } + + // Create a new NBT Tag Compound if one doesn't already exist, or you will crash + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } + // note that it's okay to use stack instead of invItem right there + // both reference the same memory location, so whatever you change using + // either reference will change in the other + + // Read the inventory contents from NBT + this.readFromNBT(stack.getTagCompound()); + } + @Override + public int getSizeInventory() + { + return this.inventory.length; + } + + @Override + public ItemStack getStackInSlot(final int slot) + { + return this.inventory[slot]; + } + + @Override + public ItemStack decrStackSize(final int slot, final int amount) + { + ItemStack stack = this.getStackInSlot(slot); + if(stack != null) + { + if(stack.stackSize > amount) + { + stack = stack.splitStack(amount); + // Don't forget this line or your inventory will not be saved! + this.markDirty(); + } + else + { + // this method also calls markDirty, so we don't need to call it again + this.setInventorySlotContents(slot, null); + } + } + return stack; + } + + @Override + public ItemStack getStackInSlotOnClosing(final int slot) + { + final ItemStack stack = this.getStackInSlot(slot); + this.setInventorySlotContents(slot, null); + return stack; + } + + @Override + public void setInventorySlotContents(final int slot, final ItemStack stack) + { + this.inventory[slot] = stack; + + if ((stack != null) && (stack.stackSize > this.getInventoryStackLimit())) + { + stack.stackSize = this.getInventoryStackLimit(); + } + + // Don't forget this line or your inventory will not be saved! + this.markDirty(); + } + + // 1.7.2+ renamed to getInventoryName + @Override + public String getInventoryName() + { + return this.name; + } + + // 1.7.2+ renamed to hasCustomInventoryName + @Override + public boolean hasCustomInventoryName() + { + return this.name.length() > 0; + } + + @Override + public int getInventoryStackLimit() + { + return 1; + } + + /** + * This is the method that will handle saving the inventory contents, as it is called (or should be called!) + * anytime the inventory changes. Perfect. Much better than using onUpdate in an Item, as this will also + * let you change things in your inventory without ever opening a Gui, if you want. + */ + // 1.7.2+ renamed to markDirty + @Override + public void markDirty() + { + for (int i = 0; i < this.getSizeInventory(); ++i) + { + if ((this.getStackInSlot(i) != null) && (this.getStackInSlot(i).stackSize == 0)) { + this.inventory[i] = null; + } + } + + // This line here does the work: + this.writeToNBT(this.invItem.getTagCompound()); + } + + @Override + public boolean isUseableByPlayer(final EntityPlayer entityplayer) + { + return true; + } + + // 1.7.2+ renamed to openInventory(EntityPlayer player) + @Override + public void openInventory() {} + + // 1.7.2+ renamed to closeInventory(EntityPlayer player) + @Override + public void closeInventory() {} + + /** + * This method doesn't seem to do what it claims to do, as + * items can still be left-clicked and placed in the inventory + * even when this returns false + */ + @Override + public boolean isItemValidForSlot(final int slot, final ItemStack itemstack) + { + // Don't want to be able to store the inventory item within itself + // Bad things will happen, like losing your inventory + // Actually, this needs a custom Slot to work + return !(itemstack.getItem() instanceof BaseItemBackpack); + } + + /** + * A custom method to read our inventory from an ItemStack's NBT compound + */ + public void readFromNBT(final NBTTagCompound compound) + { + // Gets the custom taglist we wrote to this compound, if any + // 1.7.2+ change to compound.getTagList("ItemInventory", Constants.NBT.TAG_COMPOUND); + final NBTTagList items = compound.getTagList("ItemInventory", Constants.NBT.TAG_COMPOUND); + + if ("".equals(this.uniqueID)) + { + // try to read unique ID from NBT + this.uniqueID = compound.getString("uniqueID"); + // if it's still "", assign a new one: + if ("".equals(this.uniqueID)) + { + this.uniqueID = UUID.randomUUID().toString(); + } + } + + for (int i = 0; i < items.tagCount(); ++i) + { + // 1.7.2+ change to items.getCompoundTagAt(i) + final NBTTagCompound item = items.getCompoundTagAt(i); + final int slot = item.getInteger("Slot"); + + // Just double-checking that the saved slot index is within our inventory array bounds + if ((slot >= 0) && (slot < this.getSizeInventory())) { + this.inventory[slot] = ItemStack.loadItemStackFromNBT(item); + } + } + } + + /** + * A custom method to write our inventory to an ItemStack's NBT compound + */ + public void writeToNBT(final NBTTagCompound tagcompound) + { + // Create a new NBT Tag List to store itemstacks as NBT Tags + final NBTTagList items = new NBTTagList(); + + for (int i = 0; i < this.getSizeInventory(); ++i) + { + // Only write stacks that contain items + if (this.getStackInSlot(i) != null) + { + // Make a new NBT Tag Compound to write the itemstack and slot index to + final NBTTagCompound item = new NBTTagCompound(); + item.setInteger("Slot", i); + // Writes the itemstack in slot(i) to the Tag Compound we just made + this.getStackInSlot(i).writeToNBT(item); + + // add the tag compound to our tag list + items.appendTag(item); + } + } + tagcompound.setString("uniqueID", this.uniqueID); + // Add the TagList to the ItemStack's Tag Compound with the name "ItemInventory" + tagcompound.setTag("ItemInventory", items); + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index ec0e21c7bb..851db25325 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -240,6 +240,8 @@ public final class ModItems { public static Item itemModularBauble; public static Item itemCustomBook; + + public static Item itemGrindleTablet; public static final void init(){ @@ -616,6 +618,8 @@ public final class ModItems { itemAirFilter = new ItemAirFilter(); itemLavaFilter = new ItemLavaFilter(); + + itemGrindleTablet = new BaseItemGrindle(); //Chemistry CoalTar.run(); diff --git a/src/Java/gtPlusPlus/core/item/general/BaseItemGrindle.java b/src/Java/gtPlusPlus/core/item/general/BaseItemGrindle.java new file mode 100644 index 0000000000..66fd6968e4 --- /dev/null +++ b/src/Java/gtPlusPlus/core/item/general/BaseItemGrindle.java @@ -0,0 +1,87 @@ +package gtPlusPlus.core.item.general; + +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.util.GT_OreDictUnificator; +import gtPlusPlus.GTplusplus; +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.handler.GuiHandler; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.item.ItemUtils; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class BaseItemGrindle extends Item{ + + protected final String unlocalName; + + + public BaseItemGrindle(){ + this.unlocalName = "itemGrindleTablet"; + this.setUnlocalizedName("itemGrindleTablet"); + this.setTextureName(CORE.MODID + ":" + "itemTablet"); + GameRegistry.registerItem(this, "itemGrindleTablet"); + GT_OreDictUnificator.registerOre("tabletGit", ItemUtils.getSimpleStack(this)); + this.setMaxStackSize(1); + this.setCreativeTab(AddToCreativeTab.tabOther); + } + + @Override + public int getMaxItemUseDuration(final ItemStack stack) { + return 1; + } + + @Override + public ItemStack onItemRightClick(final ItemStack itemstack, final World world, final EntityPlayer player) + { + if (!world.isRemote){ + if (!player.isSneaking()) { + player.openGui(GTplusplus.instance, GuiHandler.GUI9, world, 0, 0, 0); + } + } + + return itemstack; + } + + @Override + public String getItemStackDisplayName(final ItemStack p_77653_1_) { + return ("Git"); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(final IIconRegister iconRegister) + { + this.itemIcon = iconRegister.registerIcon(CORE.MODID + ":" + "itemTablet"); + } + + @Override + public String getPotionEffect(ItemStack p_150896_1_) { + // TODO Auto-generated method stub + return super.getPotionEffect(p_150896_1_); + } + + @Override + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, + List p_77624_3_, boolean p_77624_4_) { + // TODO Auto-generated method stub + super.addInformation(p_77624_1_, p_77624_2_, p_77624_3_, p_77624_4_); + } + + @Override + public EnumRarity getRarity(ItemStack i) { + return EnumRarity.uncommon; + } + + @Override + public boolean isRepairable() { + return false; + } +} diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java index 4cbd3c7205..a287615315 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java @@ -17,7 +17,7 @@ import java.util.Collection; public class GTPP_CapeRenderer extends RenderPlayer { - private final ResourceLocation[] mCapes = {new ResourceLocation("miscutils:textures/OrangeHD.png"), new ResourceLocation("miscutils:textures/TesterCapeHD.png"), new ResourceLocation("miscutils:textures/FancyCapeHD.png"), new ResourceLocation("miscutils:textures/TesterCapeHD.png")}; + private final ResourceLocation[] mCapes = {new ResourceLocation("miscutils:textures/OrangeHD.png"), new ResourceLocation("miscutils:textures/TesterCapeHD.png"), new ResourceLocation("miscutils:textures/FancyCapeHD.png"), new ResourceLocation("miscutils:textures/DevCapeHD.png")}; private final Collection mCapeList; public GTPP_CapeRenderer(Collection aCapeList) { diff --git a/src/resources/assets/miscutils/textures/gui/itemGrindle.png b/src/resources/assets/miscutils/textures/gui/itemGrindle.png new file mode 100644 index 0000000000..cdc5de7715 Binary files /dev/null and b/src/resources/assets/miscutils/textures/gui/itemGrindle.png differ diff --git a/src/resources/assets/miscutils/textures/items/itemTablet.png b/src/resources/assets/miscutils/textures/items/itemTablet.png new file mode 100644 index 0000000000..8e10b0529a Binary files /dev/null and b/src/resources/assets/miscutils/textures/items/itemTablet.png differ -- cgit From 9d52b3d41d6dfdfb2e61cd59510b3a1d61925a16 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Mon, 20 Nov 2017 23:21:15 +1000 Subject: + Added the Upgraded Arcane Alembic.$ Fixed the Upgraded Alchemy Furnace GUI. % Tried to make the 'Upgraded' Alembic & Furnace work better with the vanilla TC versions. $ Fixed the Upgraded Alchemy Furnace causing the tesselator to throw issues. $ Fixes to the Upgraded Arcane Alembic. --- src/Java/gtPlusPlus/core/handler/GuiHandler.java | 9 + .../core/item/base/itemblock/ItemBlockBase.java | 21 -- .../item/base/itemblock/ItemBlockEntityBase.java | 23 ++ .../item/base/itemblock/ItemBlockTileEntity.java | 43 --- .../core/tileentities/ModTileEntities.java | 9 +- .../thaumcraft/common/ItemBlockThaumcraft.java | 34 ++ .../common/block/BlockFastAlchemyFurnace.java | 22 +- .../common/block/BlockFastArcaneAlembic.java | 373 +++++++++++++++++++++ .../thaumcraft/common/block/TC_BlockHandler.java | 10 +- .../common/tile/TileFastAlchemyFurnace.java | 17 +- .../common/tile/TileFastArcaneAlembic.java | 258 ++++++++++++++ .../gui/ContainerFastAlchemyFurnace.java | 143 ++++++++ .../xmod/thaumcraft/gui/GuiFastAlchemyFurnace.java | 45 +++ 13 files changed, 914 insertions(+), 93 deletions(-) delete mode 100644 src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBase.java create mode 100644 src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java delete mode 100644 src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockTileEntity.java create mode 100644 src/Java/gtPlusPlus/xmod/thaumcraft/common/ItemBlockThaumcraft.java create mode 100644 src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastArcaneAlembic.java create mode 100644 src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastArcaneAlembic.java create mode 100644 src/Java/gtPlusPlus/xmod/thaumcraft/gui/ContainerFastAlchemyFurnace.java create mode 100644 src/Java/gtPlusPlus/xmod/thaumcraft/gui/GuiFastAlchemyFurnace.java (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/handler/GuiHandler.java b/src/Java/gtPlusPlus/core/handler/GuiHandler.java index 6791289f9f..cf7c90eca5 100644 --- a/src/Java/gtPlusPlus/core/handler/GuiHandler.java +++ b/src/Java/gtPlusPlus/core/handler/GuiHandler.java @@ -32,6 +32,9 @@ import gtPlusPlus.core.tileentities.machines.TileEntityTradeTable; import gtPlusPlus.core.tileentities.machines.TileEntityWorkbench; import gtPlusPlus.core.tileentities.machines.TileEntityWorkbenchAdvanced; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.xmod.thaumcraft.common.tile.TileFastAlchemyFurnace; +import gtPlusPlus.xmod.thaumcraft.gui.ContainerFastAlchemyFurnace; +import gtPlusPlus.xmod.thaumcraft.gui.GuiFastAlchemyFurnace; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; @@ -94,6 +97,9 @@ public class GuiHandler implements IGuiHandler { else if (ID == GUI7){ return new Container_TradeTable(player.inventory, (TileEntityTradeTable)te); } + else if (ID == GUI8){ + return new ContainerFastAlchemyFurnace(player.inventory, (TileFastAlchemyFurnace)te); + } } if (ID == GUI9){ @@ -143,6 +149,9 @@ public class GuiHandler implements IGuiHandler { else if (ID == GUI7){ return new GUI_TradeTable(player.inventory, (TileEntityTradeTable)te, ((TileEntityBase) te).getOwner()); } + else if (ID == GUI8){ + return new GuiFastAlchemyFurnace(player.inventory, (TileFastAlchemyFurnace)te); + } } if (ID == GUI9){ diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBase.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBase.java deleted file mode 100644 index 372539ca7d..0000000000 --- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBase.java +++ /dev/null @@ -1,21 +0,0 @@ -package gtPlusPlus.core.item.base.itemblock; - -import gtPlusPlus.core.creative.AddToCreativeTab; -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemBlockBase extends ItemBlock { - - public ItemBlockBase(final Block block) { - super(block); - this.setCreativeTab(AddToCreativeTab.tabBlock); - } - - @Override - public int getColorFromItemStack(final ItemStack p_82790_1_, final int p_82790_2_) { - return super.getColorFromItemStack(p_82790_1_, p_82790_2_); - } - - -} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java new file mode 100644 index 0000000000..43a37b423c --- /dev/null +++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java @@ -0,0 +1,23 @@ +package gtPlusPlus.core.item.base.itemblock; + +import gtPlusPlus.core.creative.AddToCreativeTab; +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class ItemBlockEntityBase extends ItemBlock { + + public ItemBlockEntityBase(final Block block) { + super(block); + this.setMaxDamage(0); + this.setHasSubtypes(true); + this.setCreativeTab(AddToCreativeTab.tabMachines); + } + + @Override + public int getColorFromItemStack(final ItemStack p_82790_1_, final int p_82790_2_) { + return super.getColorFromItemStack(p_82790_1_, p_82790_2_); + } + + +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockTileEntity.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockTileEntity.java deleted file mode 100644 index 7a5f20833f..0000000000 --- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockTileEntity.java +++ /dev/null @@ -1,43 +0,0 @@ -package gtPlusPlus.core.item.base.itemblock; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemBlockTileEntity extends ItemBlock{ - - String[] description; - - public ItemBlockTileEntity(final Block block) { - super(block); - } - - @Override - public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { - for (int i =0; i< this.description.length; i++){ - if (!this.description[i].equals("")){ - list.add(this.description[i]); - } - } - - - super.addInformation(stack, aPlayer, list, bool); - } - - @Override - public void onUpdate(final ItemStack iStack, final World world, final Entity entityHolding, final int p_77663_4_, final boolean p_77663_5_) { - - } - - public void setDecription(final String[] description){ - for (int i =0; i< description.length; i++){ - this.description[i] = description[i]; - } - } - -} diff --git a/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java b/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java index 6dd948bcd1..83d274473c 100644 --- a/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java +++ b/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java @@ -1,13 +1,18 @@ package gtPlusPlus.core.tileentities; import cpw.mods.fml.common.registry.GameRegistry; -import gtPlusPlus.core.tileentities.general.*; +import gtPlusPlus.core.tileentities.general.TileEntityFirepit; +import gtPlusPlus.core.tileentities.general.TileEntityFishTrap; +import gtPlusPlus.core.tileentities.general.TileEntityHeliumGenerator; +import gtPlusPlus.core.tileentities.general.TileEntityInfiniteFluid; import gtPlusPlus.core.tileentities.machines.TileEntityModularityTable; import gtPlusPlus.core.tileentities.machines.TileEntityProjectTable; import gtPlusPlus.core.tileentities.machines.TileEntityTradeTable; import gtPlusPlus.core.tileentities.machines.TileEntityWorkbench; import gtPlusPlus.core.tileentities.machines.TileEntityWorkbenchAdvanced; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.xmod.thaumcraft.common.tile.TileFastAlchemyFurnace; +import gtPlusPlus.xmod.thaumcraft.common.tile.TileFastArcaneAlembic; public class ModTileEntities { @@ -30,6 +35,8 @@ public class ModTileEntities { GameRegistry.registerTileEntity(TileEntityProjectTable.class, "TileProjectTable"); GameRegistry.registerTileEntity(TileEntityTradeTable.class, "TileTradeTable"); GameRegistry.registerTileEntity(TileEntityModularityTable.class, "TileEntityModularityTable"); + GameRegistry.registerTileEntity(TileFastAlchemyFurnace.class, "TileFastAlchemyFurnace"); + GameRegistry.registerTileEntity(TileFastArcaneAlembic.class, "TileFastArcaneAlembic"); } diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/common/ItemBlockThaumcraft.java b/src/Java/gtPlusPlus/xmod/thaumcraft/common/ItemBlockThaumcraft.java new file mode 100644 index 0000000000..465f443906 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/common/ItemBlockThaumcraft.java @@ -0,0 +1,34 @@ +package gtPlusPlus.xmod.thaumcraft.common; + +import gtPlusPlus.core.item.base.itemblock.ItemBlockEntityBase; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemBlockThaumcraft extends ItemBlockEntityBase{ + + public ItemBlockThaumcraft(final Block block) { + super(block); + } + + @Override + public int getMetadata(final int par1) { + return par1; + } + + @Override + public String getUnlocalizedName(final ItemStack par1ItemStack) { + return super.getUnlocalizedName() + "." + par1ItemStack.getItemDamage(); + } + + public boolean placeBlockAt(final ItemStack stack, final EntityPlayer player, final World world, final int x, + final int y, final int z, final int side, final float hitX, final float hitY, final float hitZ, + final int metadata) { + final boolean ret = super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata); + return ret; + } + + + +} diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastAlchemyFurnace.java b/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastAlchemyFurnace.java index eee996f6f9..bf4a61cfc9 100644 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastAlchemyFurnace.java +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastAlchemyFurnace.java @@ -10,12 +10,14 @@ import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.GTplusplus; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.handler.GuiHandler; +import gtPlusPlus.xmod.thaumcraft.common.ItemBlockThaumcraft; import gtPlusPlus.xmod.thaumcraft.common.tile.TileFastAlchemyFurnace; 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.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; @@ -24,17 +26,15 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import thaumcraft.common.Thaumcraft; -import thaumcraft.common.blocks.BlockStoneDevice; -import thaumcraft.common.config.ConfigBlocks; import thaumcraft.common.lib.utils.InventoryUtils; -public class BlockFastAlchemyFurnace extends BlockStoneDevice { +public class BlockFastAlchemyFurnace extends BlockContainer { public IIcon[] iconFurnace; public IIcon[] iconPedestal; public BlockFastAlchemyFurnace() { + super(Material.iron); this.iconFurnace = new IIcon[5]; this.iconPedestal = new IIcon[2]; this.setCreativeTab(AddToCreativeTab.tabMachines); @@ -43,7 +43,7 @@ public class BlockFastAlchemyFurnace extends BlockStoneDevice { this.setResistance(25.0f); this.setStepSound(Block.soundTypeStone); this.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f); - GameRegistry.registerBlock(this, "blockFastAlchemyFurnace"); + GameRegistry.registerBlock(this, ItemBlockThaumcraft.class, "blockFastAlchemyFurnace"); LanguageRegistry.addName(this, "Upgraded Alchemical Furnace"); } @@ -122,13 +122,13 @@ public class BlockFastAlchemyFurnace extends BlockStoneDevice { @Override public boolean onBlockEventReceived(final World par1World, final int par2, final int par3, final int par4, final int par5, final int par6) { - if (par5 == 1) { + /*if (par5 == 1) { if (par1World.isRemote) { Thaumcraft.proxy.blockSparkle(par1World, par2, par3, par4, 11960575, 2); par1World.playAuxSFX(2001, par2, par3, par4, Block.getIdFromBlock(Blocks.stonebrick) + 0); } return true; - } + }*/ return super.onBlockEventReceived(par1World, par2, par3, par4, par5, par6); } @@ -192,10 +192,10 @@ public class BlockFastAlchemyFurnace extends BlockStoneDevice { this.iconFurnace[4] = ir.registerIcon("thaumcraft:al_furnace_top_filled"); } - @Override + /*@Override public int getRenderType() { return ConfigBlocks.blockStoneDeviceRI; - } + }*/ @Override public boolean isOpaqueCube() { @@ -243,8 +243,6 @@ public class BlockFastAlchemyFurnace extends BlockStoneDevice { } return this.iconFurnace[2]; } - } else if ((metadata == 1) || (metadata == 5) || (metadata == 8) || (metadata == 12)) { - return super.getIcon(iblockaccess, i, j, k, side); } return this.iconFurnace[0]; } diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastArcaneAlembic.java b/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastArcaneAlembic.java new file mode 100644 index 0000000000..04c0673b49 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/BlockFastArcaneAlembic.java @@ -0,0 +1,373 @@ +package gtPlusPlus.xmod.thaumcraft.common.block; + +import java.util.List; +import java.util.Random; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.common.registry.LanguageRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.xmod.thaumcraft.common.ItemBlockThaumcraft; +import gtPlusPlus.xmod.thaumcraft.common.tile.TileFastArcaneAlembic; +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.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.aspects.IEssentiaContainerItem; +import thaumcraft.common.blocks.ItemJarFilled; +import thaumcraft.common.config.ConfigBlocks; +import thaumcraft.common.config.ConfigItems; +import thaumcraft.common.lib.utils.InventoryUtils; + +public class BlockFastArcaneAlembic extends BlockContainer { + public IIcon[] icon; + public IIcon iconGlow; + private final int delay; + + public BlockFastArcaneAlembic() { + super(Material.iron); + this.icon = new IIcon[23]; + this.delay = 0; + this.setStepSound(Block.soundTypeMetal); + this.setCreativeTab(AddToCreativeTab.tabMachines); + this.setBlockName("blockFastArcaneAlembic"); + this.setHardness(3.0f); + this.setResistance(25.0f); + this.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f); + GameRegistry.registerBlock(this, ItemBlockThaumcraft.class, "blockFastArcaneAlembic"); + LanguageRegistry.addName(this, "Upgraded Arcane Alembic"); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(final IIconRegister ir) { + this.icon[0] = ir.registerIcon("thaumcraft:metalbase"); + for (int a = 1; a <= 6; ++a) { + this.icon[a] = ir.registerIcon("thaumcraft:crucible" + a); + } + this.icon[7] = ir.registerIcon("thaumcraft:goldbase"); + this.iconGlow = ir.registerIcon("thaumcraft:animatedglow"); + } + + @Override + public IIcon getIcon(final int i, final int md) { + return ((md == 0) || (md == 1) || (md == 5) || (md == 6)) ? this.icon[0] : this.icon[7]; + } + + @Override + public IIcon getIcon(final IBlockAccess iblockaccess, final int i, final int j, final int k, final int side) { + if (side == 1) { + return this.icon[1]; + } + if (side == 0) { + return this.icon[2]; + } + return this.icon[3]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(final Item par1, final CreativeTabs par2CreativeTabs, final List par3List) { + par3List.add(new ItemStack(par1, 1, 1)); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void onEntityCollidedWithBlock(final World world, final int i, final int j, final int k, + final Entity entity) { + if (!world.isRemote) { + + } + } + + @Override + public void addCollisionBoxesToList(final World world, final int i, final int j, final int k, + final AxisAlignedBB axisalignedbb, final List arraylist, final Entity par7Entity) { + this.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f); + super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); + } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(final World w, final int i, final int j, final int k, final Random r) { + + } + + @Override + public int damageDropped(final int metadata) { + return metadata; + } + + @Override + public TileEntity createTileEntity(final World world, final int metadata) { + + if (metadata == 1) { + return new TileFastArcaneAlembic(); + } + return super.createTileEntity(world, metadata); + } + + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(final World world, final int x, final int y, final int z, final int rs) { + final TileEntity te = world.getTileEntity(x, y, z); + if ((te != null) && (te instanceof TileFastArcaneAlembic)) { + final float r = ((TileFastArcaneAlembic) te).amount / ((TileFastArcaneAlembic) te).maxAmount; + return MathHelper.floor_float(r * 14.0f) + ((((TileFastArcaneAlembic) te).amount > 0) ? 1 : 0); + } + return 0; + } + + @Override + public TileEntity createNewTileEntity(final World var1, final int md) { + return null; + } + + @Override + public void onNeighborBlockChange(final World world, final int x, final int y, final int z, final Block nbid) { + final TileEntity te = world.getTileEntity(x, y, z); + if (!world.isRemote) { + if ((te != null) && (te instanceof TileFastArcaneAlembic)) { + world.markBlockForUpdate(x, y, z); + } + } + super.onNeighborBlockChange(world, x, y, z, nbid); + } + + @Override + public void breakBlock(final World par1World, final int par2, final int par3, final int par4, final Block par5, + final int par6) { + InventoryUtils.dropItems(par1World, par2, par3, par4); + final TileEntity te = par1World.getTileEntity(par2, par3, par4); + if ((te != null) && (te instanceof TileFastArcaneAlembic) && (((TileFastArcaneAlembic) te).aspectFilter != null)) { + par1World.spawnEntityInWorld(new EntityItem(par1World, par2 + 0.5f, + par3 + 0.5f, par4 + 0.5f, new ItemStack(ConfigItems.itemResource, 1, 13))); + } + super.breakBlock(par1World, par2, par3, par4, par5, par6); + } + + @Override + public boolean onBlockActivated(final World world, final int x, final int y, final int z, final EntityPlayer player, + final int side, final float par7, final float par8, final float par9) { + final int metadata = world.getBlockMetadata(x, y, z); + + if ((metadata == 1) && !world.isRemote && !player.isSneaking() && (player.getHeldItem() == null)) { + final TileEntity te2 = world.getTileEntity(x, y, z); + if ((te2 != null) && (te2 instanceof TileFastArcaneAlembic)) { + final TileFastArcaneAlembic tile2 = (TileFastArcaneAlembic) te2; + String msg = ""; + if ((tile2.aspect == null) || (tile2.amount == 0)) { + msg = StatCollector.translateToLocal("tile.alembic.msg.1"); + } else if (tile2.amount < (tile2.maxAmount * 0.4)) { + msg = StatCollector.translateToLocal("tile.alembic.msg.2"); + } else if (tile2.amount < (tile2.maxAmount * 0.8)) { + msg = StatCollector.translateToLocal("tile.alembic.msg.3"); + } else if (tile2.amount < tile2.maxAmount) { + msg = StatCollector.translateToLocal("tile.alembic.msg.4"); + } else if (tile2.amount == tile2.maxAmount) { + msg = StatCollector.translateToLocal("tile.alembic.msg.5"); + } + player.addChatMessage(new ChatComponentTranslation("§3" + msg, new Object[0])); + world.playSoundEffect(x, y, z, "thaumcraft:alembicknock", 0.2f, 1.0f); + } + } + if (metadata == 1) { + final TileEntity te2 = world.getTileEntity(x, y, z); + if ((te2 != null) && (te2 instanceof TileFastArcaneAlembic)) { + if (player.isSneaking() && (((TileFastArcaneAlembic) te2).aspectFilter != null)) { + ((TileFastArcaneAlembic) te2).aspectFilter = null; + world.markBlockForUpdate(x, y, z); + te2.markDirty(); + if (world.isRemote) { + world.playSound(x + 0.5f, y + 0.5f, z + 0.5f, + "thaumcraft:page", 1.0f, 1.1f, false); + } else { + final ForgeDirection fd = ForgeDirection.getOrientation(side); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5f + (fd.offsetX / 3.0f), + y + 0.5f, z + 0.5f + (fd.offsetZ / 3.0f), + new ItemStack(ConfigItems.itemResource, 1, 13))); + } + return true; + } + if (player.isSneaking() && (player.getHeldItem() == null)) { + ((TileFastArcaneAlembic) te2).amount = 0; + ((TileFastArcaneAlembic) te2).aspect = null; + if (world.isRemote) { + world.playSound(x + 0.5f, y + 0.5f, z + 0.5f, + "thaumcraft:alembicknock", 0.2f, 1.0f, false); + world.playSound(x + 0.5f, y + 0.5f, z + 0.5f, + "game.neutral.swim", 0.5f, + 1.0f + ((world.rand.nextFloat() - world.rand.nextFloat()) * 0.3f), false); + } + } else if ((player.getHeldItem() != null) && (((TileFastArcaneAlembic) te2).aspectFilter == null) + && (player.getHeldItem().getItem() == ConfigItems.itemResource) + && (player.getHeldItem().getItemDamage() == 13)) { + if ((((TileFastArcaneAlembic) te2).amount == 0) && (((IEssentiaContainerItem) player.getHeldItem().getItem()) + .getAspects(player.getHeldItem()) == null)) { + return true; + } + if ((((TileFastArcaneAlembic) te2).amount == 0) && (((IEssentiaContainerItem) player.getHeldItem().getItem()) + .getAspects(player.getHeldItem()) != null)) { + ((TileFastArcaneAlembic) te2).aspect = ((IEssentiaContainerItem) player.getHeldItem().getItem()) + .getAspects(player.getHeldItem()).getAspects()[0]; + } + final ItemStack heldItem = player.getHeldItem(); + --heldItem.stackSize; + ((TileFastArcaneAlembic) te2).aspectFilter = ((TileFastArcaneAlembic) te2).aspect; + world.markBlockForUpdate(x, y, z); + te2.markDirty(); + if (world.isRemote) { + world.playSound(x + 0.5f, y + 0.5f, z + 0.5f, + "thaumcraft:page", 1.0f, 0.9f, false); + } + return true; + } else if ((player.getHeldItem() != null) && (((TileFastArcaneAlembic) te2).amount > 0) + && ((player.getHeldItem().getItem() == ConfigItems.itemJarFilled) + || player.getHeldItem().isItemEqual(new ItemStack(ConfigBlocks.blockJar, 1, 0)) + || player.getHeldItem().isItemEqual(new ItemStack(ConfigBlocks.blockJar, 1, 3)))) { + boolean doit = false; + ItemStack drop = null; + if (player.getHeldItem().isItemEqual(new ItemStack(ConfigBlocks.blockJar, 1, 0)) + || player.getHeldItem().isItemEqual(new ItemStack(ConfigBlocks.blockJar, 1, 3))) { + drop = new ItemStack(ConfigItems.itemJarFilled, 1, player.getHeldItem().getItemDamage()); + doit = true; + ((ItemJarFilled) drop.getItem()).setAspects(drop, + new AspectList().add(((TileFastArcaneAlembic) te2).aspect, ((TileFastArcaneAlembic) te2).amount)); + ((TileFastArcaneAlembic) te2).amount = 0; + ((TileFastArcaneAlembic) te2).aspect = null; + final ItemStack heldItem2 = player.getHeldItem(); + --heldItem2.stackSize; + if (!player.inventory.addItemStackToInventory(drop) && !world.isRemote) { + world.spawnEntityInWorld( + new EntityItem(world, player.posX, player.posY, player.posZ, drop)); + } + } else { + drop = player.getHeldItem(); + if (((((ItemJarFilled) drop.getItem()).getAspects(drop) == null) + || (((ItemJarFilled) drop.getItem()).getAspects(drop).visSize() == 0) + || (((ItemJarFilled) drop.getItem()).getAspects(drop) + .getAmount(((TileFastArcaneAlembic) te2).aspect) > 0)) + && ((((ItemJarFilled) drop.getItem()).getFilter(drop) == null) + || (((ItemJarFilled) drop.getItem()) + .getFilter(drop) == ((TileFastArcaneAlembic) te2).aspect))) { + int amount = Math.min( + (((ItemJarFilled) drop.getItem()).getAspects(drop) == null) + ? 64 + : (64 - ((ItemJarFilled) drop.getItem()).getAspects(drop).visSize()), + ((TileFastArcaneAlembic) te2).amount); + if (drop.getItemDamage() == 3) { + amount = ((TileFastArcaneAlembic) te2).amount; + } + if (amount > 0) { + final TileFastArcaneAlembic TileFastArcaneAlembic = (TileFastArcaneAlembic) te2; + TileFastArcaneAlembic.amount -= amount; + AspectList as = ((ItemJarFilled) drop.getItem()).getAspects(drop); + if (as == null) { + as = new AspectList(); + } + as.add(((TileFastArcaneAlembic) te2).aspect, amount); + if (as.getAmount(((TileFastArcaneAlembic) te2).aspect) > 64) { + final int q = as.getAmount(((TileFastArcaneAlembic) te2).aspect) - 64; + as.reduce(((TileFastArcaneAlembic) te2).aspect, q); + } + ((ItemJarFilled) drop.getItem()).setAspects(drop, as); + if (((TileFastArcaneAlembic) te2).amount <= 0) { + ((TileFastArcaneAlembic) te2).aspect = null; + } + doit = true; + player.setCurrentItemOrArmor(0, drop); + } + } + } + if (doit) { + te2.markDirty(); + world.markBlockForUpdate(x, y, z); + if (world.isRemote) { + world.playSound(x + 0.5f, y + 0.5f, z + 0.5f, + "game.neutral.swim", 0.5f, + 1.0f + ((world.rand.nextFloat() - world.rand.nextFloat()) * 0.3f), false); + } + } + return true; + } + } + } + + if (world.isRemote) { + return true; + } + + return super.onBlockActivated(world, x, y, z, player, side, par7, par8, par9); + } + + public void onPoweredBlockChange(final World par1World, final int par2, final int par3, final int par4, + final boolean flag) { + final int l = par1World.getBlockMetadata(par2, par3, par4); + if ((l == 5) && flag) { + par1World.setBlockMetadataWithNotify(par2, par3, par4, 6, 2); + par1World.playAuxSFXAtEntity((EntityPlayer) null, 1003, par2, par3, par4, 0); + } else if ((l == 6) && !flag) { + par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2); + par1World.playAuxSFXAtEntity((EntityPlayer) null, 1003, par2, par3, par4, 0); + } + } + + @Override + public void onBlockPlacedBy(final World world, final int par2, final int par3, final int par4, + final EntityLivingBase ent, final ItemStack stack) { + final int l = MathHelper.floor_double(((ent.rotationYaw * 4.0f) / 360.0f) + 0.5) & 0x3; + if (stack.getItemDamage() == 1) { + final TileEntity tile = world.getTileEntity(par2, par3, par4); + if (tile instanceof TileFastArcaneAlembic) { + if (l == 0) { + ((TileFastArcaneAlembic) tile).facing = 2; + } + if (l == 1) { + ((TileFastArcaneAlembic) tile).facing = 5; + } + if (l == 2) { + ((TileFastArcaneAlembic) tile).facing = 3; + } + if (l == 3) { + ((TileFastArcaneAlembic) tile).facing = 4; + } + } + } + } + + @Override + public int getLightValue(final IBlockAccess world, final int x, final int y, final int z) { + return super.getLightValue(world, x, y, z); + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/TC_BlockHandler.java b/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/TC_BlockHandler.java index fade8601f0..0b8d18f7d2 100644 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/TC_BlockHandler.java +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/common/block/TC_BlockHandler.java @@ -4,10 +4,12 @@ import net.minecraft.block.Block; public class TC_BlockHandler { - static Block blockFurnace; - + public static Block blockFastAlchemyFurnace; + public static Block blockFastArcaneAlembic; + public static void run(){ - blockFurnace = new BlockFastAlchemyFurnace(); + blockFastAlchemyFurnace = new BlockFastAlchemyFurnace(); + blockFastArcaneAlembic = new BlockFastArcaneAlembic(); } - + } diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java b/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java index ec39e7f4af..756578a536 100644 --- a/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastAlchemyFurnace.java @@ -4,6 +4,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -13,15 +14,15 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.world.EnumSkyBlock; import net.minecraftforge.common.util.ForgeDirection; +import thaumcraft.api.TileThaumcraft; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import thaumcraft.common.config.ConfigItems; import thaumcraft.common.lib.crafting.ThaumcraftCraftingManager; -import thaumcraft.common.tiles.TileAlchemyFurnace; import thaumcraft.common.tiles.TileAlembic; import thaumcraft.common.tiles.TileBellows; -public class TileFastAlchemyFurnace extends TileAlchemyFurnace { +public class TileFastAlchemyFurnace extends TileThaumcraft implements ISidedInventory { private static final int[] slots_bottom; private static final int[] slots_top; private static final int[] slots_sides; @@ -103,7 +104,6 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { return (this.customName != null) && (this.customName.length() > 0); } - @Override public void setGuiDisplayName(final String par1Str) { this.customName = par1Str; } @@ -168,7 +168,6 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { return 64; } - @Override @SideOnly(Side.CLIENT) public int getCookProgressScaled(final int par1) { if (this.smeltTime <= 0) { @@ -177,13 +176,11 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { return (this.furnaceCookTime * par1) / this.smeltTime; } - @Override @SideOnly(Side.CLIENT) public int getContentsScaled(final int par1) { return (this.vis * par1) / this.maxVis; } - @Override @SideOnly(Side.CLIENT) public int getBurnTimeRemainingScaled(final int par1) { if (this.currentItemBurnTime == 0) { @@ -192,7 +189,6 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { return (this.furnaceBurnTime * par1) / this.currentItemBurnTime; } - @Override public boolean isBurning() { return this.furnaceBurnTime > 0; } @@ -229,9 +225,10 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { while (deep < 5) { ++deep; tile = this.worldObj.getTileEntity(this.xCoord, this.yCoord + deep, this.zCoord); - if (!(tile instanceof TileAlembic)) { + if (!(tile instanceof TileAlembic) || !(tile instanceof TileFastArcaneAlembic)) { break; } + final TileAlembic alembic = (TileAlembic) tile; if ((alembic.aspect != null) && (alembic.amount < alembic.maxAmount) && (this.aspects.getAmount(alembic.aspect) > 0)) { @@ -325,13 +322,11 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { return true; } - @Override public void getBellows() { this.bellows = TileBellows.getBellows(this.worldObj, this.xCoord, this.yCoord, this.zCoord, ForgeDirection.VALID_DIRECTIONS); } - @Override public void smeltItem() { if (this.canSmelt()) { AspectList al = ThaumcraftCraftingManager.getObjectTags(this.furnaceItemStacks[0]); @@ -395,7 +390,6 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { return (par3 != 0) || (par1 != 1) || (par2ItemStack.getItem() == Items.bucket); } - @Override public Aspect takeRandomAspect(final AspectList exlude) { if (this.aspects.size() > 0) { final AspectList temp = this.aspects.copy(); @@ -414,7 +408,6 @@ public class TileFastAlchemyFurnace extends TileAlchemyFurnace { return null; } - @Override public boolean takeFromContainer(final Aspect tag, final int amount) { if ((this.aspects != null) && (this.aspects.getAmount(tag) >= amount)) { this.aspects.remove(tag, amount); diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastArcaneAlembic.java b/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastArcaneAlembic.java new file mode 100644 index 0000000000..b89f9a4229 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/common/tile/TileFastArcaneAlembic.java @@ -0,0 +1,258 @@ +package gtPlusPlus.xmod.thaumcraft.common.tile; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.xmod.thaumcraft.common.block.TC_BlockHandler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.common.config.ConfigBlocks; +import thaumcraft.common.tiles.TileAlembic; + +public class TileFastArcaneAlembic extends TileAlembic { + public Aspect aspect; + public Aspect aspectFilter; + public int amount; + public int maxAmount; + public int facing; + public boolean aboveAlembic; + public boolean aboveFurnace; + ForgeDirection fd; + + public TileFastArcaneAlembic() { + this.aspectFilter = null; + this.amount = 0; + this.maxAmount = 64; + this.facing = 2; + this.aboveAlembic = false; + this.aboveFurnace = false; + this.fd = null; + } + + @Override + public AspectList getAspects() { + return (this.aspect != null) ? new AspectList().add(this.aspect, this.amount) : new AspectList(); + } + + @Override + public void setAspects(final AspectList aspects) { + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getRenderBoundingBox() { + return AxisAlignedBB.getBoundingBox(this.xCoord - 1, this.yCoord, + this.zCoord - 1, this.xCoord + 2, this.yCoord + 1, + this.zCoord + 2); + } + + @Override + public void readCustomNBT(final NBTTagCompound nbttagcompound) { + this.facing = nbttagcompound.getByte("facing"); + this.aspectFilter = Aspect.getAspect(nbttagcompound.getString("AspectFilter")); + final String tag = nbttagcompound.getString("aspect"); + if (tag != null) { + this.aspect = Aspect.getAspect(tag); + } + this.amount = nbttagcompound.getShort("amount"); + this.fd = ForgeDirection.getOrientation(this.facing); + } + + @Override + public void writeCustomNBT(final NBTTagCompound nbttagcompound) { + if (this.aspect != null) { + nbttagcompound.setString("aspect", this.aspect.getTag()); + } + if (this.aspectFilter != null) { + nbttagcompound.setString("AspectFilter", this.aspectFilter.getTag()); + } + nbttagcompound.setShort("amount", (short) this.amount); + nbttagcompound.setByte("facing", (byte) this.facing); + } + + @Override + public boolean canUpdate() { + return false; + } + + @Override + public int addToContainer(final Aspect tt, int am) { + if (((this.amount < this.maxAmount) && (tt == this.aspect)) || (this.amount == 0)) { + this.aspect = tt; + final int added = Math.min(am, this.maxAmount - this.amount); + this.amount += added; + am -= added; + } + this.markDirty(); + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + return am; + } + + @Override + public boolean takeFromContainer(final Aspect tt, final int am) { + if ((this.amount == 0) || (this.aspect == null)) { + this.aspect = null; + this.amount = 0; + } + if ((this.aspect != null) && (this.amount >= am) && (tt == this.aspect)) { + this.amount -= am; + if (this.amount <= 0) { + this.aspect = null; + this.amount = 0; + } + this.markDirty(); + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + return true; + } + return false; + } + + @Override + public boolean doesContainerContain(final AspectList ot) { + return (this.amount > 0) && (this.aspect != null) && (ot.getAmount(this.aspect) > 0); + } + + @Override + public boolean doesContainerContainAmount(final Aspect tt, final int am) { + return (this.amount >= am) && (tt == this.aspect); + } + + @Override + public int containerContains(final Aspect tt) { + return (tt == this.aspect) ? this.amount : 0; + } + + @Override + public boolean doesContainerAccept(final Aspect tag) { + return true; + } + + @Override + public boolean takeFromContainer(final AspectList ot) { + return false; + } + + @Override + public void getAppearance() { + this.aboveAlembic = false; + this.aboveFurnace = false; + if ((this.worldObj.getBlock(this.xCoord, this.yCoord - 1, this.zCoord) == ConfigBlocks.blockStoneDevice) + && (this.worldObj.getBlockMetadata(this.xCoord, this.yCoord - 1, this.zCoord) == 0)) { + this.aboveFurnace = true; + } + else if ((this.worldObj.getBlock(this.xCoord, this.yCoord - 1, this.zCoord) == TC_BlockHandler.blockFastAlchemyFurnace) + && (this.worldObj.getBlockMetadata(this.xCoord, this.yCoord - 1, this.zCoord) == 0)) { + this.aboveFurnace = true; + } + + if ((this.worldObj.getBlock(this.xCoord, this.yCoord - 1, this.zCoord) == ConfigBlocks.blockMetalDevice) + && (this.worldObj.getBlockMetadata(this.xCoord, this.yCoord - 1, this.zCoord) == this + .getBlockMetadata())) { + this.aboveAlembic = true; + } + else if ((this.worldObj.getBlock(this.xCoord, this.yCoord - 1, this.zCoord) == TC_BlockHandler.blockFastArcaneAlembic) + && (this.worldObj.getBlockMetadata(this.xCoord, this.yCoord - 1, this.zCoord) == 1)) { + this.aboveAlembic = true; + } + } + + @Override + public void onDataPacket(final NetworkManager net, final S35PacketUpdateTileEntity pkt) { + super.onDataPacket(net, pkt); + this.getAppearance(); + } + + @Override + public int onWandRightClick(final World world, final ItemStack wandstack, final EntityPlayer player, final int x, + final int y, final int z, final int side, final int md) { + if (side <= 1) { + return 0; + } + this.facing = side; + this.fd = ForgeDirection.getOrientation(this.facing); + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + player.swingItem(); + this.markDirty(); + return 0; + } + + @Override + public ItemStack onWandRightClick(final World world, final ItemStack wandstack, final EntityPlayer player) { + return null; + } + + @Override + public void onUsingWandTick(final ItemStack wandstack, final EntityPlayer player, final int count) { + } + + @Override + public void onWandStoppedUsing(final ItemStack wandstack, final World world, final EntityPlayer player, + final int count) { + } + + @Override + public boolean isConnectable(final ForgeDirection face) { + return (face != ForgeDirection.getOrientation(this.facing)) && (face != ForgeDirection.DOWN); + } + + @Override + public boolean canInputFrom(final ForgeDirection face) { + return false; + } + + @Override + public boolean canOutputTo(final ForgeDirection face) { + return (face != ForgeDirection.getOrientation(this.facing)) && (face != ForgeDirection.DOWN); + } + + @Override + public void setSuction(final Aspect aspect, final int amount) { + } + + @Override + public Aspect getSuctionType(final ForgeDirection loc) { + return null; + } + + @Override + public int getSuctionAmount(final ForgeDirection loc) { + return 0; + } + + @Override + public Aspect getEssentiaType(final ForgeDirection loc) { + return this.aspect; + } + + @Override + public int getEssentiaAmount(final ForgeDirection loc) { + return this.amount; + } + + @Override + public int takeEssentia(final Aspect aspect, final int amount, final ForgeDirection face) { + return (this.canOutputTo(face) && this.takeFromContainer(aspect, amount)) ? amount : 0; + } + + @Override + public int addEssentia(final Aspect aspect, final int amount, final ForgeDirection loc) { + return 0; + } + + @Override + public int getMinimumSuction() { + return 0; + } + + @Override + public boolean renderExtendedTube() { + return true; + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/gui/ContainerFastAlchemyFurnace.java b/src/Java/gtPlusPlus/xmod/thaumcraft/gui/ContainerFastAlchemyFurnace.java new file mode 100644 index 0000000000..e06d83846e --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/gui/ContainerFastAlchemyFurnace.java @@ -0,0 +1,143 @@ +package gtPlusPlus.xmod.thaumcraft.gui; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.xmod.thaumcraft.common.tile.TileFastAlchemyFurnace; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.common.container.SlotLimitedHasAspects; +import thaumcraft.common.lib.crafting.ThaumcraftCraftingManager; + +public class ContainerFastAlchemyFurnace extends Container { + private final TileFastAlchemyFurnace furnace; + private int lastCookTime; + private int lastBurnTime; + private int lastItemBurnTime; + private int lastVis; + private int lastSmelt; + + public ContainerFastAlchemyFurnace(final InventoryPlayer par1InventoryPlayer, final TileFastAlchemyFurnace tileEntity) { + this.furnace = tileEntity; + this.addSlotToContainer(new SlotLimitedHasAspects(tileEntity, 0, 80, 8)); + this.addSlotToContainer(new Slot(tileEntity, 1, 80, 48)); + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 9; ++j) { + this.addSlotToContainer( + new Slot(par1InventoryPlayer, j + (i * 9) + 9, 8 + (j * 18), 84 + (i * 18))); + } + } + for (int i = 0; i < 9; ++i) { + this.addSlotToContainer(new Slot(par1InventoryPlayer, i, 8 + (i * 18), 142)); + } + } + + @Override + public void addCraftingToCrafters(final ICrafting par1ICrafting) { + super.addCraftingToCrafters(par1ICrafting); + par1ICrafting.sendProgressBarUpdate(this, 0, this.furnace.furnaceCookTime); + par1ICrafting.sendProgressBarUpdate(this, 1, this.furnace.furnaceBurnTime); + par1ICrafting.sendProgressBarUpdate(this, 2, this.furnace.currentItemBurnTime); + par1ICrafting.sendProgressBarUpdate(this, 3, this.furnace.vis); + par1ICrafting.sendProgressBarUpdate(this, 4, this.furnace.smeltTime); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + for (int i = 0; i < this.crafters.size(); ++i) { + final ICrafting icrafting = (ICrafting) this.crafters.get(i); + if (this.lastCookTime != this.furnace.furnaceCookTime) { + icrafting.sendProgressBarUpdate(this, 0, this.furnace.furnaceCookTime); + } + if (this.lastBurnTime != this.furnace.furnaceBurnTime) { + icrafting.sendProgressBarUpdate(this, 1, this.furnace.furnaceBurnTime); + } + if (this.lastItemBurnTime != this.furnace.currentItemBurnTime) { + icrafting.sendProgressBarUpdate(this, 2, this.furnace.currentItemBurnTime); + } + if (this.lastVis != this.furnace.vis) { + icrafting.sendProgressBarUpdate(this, 3, this.furnace.vis); + } + if (this.lastSmelt != this.furnace.smeltTime) { + icrafting.sendProgressBarUpdate(this, 4, this.furnace.smeltTime); + } + } + this.lastCookTime = this.furnace.furnaceCookTime; + this.lastBurnTime = this.furnace.furnaceBurnTime; + this.lastItemBurnTime = this.furnace.currentItemBurnTime; + this.lastVis = this.furnace.vis; + this.lastSmelt = this.furnace.smeltTime; + } + + @Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(final int par1, final int par2) { + if (par1 == 0) { + this.furnace.furnaceCookTime = par2; + } + if (par1 == 1) { + this.furnace.furnaceBurnTime = par2; + } + if (par1 == 2) { + this.furnace.currentItemBurnTime = par2; + } + if (par1 == 3) { + this.furnace.vis = par2; + } + if (par1 == 4) { + this.furnace.smeltTime = par2; + } + } + + @Override + public boolean canInteractWith(final EntityPlayer par1EntityPlayer) { + return this.furnace.isUseableByPlayer(par1EntityPlayer); + } + + @Override + public ItemStack transferStackInSlot(final EntityPlayer par1EntityPlayer, final int par2) { + ItemStack itemstack = null; + final Slot slot = (Slot) this.inventorySlots.get(par2); + if ((slot != null) && slot.getHasStack()) { + final ItemStack itemstack2 = slot.getStack(); + itemstack = itemstack2.copy(); + if ((par2 != 1) && (par2 != 0)) { + AspectList al = ThaumcraftCraftingManager.getObjectTags(itemstack2); + al = ThaumcraftCraftingManager.getBonusTags(itemstack2, al); + if (TileFastAlchemyFurnace.isItemFuel(itemstack2)) { + if (!this.mergeItemStack(itemstack2, 1, 2, false) + && !this.mergeItemStack(itemstack2, 0, 1, false)) { + return null; + } + } else if ((al != null) && (al.size() > 0)) { + if (!this.mergeItemStack(itemstack2, 0, 1, false)) { + return null; + } + } else if ((par2 >= 2) && (par2 < 29)) { + if (!this.mergeItemStack(itemstack2, 29, 38, false)) { + return null; + } + } else if ((par2 >= 29) && (par2 < 38) && !this.mergeItemStack(itemstack2, 2, 29, false)) { + return null; + } + } else if (!this.mergeItemStack(itemstack2, 2, 38, false)) { + return null; + } + if (itemstack2.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + if (itemstack2.stackSize == itemstack.stackSize) { + return null; + } + slot.onPickupFromSlot(par1EntityPlayer, itemstack2); + } + return itemstack; + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/gui/GuiFastAlchemyFurnace.java b/src/Java/gtPlusPlus/xmod/thaumcraft/gui/GuiFastAlchemyFurnace.java new file mode 100644 index 0000000000..5f23568bc1 --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/thaumcraft/gui/GuiFastAlchemyFurnace.java @@ -0,0 +1,45 @@ +package gtPlusPlus.xmod.thaumcraft.gui; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.xmod.thaumcraft.common.tile.TileFastAlchemyFurnace; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import thaumcraft.client.lib.UtilsFX; + +@SideOnly(Side.CLIENT) +public class GuiFastAlchemyFurnace extends GuiContainer { + private final TileFastAlchemyFurnace furnaceInventory; + + public GuiFastAlchemyFurnace(final InventoryPlayer par1InventoryPlayer, + final TileFastAlchemyFurnace par2TileEntityFurnace) { + super(new ContainerFastAlchemyFurnace(par1InventoryPlayer, par2TileEntityFurnace)); + this.furnaceInventory = par2TileEntityFurnace; + } + + @Override + protected void drawGuiContainerForegroundLayer(final int par1, final int par2) { + } + + @Override + protected void drawGuiContainerBackgroundLayer(final float par1, final int par2, final int par3) { + GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + UtilsFX.bindTexture("textures/gui/gui_alchemyfurnace.png"); + final int k = (this.width - this.xSize) / 2; + final int l = (this.height - this.ySize) / 2; + GL11.glEnable(3042); + this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); + if (this.furnaceInventory.isBurning()) { + final int i1 = this.furnaceInventory.getBurnTimeRemainingScaled(20); + this.drawTexturedModalRect(k + 80, (l + 26 + 20) - i1, 176, 20 - i1, 16, i1); + } + int i1 = this.furnaceInventory.getCookProgressScaled(46); + this.drawTexturedModalRect(k + 106, (l + 13 + 46) - i1, 216, 46 - i1, 9, i1); + i1 = this.furnaceInventory.getContentsScaled(48); + this.drawTexturedModalRect(k + 61, (l + 12 + 48) - i1, 200, 48 - i1, 8, i1); + this.drawTexturedModalRect(k + 60, l + 8, 232, 0, 10, 55); + GL11.glDisable(3042); + } +} \ No newline at end of file -- cgit From be05aadfba9659ec68219554ae96b81de5549034 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Fri, 24 Nov 2017 13:41:48 +1000 Subject: + Added a simple block that can convert liquid xp to mob essence and back. + Added some Enchantment utilities. --- src/Java/gtPlusPlus/core/block/ModBlocks.java | 23 ++- .../core/block/general/BlockTankXpConverter.java | 105 ++++++++++ .../item/base/itemblock/ItemBlockEntityBase.java | 18 ++ .../general/TileEntityXpConverter.java | 193 ++++++++++++++++++ .../core/util/enchantment/EnchantmentUtils.java | 102 ++++++++++ .../gtPlusPlus/core/util/fluid/FluidUtils.java | 218 +++++++++++---------- 6 files changed, 553 insertions(+), 106 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java create mode 100644 src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java create mode 100644 src/Java/gtPlusPlus/core/util/enchantment/EnchantmentUtils.java (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java index 6ebb21bb9c..992cd7e991 100644 --- a/src/Java/gtPlusPlus/core/block/ModBlocks.java +++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java @@ -3,9 +3,20 @@ package gtPlusPlus.core.block; import cpw.mods.fml.common.registry.GameRegistry; import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; import gtPlusPlus.core.block.base.BlockBaseOre; -import gtPlusPlus.core.block.general.*; +import gtPlusPlus.core.block.general.BlockTankXpConverter; +import gtPlusPlus.core.block.general.FirePit; +import gtPlusPlus.core.block.general.FluidTankInfinite; +import gtPlusPlus.core.block.general.HellFire; +import gtPlusPlus.core.block.general.LightGlass; +import gtPlusPlus.core.block.general.MiningExplosives; import gtPlusPlus.core.block.general.antigrief.BlockWitherProof; -import gtPlusPlus.core.block.machine.*; +import gtPlusPlus.core.block.machine.FishTrap; +import gtPlusPlus.core.block.machine.HeliumGenerator; +import gtPlusPlus.core.block.machine.Machine_ModularityTable; +import gtPlusPlus.core.block.machine.Machine_ProjectTable; +import gtPlusPlus.core.block.machine.Machine_TradeTable; +import gtPlusPlus.core.block.machine.Machine_Workbench; +import gtPlusPlus.core.block.machine.Machine_WorkbenchAdvanced; import gtPlusPlus.core.fluids.FluidRegistryHandler; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; @@ -38,16 +49,17 @@ public final class ModBlocks { public static Block blockFirePit; public static Block blockOreFluorite; - + public static Block blockMiningExplosive; - + public static Block blockHellfire; public static Block blockInfiniteFLuidTank; public static Block blockProjectTable; public static Block blockTradeTable; public static Block blockModularTable; - + public static Block blockWitherGuard; + public static Block blockXpConverter; public static void init() { Utils.LOG_INFO("Initializing Blocks."); @@ -78,6 +90,7 @@ public final class ModBlocks { blockTradeTable = new Machine_TradeTable(); blockModularTable = new Machine_ModularityTable(); blockWitherGuard = new BlockWitherProof(); + blockXpConverter = new BlockTankXpConverter(); } diff --git a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java new file mode 100644 index 0000000000..aa19556317 --- /dev/null +++ b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java @@ -0,0 +1,105 @@ +package gtPlusPlus.core.block.general; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.common.registry.LanguageRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.item.base.itemblock.ItemBlockEntityBase; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.tileentities.general.TileEntityXpConverter; +import gtPlusPlus.core.util.enchantment.EnchantmentUtils; +import gtPlusPlus.core.util.player.PlayerUtils; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BlockTankXpConverter extends BlockContainer { + + @SideOnly(Side.CLIENT) + private IIcon textureTop; + @SideOnly(Side.CLIENT) + private IIcon textureBottom; + @SideOnly(Side.CLIENT) + private IIcon textureFront; + + @SuppressWarnings("deprecation") + public BlockTankXpConverter() { + super(Material.iron); + this.setBlockName("blockTankXpConverter"); + this.setCreativeTab(AddToCreativeTab.tabMachines); + GameRegistry.registerBlock(this, ItemBlockEntityBase.class, "blockTankXpConverter"); + LanguageRegistry.addName(this, "Xp Converter"); + } + + /** + * Gets the block's texture. Args: side, meta + */ + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(final int p_149691_1_, final int p_149691_2_) { + return p_149691_1_ == 1 ? this.textureTop + : (p_149691_1_ == 0 ? this.textureBottom + : ((p_149691_1_ != 2) && (p_149691_1_ != 4) ? this.blockIcon : this.textureFront)); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(final IIconRegister p_149651_1_) { + this.blockIcon = p_149651_1_.registerIcon(CORE.MODID + ":" + "SwirlYellow"); + this.textureTop = p_149651_1_.registerIcon(CORE.MODID + ":" + "SwirlYellow"); + this.textureBottom = p_149651_1_.registerIcon(CORE.MODID + ":" + "SwirlYellow"); + this.textureFront = p_149651_1_.registerIcon(CORE.MODID + ":" + "SwirlYellow"); + } + + /** + * Called upon block activation (right click on the block.) + */ + @Override + public boolean onBlockActivated(final World world, final int x, final int y, final int z, final EntityPlayer player, + final int side, final float lx, final float ly, final float lz) { + if (world.isRemote) { + return true; + } + else { + final TileEntityXpConverter tank = (TileEntityXpConverter) world.getTileEntity(x, y, z); + if (tank != null){ + if (tank.tankEssence.getFluid() != null){ + PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankEssence.getFluidAmount()+"L of "+tank.tankEssence.getFluid().getLocalizedName()); + } + if (tank.tankLiquidXp.getFluid() != null){ + PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankLiquidXp.getFluidAmount()+"L of "+tank.tankLiquidXp.getFluid().getLocalizedName()); + } + if ((tank.tankEssence.getFluid() != null) && (tank.tankLiquidXp.getFluid() != null)){ + PlayerUtils.messagePlayer(player, "This is worth "+EnchantmentUtils.getLevelForLiquid(tank.tankLiquidXp.getFluidAmount())); + } + } + } + return true; + } + + @Override + public int getRenderBlockPass() { + return 1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public TileEntity createNewTileEntity(final World world, final int p_149915_2_) { + return new TileEntityXpConverter(); + } + + @Override + public void onBlockAdded(final World world, final int x, final int y, final int z) { + super.onBlockAdded(world, x, y, z); + } + +} diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java index 43a37b423c..0dda165b6b 100644 --- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java +++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java @@ -1,9 +1,14 @@ package gtPlusPlus.core.item.base.itemblock; +import java.util.List; + +import gtPlusPlus.core.block.general.BlockTankXpConverter; import gtPlusPlus.core.creative.AddToCreativeTab; import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class ItemBlockEntityBase extends ItemBlock { @@ -19,5 +24,18 @@ public class ItemBlockEntityBase extends ItemBlock { return super.getColorFromItemStack(p_82790_1_, p_82790_2_); } + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public final void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { + if (Block.getBlockFromItem(stack.getItem()) instanceof BlockTankXpConverter){ + list.add(EnumChatFormatting.GRAY+"Liquid Xp can be filled or drained from all four sides."); + list.add(EnumChatFormatting.GRAY+"Mob Essence can be filled or drained from the top and bottom."); + } + else if (Block.getBlockFromItem(stack.getItem()) instanceof BlockTankXpConverter){ + //list.add(EnumChatFormatting.GRAY+"A pile of " + materialName + " dust."); + } + super.addInformation(stack, aPlayer, list, bool); + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java new file mode 100644 index 0000000000..990304cf07 --- /dev/null +++ b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java @@ -0,0 +1,193 @@ +package gtPlusPlus.core.tileentities.general; + +import gtPlusPlus.core.util.enchantment.EnchantmentUtils; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidEvent; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; + +public class TileEntityXpConverter extends TileEntity implements IFluidHandler { + + public FluidTank tankEssence = new FluidTank((int) (64000*EnchantmentUtils.RATIO_MOB_ESSENCE_TO_LIQUID_XP)); + public FluidTank tankLiquidXp = new FluidTank(64000); + private boolean needsUpdate = false; + private int updateTimer = 0; + + public TileEntityXpConverter() { + } + + @Override + public int fill(final ForgeDirection from, final FluidStack resource, final boolean doFill) { + this.needsUpdate = true; + if (resource.isFluidEqual(EnchantmentUtils.getLiquidXP(1))){ + return this.tankLiquidXp.fill(resource, doFill); + } + else if (resource.isFluidEqual(EnchantmentUtils.getMobEssence(1))){ + return this.tankEssence.fill(resource, doFill); + } + else { + return 0; + } + } + + @Override + public FluidStack drain(final ForgeDirection from, final FluidStack resource, final boolean doDrain) { + this.needsUpdate = true; + if (resource.isFluidEqual(EnchantmentUtils.getLiquidXP(1))){ + return this.tankLiquidXp.drain(resource.amount, doDrain); + } + else if (resource.isFluidEqual(EnchantmentUtils.getMobEssence(1))){ + return this.tankEssence.drain(resource.amount, doDrain); + } + else { + return null; + } + + } + + @Override + public FluidStack drain(final ForgeDirection from, final int maxDrain, final boolean doDrain) { + this.needsUpdate = true; + final FluidStack fluid_Essence = this.tankEssence.getFluid(); + final FluidStack fluid_Xp = this.tankLiquidXp.getFluid(); + if ((fluid_Essence == null) && (fluid_Xp == null)) { + return null; + } + + FluidStack fluid; + FluidTank tank; + + if ((from == ForgeDirection.UP) || (from == ForgeDirection.DOWN)){ + fluid = fluid_Essence; + tank = this.tankEssence; + } + else { + fluid = fluid_Xp; + tank = this.tankLiquidXp; + } + + int drained = maxDrain; + if (fluid.amount < drained) { + drained = fluid.amount; + } + + final FluidStack stack = new FluidStack(fluid, drained); + if (doDrain) { + fluid.amount -= drained; + if (fluid.amount <= 0) { + fluid = null; + } + + if (this != null) { + FluidEvent.fireEvent(new FluidEvent.FluidDrainingEvent(fluid, this.getWorldObj(), this.xCoord, + this.yCoord, this.zCoord, tank, 0)); + } + } + return stack; + } + + @Override + public boolean canFill(final ForgeDirection from, final Fluid fluid) { + return true; + } + + @Override + public boolean canDrain(final ForgeDirection from, final Fluid fluid) { + return true; + } + + @Override + public FluidTankInfo[] getTankInfo(final ForgeDirection from) { + if ((from == ForgeDirection.UP) || (from == ForgeDirection.DOWN)){ + return new FluidTankInfo[] { this.tankEssence.getInfo() }; + } + else { + return new FluidTankInfo[] { this.tankLiquidXp.getInfo() }; + } + } + + public float getAdjustedVolume() { + this.needsUpdate = true; + final float amount = this.tankLiquidXp.getFluidAmount(); + final float capacity = this.tankLiquidXp.getCapacity(); + final float volume = (amount / capacity) * 0.8F; + return volume; + } + + @Override + public void updateEntity() { + + if (this.tankEssence.getFluid() != null){ + final FluidStack bigStorage = this.tankEssence.getFluid(); + bigStorage.amount = this.tankEssence.getCapacity(); + this.tankEssence.setFluid(bigStorage); + } + + if (this.tankLiquidXp.getFluid() != null){ + final FluidStack bigStorage = this.tankLiquidXp.getFluid(); + bigStorage.amount = this.tankLiquidXp.getCapacity(); + this.tankLiquidXp.setFluid(bigStorage); + } + + if (this.needsUpdate) { + + if (this.tankEssence.getFluid() != null){ + final FluidStack bigStorage = this.tankEssence.getFluid(); + bigStorage.amount = this.tankEssence.getCapacity(); + this.tankEssence.setFluid(bigStorage); + } + + if (this.tankLiquidXp.getFluid() != null){ + final FluidStack bigStorage = this.tankLiquidXp.getFluid(); + bigStorage.amount = this.tankLiquidXp.getCapacity(); + this.tankLiquidXp.setFluid(bigStorage); + } + + if (this.updateTimer == 0) { + this.updateTimer = 10; // every 10 ticks it will send an update + } else { + --this.updateTimer; + if (this.updateTimer == 0) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + this.needsUpdate = false; + } + } + } + } + + @Override + public void readFromNBT(final NBTTagCompound tag) { + this.tankEssence.readFromNBT(tag); + this.tankLiquidXp.readFromNBT(tag); + super.readFromNBT(tag); + } + + @Override + public void writeToNBT(final NBTTagCompound tag) { + this.tankEssence.writeToNBT(tag); + this.tankLiquidXp.writeToNBT(tag); + super.writeToNBT(tag); + } + + @Override + public Packet getDescriptionPacket() { + final NBTTagCompound tag = new NBTTagCompound(); + this.writeToNBT(tag); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, this.blockMetadata, tag); + } + + @Override + public void onDataPacket(final NetworkManager net, final S35PacketUpdateTileEntity pkt) { + final NBTTagCompound tag = pkt.func_148857_g(); + this.readFromNBT(tag); + } + +} diff --git a/src/Java/gtPlusPlus/core/util/enchantment/EnchantmentUtils.java b/src/Java/gtPlusPlus/core/util/enchantment/EnchantmentUtils.java new file mode 100644 index 0000000000..49c625685c --- /dev/null +++ b/src/Java/gtPlusPlus/core/util/enchantment/EnchantmentUtils.java @@ -0,0 +1,102 @@ +package gtPlusPlus.core.util.enchantment; + +import gtPlusPlus.core.util.Utils; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +public class EnchantmentUtils { + + + public static final int XP_PER_BOTTLE = 8; + public static final int RATIO = 20; + public static final int LIQUID_PER_XP_BOTTLE = 160; + public static final double RATIO_MOB_ESSENCE_TO_LIQUID_XP = 13.32; + + public static int liquidToXpRatio(final int liquid) { + return liquid / RATIO; + } + + public static int xpToLiquidRatio(final int xp) { + return xp * RATIO; + } + + public static FluidStack getEssenceFromLiquidXp(final int xpAmount){ + if (xpAmount <= 0){ + return null; + } + return getMobEssence((int) (xpAmount*RATIO_MOB_ESSENCE_TO_LIQUID_XP)); + } + + public static FluidStack getLiquidXpFromEssence(final int essenceAmount){ + if (essenceAmount <= 0){ + return null; + } + return getLiquidXP((int) (essenceAmount/RATIO_MOB_ESSENCE_TO_LIQUID_XP)); + } + + public static int getLiquidForLevel(final int level) { + final int xp = getExperienceForLevel(level); + return xpToLiquidRatio(xp); + } + + public static int getLevelForLiquid(final int liquid) { + final int xp = liquidToXpRatio(liquid); + return getLevelForExperience(xp); + } + + public static int getExperienceForLevel(final int level) { + if (level == 0) { + return 0; + } + if ((level > 0) && (level < 16)) { + return level * 17; + } + if ((level > 15) && (level < 31)) { + return (int) (((1.5 * Math.pow(level, 2.0)) - (29.5 * level)) + 360.0); + } + return (int) (((3.5 * Math.pow(level, 2.0)) - (151.5 * level)) + 2220.0); + } + + public static int getXpToNextLevel(final int level) { + final int levelXP = getLevelForExperience(level); + final int nextXP = getExperienceForLevel(level + 1); + return nextXP - levelXP; + } + + public static int getLevelForExperience(final int experience) { + int i; + for (i = 0; getExperienceForLevel(i) <= experience; ++i) { + } + return i - 1; + } + + + + + + + + //Xp Fluids + public static FluidStack getMobEssence(final int amount){ + Utils.LOG_WARNING("Trying to get a fluid stack of Mob Essence."); + try { + return FluidRegistry.getFluidStack("mobessence", amount).copy(); + } + catch (final Throwable e){ + return null; + } + + } + + public static FluidStack getLiquidXP(final int amount){ + Utils.LOG_WARNING("Trying to get a fluid stack of Liquid XP."); + try { + return FluidRegistry.getFluidStack("xpjuice", amount).copy(); + } + catch (final Throwable e){ + return null; + } + + } + +} diff --git a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java index 47020b536b..b0b6102504 100644 --- a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java +++ b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java @@ -1,6 +1,8 @@ package gtPlusPlus.core.util.fluid; -import gregtech.api.enums.*; +import gregtech.api.enums.Dyes; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.ItemList; import gregtech.api.util.GT_LanguageManager; import gtPlusPlus.core.fluids.GenericFluid; import gtPlusPlus.core.item.base.BaseItemComponent; @@ -9,12 +11,17 @@ import gtPlusPlus.core.item.base.cell.BaseItemPlasmaCell; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.enchantment.EnchantmentUtils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidContainerItem; public class FluidUtils { @@ -87,24 +94,24 @@ public class FluidUtils { public static Fluid generateFluid(final String displayName, final String fluidName, final int tempK, final short[] rgba ,final int aState){ Fluid generatedFluid = null; switch (aState) { - case 0: { - generatedFluid = new GenericFluid(displayName, fluidName, 0, 100, tempK, 10000, false, rgba); - break; - } - default: - case 1: - case 4: { - generatedFluid = new GenericFluid(displayName, fluidName, 0, 100, tempK, 1000, false, rgba); - break; - } - case 2: { - generatedFluid = new GenericFluid(displayName, fluidName, 0, -100, tempK, 200, true, rgba); - break; - } - case 3: { - generatedFluid = new GenericFluid(displayName, fluidName, 15, -10000, tempK, 10, true, rgba); - break; - } + case 0: { + generatedFluid = new GenericFluid(displayName, fluidName, 0, 100, tempK, 10000, false, rgba); + break; + } + default: + case 1: + case 4: { + generatedFluid = new GenericFluid(displayName, fluidName, 0, 100, tempK, 1000, false, rgba); + break; + } + case 2: { + generatedFluid = new GenericFluid(displayName, fluidName, 0, -100, tempK, 200, true, rgba); + break; + } + case 3: { + generatedFluid = new GenericFluid(displayName, fluidName, 15, -10000, tempK, 10, true, rgba); + break; + } } return generatedFluid; } @@ -122,24 +129,24 @@ public class FluidUtils { final int tempK = material.getMeltingPointC(); Fluid generatedFluid = null; switch (aState) { - case 0: { - generatedFluid = new GenericFluid(material, 0, 100, tempK, 10000, false); - break; - } - default: - case 1: - case 4: { - generatedFluid = new GenericFluid(material, 0, 100, tempK, 1000, false); - break; - } - case 2: { - generatedFluid = new GenericFluid(material, 0, -100, tempK, 200, true); - break; - } - case 3: { - generatedFluid = new GenericFluid(material, 15, -10000, tempK, 10, true); - break; - } + case 0: { + generatedFluid = new GenericFluid(material, 0, 100, tempK, 10000, false); + break; + } + default: + case 1: + case 4: { + generatedFluid = new GenericFluid(material, 0, 100, tempK, 1000, false); + break; + } + case 2: { + generatedFluid = new GenericFluid(material, 0, -100, tempK, 200, true); + break; + } + case 3: { + generatedFluid = new GenericFluid(material, 15, -10000, tempK, 10, true); + break; + } } return generatedFluid; } @@ -167,30 +174,30 @@ public class FluidUtils { GT_LanguageManager.addStringLocalization(rFluid.getUnlocalizedName(), (aLocalized == null) ? aName : aLocalized); if (FluidRegistry.registerFluid(rFluid)) { switch (aState) { - case 0: { - rFluid.setGaseous(false); - rFluid.setViscosity(10000); - break; - } - case 1: - case 4: { - rFluid.setGaseous(false); - rFluid.setViscosity(1000); - break; - } - case 2: { - rFluid.setGaseous(true); - rFluid.setDensity(-100); - rFluid.setViscosity(200); - break; - } - case 3: { - rFluid.setGaseous(true); - rFluid.setDensity(-10000); - rFluid.setViscosity(10); - rFluid.setLuminosity(15); - break; - } + case 0: { + rFluid.setGaseous(false); + rFluid.setViscosity(10000); + break; + } + case 1: + case 4: { + rFluid.setGaseous(false); + rFluid.setViscosity(1000); + break; + } + case 2: { + rFluid.setGaseous(true); + rFluid.setDensity(-100); + rFluid.setViscosity(200); + break; + } + case 3: { + rFluid.setGaseous(true); + rFluid.setDensity(-10000); + rFluid.setViscosity(10); + rFluid.setLuminosity(15); + break; + } } } else { @@ -201,18 +208,18 @@ public class FluidUtils { } if (aMaterial != null) { switch (aState) { - case 1: { - aMaterial.mFluid = (rFluid); - break; - } - case 2: { - aMaterial.mGas = (rFluid); - break; - } - case 3: { - aMaterial.mPlasma = (rFluid); - break; - } + case 1: { + aMaterial.mFluid = (rFluid); + break; + } + case 2: { + aMaterial.mGas = (rFluid); + break; + } + case 3: { + aMaterial.mPlasma = (rFluid); + break; + } } } if ((aFullContainer != null) && (aEmptyContainer != null) && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) { @@ -234,7 +241,7 @@ public class FluidUtils { } public static Fluid addGTPlasma(final Material aMaterial) { - if (aMaterial.getLocalizedName().toLowerCase().contains("clay") || aMaterial.getComposites().size()>1 || aMaterial.getLocalizedName().toLowerCase().contains("wrought")){ + if (aMaterial.getLocalizedName().toLowerCase().contains("clay") || (aMaterial.getComposites().size()>1) || aMaterial.getLocalizedName().toLowerCase().contains("wrought")){ return null; } Utils.LOG_INFO("Generating a "+aMaterial.getLocalizedName()+" Plasma Cell"); @@ -277,30 +284,30 @@ public class FluidUtils { GT_LanguageManager.addStringLocalization(rFluid.getUnlocalizedName(), (aLocalized == null) ? aName : aLocalized); if (FluidRegistry.registerFluid(rFluid)) { switch (aState) { - case 0: { - rFluid.setGaseous(false); - rFluid.setViscosity(10000); - break; - } - case 1: - case 4: { - rFluid.setGaseous(false); - rFluid.setViscosity(1000); - break; - } - case 2: { - rFluid.setGaseous(true); - rFluid.setDensity(-100); - rFluid.setViscosity(200); - break; - } - case 3: { - rFluid.setGaseous(true); - rFluid.setDensity(-10000); - rFluid.setViscosity(10); - rFluid.setLuminosity(15); - break; - } + case 0: { + rFluid.setGaseous(false); + rFluid.setViscosity(10000); + break; + } + case 1: + case 4: { + rFluid.setGaseous(false); + rFluid.setViscosity(1000); + break; + } + case 2: { + rFluid.setGaseous(true); + rFluid.setDensity(-100); + rFluid.setViscosity(200); + break; + } + case 3: { + rFluid.setGaseous(true); + rFluid.setDensity(-10000); + rFluid.setViscosity(10); + rFluid.setLuminosity(15); + break; + } } } else { @@ -435,8 +442,8 @@ public class FluidUtils { Utils.LOG_INFO("FLUID GENERATION FAILED FOR "+localizedName); return null; } - - public final static Fluid generateFluidNonMolten(final String unlocalizedName, final String localizedName, final int MeltingPoint, final short[] RGBA, ItemStack dustStack, final ItemStack dustStack2){ + + public final static Fluid generateFluidNonMolten(final String unlocalizedName, final String localizedName, final int MeltingPoint, final short[] RGBA, final ItemStack dustStack, final ItemStack dustStack2){ return generateFluidNonMolten(unlocalizedName, localizedName, MeltingPoint, RGBA, dustStack, dustStack2, 144); } @@ -516,4 +523,13 @@ public class FluidUtils { } + public static FluidStack getMobEssence(final int amount){ + return EnchantmentUtils.getMobEssence(amount); + } + + public static FluidStack getLiquidXP(final int amount){ + return EnchantmentUtils.getLiquidXP(amount); + } + + } -- cgit From b5fd7c514de976e5f0b550e751ae3a73001ac67e Mon Sep 17 00:00:00 2001 From: Alkalus Date: Fri, 24 Nov 2017 17:20:03 +1000 Subject: $ Fixed issue where all my blocks allowed mobs to spawn. % More Work on the Xp Converter. % Formatting. --- .../gtPlusPlus/core/block/base/AdvancedBlock.java | 7 +++ .../gtPlusPlus/core/block/base/BasicBlock.java | 7 +++ .../gtPlusPlus/core/block/base/BlockBaseNBT.java | 19 ++++-- .../gtPlusPlus/core/block/base/BlockBaseOre.java | 6 ++ src/Java/gtPlusPlus/core/block/base/MetaBlock.java | 7 +++ .../core/block/general/BlockTankXpConverter.java | 59 ++++++++++++++++--- .../gtPlusPlus/core/block/general/HellFire.java | 41 ++++++++----- .../block/general/antigrief/BlockWitherProof.java | 38 ++++++------ .../block/general/fluids/BlockFluidSludge.java | 6 ++ .../core/block/machine/BlockGtFrameBox.java | 6 ++ .../gtPlusPlus/core/block/machine/FishTrap.java | 25 +++++--- .../block/machine/Machine_ModularityTable.java | 13 ++++- .../core/block/machine/Machine_ProjectTable.java | 8 ++- .../core/block/machine/Machine_TradeTable.java | 18 +++--- .../core/block/machine/Machine_Workbench.java | 7 +++ src/Java/gtPlusPlus/core/item/ModItems.java | 67 ++++++++++++++++------ .../core/tileentities/ModTileEntities.java | 10 +--- .../general/TileEntityXpConverter.java | 31 +++++++--- .../gtPlusPlus/core/util/player/PlayerUtils.java | 31 +++++----- 19 files changed, 294 insertions(+), 112 deletions(-) (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/block/base/AdvancedBlock.java b/src/Java/gtPlusPlus/core/block/base/AdvancedBlock.java index 7a0b715138..d8e59f96c8 100644 --- a/src/Java/gtPlusPlus/core/block/base/AdvancedBlock.java +++ b/src/Java/gtPlusPlus/core/block/base/AdvancedBlock.java @@ -4,7 +4,9 @@ import gtPlusPlus.core.lib.CORE; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class AdvancedBlock extends Block { @@ -28,4 +30,9 @@ public class AdvancedBlock extends Block { return false; } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } diff --git a/src/Java/gtPlusPlus/core/block/base/BasicBlock.java b/src/Java/gtPlusPlus/core/block/base/BasicBlock.java index 9e3a5fc37f..f97763dd54 100644 --- a/src/Java/gtPlusPlus/core/block/base/BasicBlock.java +++ b/src/Java/gtPlusPlus/core/block/base/BasicBlock.java @@ -5,7 +5,9 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BasicBlock extends BlockContainer { @@ -62,4 +64,9 @@ public class BasicBlock extends BlockContainer { return null; } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } diff --git a/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java b/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java index 3ecb556e09..da308e270b 100644 --- a/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java +++ b/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java @@ -9,10 +9,12 @@ import gtPlusPlus.core.item.base.itemblock.ItemBlockNBT; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.Explosion; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public abstract class BlockBaseNBT extends BlockContainer @@ -25,7 +27,7 @@ public abstract class BlockBaseNBT extends BlockContainer private IIcon textureFront; @SuppressWarnings("deprecation") - public BlockBaseNBT(Material material, String unlocalName, String displayName){ + public BlockBaseNBT(final Material material, final String unlocalName, final String displayName){ super(material); this.setBlockName(unlocalName); this.setCreativeTab(AddToCreativeTab.tabMachines); @@ -46,28 +48,33 @@ public abstract class BlockBaseNBT extends BlockContainer public abstract TileEntity createNewTileEntity(final World world, final int p_149915_2_); @Override - public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + public void breakBlock(final World world, final int x, final int y, final int z, final Block block, final int meta) { super.breakBlock(world, x, y, z, block, meta); } @Override - public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) { + public void onBlockDestroyedByPlayer(final World world, final int x, final int y, final int z, final int meta) { super.onBlockDestroyedByPlayer(world, x, y, z, meta); } @Override - public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { + public void onBlockDestroyedByExplosion(final World world, final int x, final int y, final int z, final Explosion explosion) { super.onBlockDestroyedByExplosion(world, x, y, z, explosion); } @Override - public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + public void onBlockHarvested(final World world, final int x, final int y, final int z, final int meta, final EntityPlayer player) { super.onBlockHarvested(world, x, y, z, meta, player); } @Override - public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) { + public void onBlockExploded(final World world, final int x, final int y, final int z, final Explosion explosion) { super.onBlockExploded(world, x, y, z, explosion); } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java b/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java index c1e58e9393..285f394971 100644 --- a/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java +++ b/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java @@ -6,6 +6,7 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.math.MathUtils; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -71,6 +72,11 @@ public class BlockBaseOre extends BlockBaseModular{ return this.blockColour; } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + diff --git a/src/Java/gtPlusPlus/core/block/base/MetaBlock.java b/src/Java/gtPlusPlus/core/block/base/MetaBlock.java index 3e116eeb7f..880bb3a597 100644 --- a/src/Java/gtPlusPlus/core/block/base/MetaBlock.java +++ b/src/Java/gtPlusPlus/core/block/base/MetaBlock.java @@ -4,8 +4,10 @@ import java.util.List; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.world.IBlockAccess; public class MetaBlock extends MultiTextureBlock { @@ -25,4 +27,9 @@ public class MetaBlock extends MultiTextureBlock { } } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java index d9cbfc9fe5..97a9ff2af6 100644 --- a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java +++ b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java @@ -4,6 +4,8 @@ import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.interfaces.IToolStats; +import gregtech.common.items.GT_MetaGenerated_Tool_01; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.item.base.itemblock.ItemBlockEntityBase; import gtPlusPlus.core.lib.CORE; @@ -13,9 +15,13 @@ import gtPlusPlus.core.util.player.PlayerUtils; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockTankXpConverter extends BlockContainer { @@ -66,16 +72,48 @@ public class BlockTankXpConverter extends BlockContainer { return true; } else { - final TileEntityXpConverter tank = (TileEntityXpConverter) world.getTileEntity(x, y, z); - if (tank != null){ - if (tank.tankEssence.getFluid() != null){ - PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankEssence.getFluidAmount()+"L of "+tank.tankEssence.getFluid().getLocalizedName()); + boolean mDidScrewDriver = false; + //Check For Screwdriver + try { + final ItemStack mHandStack = PlayerUtils.getItemStackInPlayersHand(player); + final Item mHandItem = PlayerUtils.getItemInPlayersHand(player); + if (mHandItem instanceof IToolStats){ + if (((mHandItem instanceof GT_MetaGenerated_Tool_01) && ((mHandItem.getDamage(mHandStack) == 22) || (mHandItem.getDamage(mHandStack) == 150)))){ + final TileEntityXpConverter tile = (TileEntityXpConverter) world.getTileEntity(x, y, z); + if (tile != null){ + mDidScrewDriver = true; + tile.onScrewdriverRightClick((byte) side, player, x, y, z); + } + + } } - if (tank.tankLiquidXp.getFluid() != null){ - PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankLiquidXp.getFluidAmount()+"L of "+tank.tankLiquidXp.getFluid().getLocalizedName()); + } + catch (final Throwable t){ + mDidScrewDriver = false; + } + + if (!mDidScrewDriver){ + + + try { + final TileEntityXpConverter tile = (TileEntityXpConverter) world.getTileEntity(x, y, z); + if (tile != null){ + tile.onRightClick((byte) side, player, x, y, z); + } } - if ((tank.tankEssence.getFluid() != null) && (tank.tankLiquidXp.getFluid() != null)){ - PlayerUtils.messagePlayer(player, "This is worth "+EnchantingUtils.getLevelForLiquid(tank.tankLiquidXp.getFluidAmount())); + catch (final Throwable t){} + + final TileEntityXpConverter tank = (TileEntityXpConverter) world.getTileEntity(x, y, z); + if (tank != null){ + if (tank.tankEssence.getFluid() != null){ + PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankEssence.getFluidAmount()+"L of "+tank.tankEssence.getFluid().getLocalizedName()); + } + if (tank.tankLiquidXp.getFluid() != null){ + PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankLiquidXp.getFluidAmount()+"L of "+tank.tankLiquidXp.getFluid().getLocalizedName()); + } + if ((tank.tankEssence.getFluid() != null) && (tank.tankLiquidXp.getFluid() != null)){ + PlayerUtils.messagePlayer(player, "This is worth "+EnchantingUtils.getLevelForLiquid(tank.tankLiquidXp.getFluidAmount())+" levels."); + } } } } @@ -102,4 +140,9 @@ public class BlockTankXpConverter extends BlockContainer { super.onBlockAdded(world, x, y, z); } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } diff --git a/src/Java/gtPlusPlus/core/block/general/HellFire.java b/src/Java/gtPlusPlus/core/block/general/HellFire.java index 2adab5d5e7..d73d0eb085 100644 --- a/src/Java/gtPlusPlus/core/block/general/HellFire.java +++ b/src/Java/gtPlusPlus/core/block/general/HellFire.java @@ -1,6 +1,11 @@ package gtPlusPlus.core.block.general; -import static net.minecraftforge.common.util.ForgeDirection.*; +import static net.minecraftforge.common.util.ForgeDirection.DOWN; +import static net.minecraftforge.common.util.ForgeDirection.EAST; +import static net.minecraftforge.common.util.ForgeDirection.NORTH; +import static net.minecraftforge.common.util.ForgeDirection.SOUTH; +import static net.minecraftforge.common.util.ForgeDirection.UP; +import static net.minecraftforge.common.util.ForgeDirection.WEST; import java.util.IdentityHashMap; import java.util.Map.Entry; @@ -21,6 +26,7 @@ import net.minecraft.block.BlockFire; import net.minecraft.block.material.MapColor; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.init.Blocks; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -44,29 +50,29 @@ public class HellFire extends BlockFire { this.setCreativeTab(AddToCreativeTab.tabBlock); GameRegistry.registerBlock(this, "blockHellFire"); LanguageRegistry.addName(this, "Hellish Fire"); - enableBrutalFire(); + this.enableBrutalFire(); } private void enableBrutalFire() { - for (Object o : Block.blockRegistry.getKeys()) + for (final Object o : Block.blockRegistry.getKeys()) { - String name = (String)o; - Block b = Block.getBlockFromName(name); + final String name = (String)o; + final Block b = Block.getBlockFromName(name); - if (b == Blocks.grass || b == Blocks.mycelium){ - int spread = 3; - int flamm = 3; + if ((b == Blocks.grass) || (b == Blocks.mycelium)){ + final int spread = 3; + final int flamm = 3; this.setFireInfo(b, spread * 4, flamm * 4); } if (b != Blocks.air) { - int spread = Blocks.fire.getEncouragement(b); - int flamm = Blocks.fire.getFlammability(b); + final int spread = Blocks.fire.getEncouragement(b); + final int flamm = Blocks.fire.getFlammability(b); this.setFireInfo(b, spread * 4, flamm * 4); } } - + //Special Case madness this.setFireInfo(Blocks.brown_mushroom_block, 20, 100); this.setFireInfo(Blocks.red_mushroom_block, 20, 100); @@ -89,7 +95,7 @@ public class HellFire extends BlockFire { @Override public void updateTick(final World world, final int x, final int y, final int z, Random random) { - random = new XSTR(); + random = new XSTR(); if (world.getGameRules().getGameRuleBooleanValue("doFireTick")) { final boolean flag = world.getBlock(x, y - 1, z).isFireSource(world, x, y - 1, z, UP); @@ -296,13 +302,18 @@ public class HellFire extends BlockFire { //Burn @Override - public void onEntityWalking(World world, int i, int j, int k, Entity entity) { + public void onEntityWalking(final World world, final int i, final int j, final int k, final Entity entity) { entity.setFire(10); } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + //Burn @Override - public void onEntityCollidedWithBlock(World world, int i, int j, int k, Entity entity) { + public void onEntityCollidedWithBlock(final World world, final int i, final int j, final int k, final Entity entity) { entity.setFire(10); } @@ -399,7 +410,7 @@ public class HellFire extends BlockFire { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister IIconRegister) { - this.IIconArray = new IIcon[] { + this.IIconArray = new IIcon[] { IIconRegister.registerIcon(CORE.MODID + ":" + "hellfire/" + "blockHellFire" + "_layer_0"), IIconRegister.registerIcon(CORE.MODID + ":" + "hellfire/" + "blockHellFire" + "_layer_1") }; } diff --git a/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java b/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java index 297bcb3061..d093bf2e2f 100644 --- a/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java +++ b/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java @@ -7,11 +7,11 @@ import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.math.MathUtils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.boss.EntityDragon; import net.minecraft.entity.boss.EntityWither; import net.minecraft.entity.boss.IBossDisplayData; @@ -56,39 +56,40 @@ public class BlockWitherProof extends Block{ this.blockIcon = iIcon.registerIcon(CORE.MODID + ":" + "blockFrameGt"); } - public void onBlockExploded(World world, int x, int y, int z, Explosion explosion){ + @Override + public void onBlockExploded(final World world, final int x, final int y, final int z, final Explosion explosion){ //prevent from being destroyed by wither and nukes. } @Override - public void onBlockDestroyedByExplosion(World p_149723_1_, int p_149723_2_, - int p_149723_3_, int p_149723_4_, Explosion p_149723_5_) { - + public void onBlockDestroyedByExplosion(final World p_149723_1_, final int p_149723_2_, + final int p_149723_3_, final int p_149723_4_, final Explosion p_149723_5_) { + } @Override - public boolean canDropFromExplosion(Explosion p_149659_1_) { + public boolean canDropFromExplosion(final Explosion p_149659_1_) { return false; } @Override - public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, - Entity entity) { - if (entity == null || !entity.isEntityAlive()){ + public boolean canEntityDestroy(final IBlockAccess world, final int x, final int y, final int z, + final Entity entity) { + if ((entity == null) || !entity.isEntityAlive()){ return false; - } - if (entity instanceof EntityWither || entity instanceof EntityDragon || entity instanceof IBossDisplayData){ + } + if ((entity instanceof EntityWither) || (entity instanceof EntityDragon) || (entity instanceof IBossDisplayData)){ return false; } else { - return super.canEntityDestroy(world, x, y, z, entity); - } + return super.canEntityDestroy(world, x, y, z, entity); + } } - - + + //Colour Handling private static final int mWitherColour = Utils.rgbtoHexValue(32, 32, 32); - + @Override public int colorMultiplier(final IBlockAccess par1IBlockAccess, final int par2, final int par3, final int par4){ return mWitherColour; @@ -99,6 +100,11 @@ public class BlockWitherProof extends Block{ return mWitherColour; } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } diff --git a/src/Java/gtPlusPlus/core/block/general/fluids/BlockFluidSludge.java b/src/Java/gtPlusPlus/core/block/general/fluids/BlockFluidSludge.java index f40c1dbe7d..b87054748d 100644 --- a/src/Java/gtPlusPlus/core/block/general/fluids/BlockFluidSludge.java +++ b/src/Java/gtPlusPlus/core/block/general/fluids/BlockFluidSludge.java @@ -6,6 +6,7 @@ import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -52,4 +53,9 @@ public class BlockFluidSludge extends BlockFluidClassic { return super.displaceIfPossible(world, x, y, z); } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } diff --git a/src/Java/gtPlusPlus/core/block/machine/BlockGtFrameBox.java b/src/Java/gtPlusPlus/core/block/machine/BlockGtFrameBox.java index cab02f9db6..0ed3aa5afd 100644 --- a/src/Java/gtPlusPlus/core/block/machine/BlockGtFrameBox.java +++ b/src/Java/gtPlusPlus/core/block/machine/BlockGtFrameBox.java @@ -4,6 +4,7 @@ import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; import gtPlusPlus.core.block.base.MetaBlock; import gtPlusPlus.core.lib.CORE; import net.minecraft.block.material.Material; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.world.IBlockAccess; public class BlockGtFrameBox extends MetaBlock { @@ -32,4 +33,9 @@ public class BlockGtFrameBox extends MetaBlock { return super.colorMultiplier(p_149720_1_, p_149720_2_, p_149720_3_, p_149720_4_); } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } diff --git a/src/Java/gtPlusPlus/core/block/machine/FishTrap.java b/src/Java/gtPlusPlus/core/block/machine/FishTrap.java index f2e15e24b6..fad1dff490 100644 --- a/src/Java/gtPlusPlus/core/block/machine/FishTrap.java +++ b/src/Java/gtPlusPlus/core/block/machine/FishTrap.java @@ -14,10 +14,12 @@ 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.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class FishTrap extends BlockContainer @@ -95,23 +97,28 @@ public class FishTrap extends BlockContainer } @Override - public void onBlockAdded(World world, int x, int y, int z) { + public void onBlockAdded(final World world, final int x, final int y, final int z) { super.onBlockAdded(world, x, y, z); } @Override - public void breakBlock(World world, int x, int y, int z, Block block, int number) { - InventoryUtils.dropInventoryItems(world, x, y, z, block); - super.breakBlock(world, x, y, z, block, number); - } + public void breakBlock(final World world, final int x, final int y, final int z, final Block block, final int number) { + InventoryUtils.dropInventoryItems(world, x, y, z, block); + super.breakBlock(world, x, y, z, block, number); + } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { + public void onBlockPlacedBy(final World world, final int x, final int y, final int z, final EntityLivingBase entity, final ItemStack stack) { if (stack.hasDisplayName()) { - ((TileEntityFishTrap) world.getTileEntity(x,y,z)).setCustomName(stack.getDisplayName()); - } + ((TileEntityFishTrap) world.getTileEntity(x,y,z)).setCustomName(stack.getDisplayName()); } - + } + + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + /*@Override public void breakBlock(World world, BlockPos pos, IBlockState blockstate) { TileEntityFishTrap te = (TileEntityFishTrap) world.getTileEntity(pos); diff --git a/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java b/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java index 9a11c9dadc..1b4c5ebd01 100644 --- a/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java +++ b/src/Java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java @@ -12,9 +12,11 @@ import gtPlusPlus.core.util.Utils; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class Machine_ModularityTable extends BlockContainer @@ -67,9 +69,9 @@ public class Machine_ModularityTable extends BlockContainer } final TileEntity te = world.getTileEntity(x, y, z); if ((te != null) && (te instanceof TileEntityModularityTable)){ - player.openGui(GTplusplus.instance, 1, world, x, y, z); - Utils.LOG_INFO("Player opened GUI"); - return true; + player.openGui(GTplusplus.instance, 1, world, x, y, z); + Utils.LOG_INFO("Player opened GUI"); + return true; } return false; } @@ -79,4 +81,9 @@ public class Machine_ModularityTable extends BlockContainer return new TileEntityModularityTable(); } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/block/machine/Machine_ProjectTable.java b/src/Java/gtPlusPlus/core/block/machine/Machine_ProjectTable.java index 2c742b99db..939015adf7 100644 --- a/src/Java/gtPlusPlus/core/block/machine/Machine_ProjectTable.java +++ b/src/Java/gtPlusPlus/core/block/machine/Machine_ProjectTable.java @@ -10,7 +10,6 @@ import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.tileentities.machines.TileEntityProjectTable; -import gtPlusPlus.core.tileentities.machines.TileEntityWorkbench; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.player.PlayerUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; @@ -18,10 +17,12 @@ import ic2.core.item.tool.ItemToolWrench; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIO") @@ -151,4 +152,9 @@ public class Machine_ProjectTable extends BlockContainer return false; } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/block/machine/Machine_TradeTable.java b/src/Java/gtPlusPlus/core/block/machine/Machine_TradeTable.java index 540ba61837..724b438b13 100644 --- a/src/Java/gtPlusPlus/core/block/machine/Machine_TradeTable.java +++ b/src/Java/gtPlusPlus/core/block/machine/Machine_TradeTable.java @@ -1,22 +1,19 @@ package gtPlusPlus.core.block.machine; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.GTplusplus; import gtPlusPlus.core.block.base.BlockBaseNBT; -import gtPlusPlus.core.creative.AddToCreativeTab; -import gtPlusPlus.core.item.base.itemblock.ItemBlockNBT; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.tileentities.machines.TileEntityTradeTable; import gtPlusPlus.core.util.Utils; -import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class Machine_TradeTable extends BlockBaseNBT @@ -53,9 +50,9 @@ public class Machine_TradeTable extends BlockBaseNBT final TileEntity te = world.getTileEntity(x, y, z); if ((te != null) && (te instanceof TileEntityTradeTable)) { - //Utils.LOG_INFO("Clicked on TE - ok"); - player.openGui(GTplusplus.instance, 6, world, x, y, z); - return true; + //Utils.LOG_INFO("Clicked on TE - ok"); + player.openGui(GTplusplus.instance, 6, world, x, y, z); + return true; } else { Utils.LOG_INFO("Bad TE"); @@ -68,4 +65,9 @@ public class Machine_TradeTable extends BlockBaseNBT return new TileEntityTradeTable(); } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/block/machine/Machine_Workbench.java b/src/Java/gtPlusPlus/core/block/machine/Machine_Workbench.java index 64a5c5af8b..b5c54ad9a8 100644 --- a/src/Java/gtPlusPlus/core/block/machine/Machine_Workbench.java +++ b/src/Java/gtPlusPlus/core/block/machine/Machine_Workbench.java @@ -17,10 +17,12 @@ import ic2.core.item.tool.ItemToolWrench; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIO") @@ -150,4 +152,9 @@ public class Machine_Workbench extends BlockContainer return false; } + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index 851db25325..bd43da11fa 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -8,7 +8,12 @@ import gregtech.api.enums.Materials; import gregtech.api.util.GT_OreDictUnificator; import gtPlusPlus.core.common.compat.COMPAT_Baubles; import gtPlusPlus.core.creative.AddToCreativeTab; -import gtPlusPlus.core.item.base.*; +import gtPlusPlus.core.item.base.BaseEuItem; +import gtPlusPlus.core.item.base.BaseItemBackpack; +import gtPlusPlus.core.item.base.BaseItemBurnable; +import gtPlusPlus.core.item.base.BaseItemDamageable; +import gtPlusPlus.core.item.base.BaseItemTCShard; +import gtPlusPlus.core.item.base.CoreItem; import gtPlusPlus.core.item.base.dusts.decimal.BaseItemCentidust; import gtPlusPlus.core.item.base.dusts.decimal.BaseItemDecidust; import gtPlusPlus.core.item.base.foods.BaseItemFood; @@ -23,19 +28,36 @@ import gtPlusPlus.core.item.bauble.HealthBoostBauble; import gtPlusPlus.core.item.bauble.ModularBauble; import gtPlusPlus.core.item.chemistry.CoalTar; import gtPlusPlus.core.item.effects.RarityUncommon; -import gtPlusPlus.core.item.general.*; +import gtPlusPlus.core.item.general.BaseItemGrindle; +import gtPlusPlus.core.item.general.BufferCore; +import gtPlusPlus.core.item.general.ItemAirFilter; +import gtPlusPlus.core.item.general.ItemAreaClear; +import gtPlusPlus.core.item.general.ItemBasicFirestarter; +import gtPlusPlus.core.item.general.ItemBlueprint; +import gtPlusPlus.core.item.general.ItemEmpty; +import gtPlusPlus.core.item.general.ItemGemShards; +import gtPlusPlus.core.item.general.ItemHalfCompleteCasings; +import gtPlusPlus.core.item.general.ItemLavaFilter; +import gtPlusPlus.core.item.general.RF2EU_Battery; import gtPlusPlus.core.item.general.books.ItemBaseBook; -import gtPlusPlus.core.item.general.chassis.*; +import gtPlusPlus.core.item.general.chassis.itemBoilerChassis; +import gtPlusPlus.core.item.general.chassis.itemDehydratorCoil; +import gtPlusPlus.core.item.general.chassis.itemDehydratorCoilWire; import gtPlusPlus.core.item.general.throwables.ItemHydrofluoricAcidPotion; import gtPlusPlus.core.item.general.throwables.ItemSulfuricAcidPotion; import gtPlusPlus.core.item.init.ItemsFoods; import gtPlusPlus.core.item.init.ItemsMultiTools; import gtPlusPlus.core.item.tool.misc.SandstoneHammer; -import gtPlusPlus.core.item.tool.staballoy.*; +import gtPlusPlus.core.item.tool.staballoy.MultiPickaxeBase; +import gtPlusPlus.core.item.tool.staballoy.MultiSpadeBase; +import gtPlusPlus.core.item.tool.staballoy.StaballoyAxe; +import gtPlusPlus.core.item.tool.staballoy.StaballoyPickaxe; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.CORE.configSwitches; import gtPlusPlus.core.lib.LoadedMods; -import gtPlusPlus.core.material.*; +import gtPlusPlus.core.material.ALLOY; +import gtPlusPlus.core.material.ELEMENT; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.material.nuclear.FLUORIDES; import gtPlusPlus.core.material.nuclear.NUCLIDE; import gtPlusPlus.core.util.StringUtils; @@ -44,12 +66,15 @@ import gtPlusPlus.core.util.debug.DEBUG_INIT; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.materials.MaterialUtils; -import net.minecraft.block.Block; -import net.minecraft.item.*; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; public final class ModItems { @@ -240,7 +265,7 @@ public final class ModItems { public static Item itemModularBauble; public static Item itemCustomBook; - + public static Item itemGrindleTablet; public static final void init(){ @@ -309,7 +334,7 @@ public final class ModItems { itemHydrofluoricPotion = new ItemHydrofluoricAcidPotion("itemHydrofluoricPotion", "Thowable Vial of Hydrofluoric Acid", "They won't see this coming, nor anything after!").setTextureName(CORE.MODID + ":itemPotion"); //Start meta Item Generation ItemsFoods.load(); - + try{ @@ -590,6 +615,14 @@ public final class ModItems { //Create Multi-tools ItemsMultiTools.load(); + //Xp Fluids - Dev + if (!FluidRegistry.isFluidRegistered("mobessence")){ + FluidUtils.generateFluidNoPrefix("mobessence", "mobessence", 0, new short[]{125, 175, 125, 100}); + } + if (!FluidRegistry.isFluidRegistered("xpjuice")){ + FluidUtils.generateFluidNoPrefix("xpjuice", "xpjuice", 0, new short[]{50, 150, 50, 100}); + } + //Just an unusual plate needed for some black magic. itemPlateClay = new BaseItemPlate(MaterialUtils.generateMaterialFromGtENUM(Materials.Clay)); itemDoublePlateClay = new BaseItemPlateDouble(MaterialUtils.generateMaterialFromGtENUM(Materials.Clay)); @@ -605,10 +638,10 @@ public final class ModItems { } //A plate of Europium. - if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plateEuropium", 1) == null && CORE.configSwitches.enableCustom_Pipes){ + if ((ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plateEuropium", 1) == null) && CORE.configSwitches.enableCustom_Pipes){ itemPlateEuropium = new BaseItemPlate(MaterialUtils.generateMaterialFromGtENUM(Materials.Europium)); } - if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plateDoubleEuropium", 1) == null && CORE.configSwitches.enableCustom_Pipes){ + if ((ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plateDoubleEuropium", 1) == null) && CORE.configSwitches.enableCustom_Pipes){ itemDoublePlateEuropium = new BaseItemPlateDouble(MaterialUtils.generateMaterialFromGtENUM(Materials.Europium)); } @@ -618,7 +651,7 @@ public final class ModItems { itemAirFilter = new ItemAirFilter(); itemLavaFilter = new ItemLavaFilter(); - + itemGrindleTablet = new BaseItemGrindle(); //Chemistry @@ -662,7 +695,7 @@ public final class ModItems { itemPlatePulsatingIron = ItemUtils.generateSpecialUsePlate("itemPlate"+"PhasedIron", "Phased Iron", new short[]{50, 91, 21}, 0); itemPlateEnergeticAlloy = ItemUtils.generateSpecialUsePlate("itemPlate"+"EnergeticAlloy", "Energetic Alloy", new short[]{252, 152, 45}, 0); itemPlateVibrantAlloy = ItemUtils.generateSpecialUsePlate("itemPlate"+"VibrantAlloy", "Vibrant Alloy", new short[]{204, 242, 142}, 0); - itemPlateConductiveIron = ItemUtils.generateSpecialUsePlate("itemPlate"+"ConductiveIron", "Conductive Iron", new short[]{164, 109, 100}, 0); + itemPlateConductiveIron = ItemUtils.generateSpecialUsePlate("itemPlate"+"ConductiveIron", "Conductive Iron", new short[]{164, 109, 100}, 0); //Register dumb naming conventions - Who chose fucking phased Iron/Gold? GT_OreDictUnificator.registerOre("dustPhasedGold", ItemUtils.getSimpleStack(itemDustVibrantAlloy)); @@ -677,7 +710,7 @@ public final class ModItems { //Big Reactors if (LoadedMods.Big_Reactors|| LOAD_ALL_CONTENT){ Utils.LOG_INFO("BigReactors Found - Loading Resources."); - //Item Init + //Item Init itemPlateBlutonium = ItemUtils.generateSpecialUsePlate("itemPlate"+"Blutonium", "Blutonium", new short[]{0, 0, 255}, 0); itemPlateBlutonium = ItemUtils.generateSpecialUsePlate("itemPlate"+"Cyanite", "Cyanite", new short[]{0, 191, 255}, 0); itemPlateLudicrite = ItemUtils.generateSpecialUsePlate("itemPlate"+"Ludicrite", "Ludicrite", new short[]{167, 5, 179}, 0); @@ -692,7 +725,7 @@ public final class ModItems { //Item Init try { ItemUtils.getItemForOreDict("Thaumcraft:ItemResource", "ingotVoidMetal", "Void Metal Ingot", 16); - itemPlateVoidMetal = ItemUtils.generateSpecialUsePlate("itemPlate"+"Void", "Void", new short[]{82, 17, 82}, 0); + itemPlateVoidMetal = ItemUtils.generateSpecialUsePlate("itemPlate"+"Void", "Void", new short[]{82, 17, 82}, 0); GT_OreDictUnificator.registerOre("plateVoidMetal", new ItemStack(ModItems.itemPlateVoidMetal)); } catch (final NullPointerException e){ e.getClass(); @@ -742,7 +775,7 @@ public final class ModItems { if (LoadedMods.RFTools|| LOAD_ALL_CONTENT){ Utils.LOG_INFO("rfTools Found - Loading Resources."); //Item Init - itemPlateDimensionShard = ItemUtils.generateSpecialUsePlate("itemPlate"+"DimensionShard", "Dimensional Shard", new short[]{170, 230, 230}, 0); + itemPlateDimensionShard = ItemUtils.generateSpecialUsePlate("itemPlate"+"DimensionShard", "Dimensional Shard", new short[]{170, 230, 230}, 0); } else { Utils.LOG_WARNING("rfTools not Found - Skipping Resources."); @@ -810,7 +843,7 @@ public final class ModItems { //ItemBlockGtFrameBox = new ItemBlockGtFrameBox(ModBlocks.blockGtFrameSet1); //GameRegistry.registerItem(ItemBlockGtFrameBox, "itemGtFrameBoxSet1"); - + itemCustomBook = new ItemBaseBook(); } } diff --git a/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java b/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java index 83d274473c..87fb8ef76d 100644 --- a/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java +++ b/src/Java/gtPlusPlus/core/tileentities/ModTileEntities.java @@ -5,6 +5,7 @@ import gtPlusPlus.core.tileentities.general.TileEntityFirepit; import gtPlusPlus.core.tileentities.general.TileEntityFishTrap; import gtPlusPlus.core.tileentities.general.TileEntityHeliumGenerator; import gtPlusPlus.core.tileentities.general.TileEntityInfiniteFluid; +import gtPlusPlus.core.tileentities.general.TileEntityXpConverter; import gtPlusPlus.core.tileentities.machines.TileEntityModularityTable; import gtPlusPlus.core.tileentities.machines.TileEntityProjectTable; import gtPlusPlus.core.tileentities.machines.TileEntityTradeTable; @@ -18,14 +19,6 @@ public class ModTileEntities { public static void init() { Utils.LOG_INFO("Registering Tile Entities."); - // GameRegistry.registerTileEntity(TileEntityReverter.class, - // "TE_blockGriefSaver"); - // GameRegistry.registerTileEntity(TileEntityReverter.class, "Tower - // Reverter"); - // GameRegistry.registerTileEntity(TileEntityNHG.class, - // "NuclearFueledHeliumGenerator"); - // GameRegistry.registerTileEntity(TileEntityCharger.class, - // "TE_Charger"); GameRegistry.registerTileEntity(TileEntityHeliumGenerator.class, "HeliumGenerator"); GameRegistry.registerTileEntity(TileEntityWorkbench.class, "TileWorkbench"); GameRegistry.registerTileEntity(TileEntityWorkbenchAdvanced.class, "TileWorkbenchAdvanced"); @@ -37,6 +30,7 @@ public class ModTileEntities { GameRegistry.registerTileEntity(TileEntityModularityTable.class, "TileEntityModularityTable"); GameRegistry.registerTileEntity(TileFastAlchemyFurnace.class, "TileFastAlchemyFurnace"); GameRegistry.registerTileEntity(TileFastArcaneAlembic.class, "TileFastArcaneAlembic"); + GameRegistry.registerTileEntity(TileEntityXpConverter.class, "TileEntityXpConverter"); } diff --git a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java index ca190802dc..09fea921a5 100644 --- a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java +++ b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java @@ -1,6 +1,8 @@ package gtPlusPlus.core.tileentities.general; import gtPlusPlus.core.util.enchanting.EnchantingUtils; +import gtPlusPlus.core.util.player.PlayerUtils; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; @@ -91,6 +93,14 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { this.yCoord, this.zCoord, tank, 0)); } } + + if ((from == ForgeDirection.UP) || (from == ForgeDirection.DOWN)){ + this.tankEssence = tank; + } + else { + this.tankLiquidXp = tank; + } + return stack; } @@ -125,7 +135,7 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { @Override public void updateEntity() { - if (this.tankEssence.getFluid() != null){ + /*if (this.tankEssence.getFluid() != null){ final FluidStack bigStorage = this.tankEssence.getFluid(); bigStorage.amount = this.tankEssence.getCapacity(); this.tankEssence.setFluid(bigStorage); @@ -135,20 +145,19 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { final FluidStack bigStorage = this.tankLiquidXp.getFluid(); bigStorage.amount = this.tankLiquidXp.getCapacity(); this.tankLiquidXp.setFluid(bigStorage); - } + }*/ if (this.needsUpdate) { - if (this.tankEssence.getFluid() != null){ + /*if (this.tankEssence.getFluid() != null){ final FluidStack bigStorage = this.tankEssence.getFluid(); bigStorage.amount = this.tankEssence.getCapacity(); this.tankEssence.setFluid(bigStorage); - } + }*/ if (this.tankLiquidXp.getFluid() != null){ - final FluidStack bigStorage = this.tankLiquidXp.getFluid(); - bigStorage.amount = this.tankLiquidXp.getCapacity(); - this.tankLiquidXp.setFluid(bigStorage); + final FluidStack bigStorage = EnchantingUtils.getEssenceFromLiquidXp(this.tankLiquidXp.getFluidAmount()); + this.tankEssence.setFluid(bigStorage); } if (this.updateTimer == 0) { @@ -190,4 +199,12 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { this.readFromNBT(tag); } + public void onScrewdriverRightClick(final byte aSide, final EntityPlayer aPlayer, final float aX, final float aY, final float aZ) { + PlayerUtils.messagePlayer(aPlayer, "Screwdriver Rightclick."); + } + + public void onRightClick(final byte aSide, final EntityPlayer aPlayer, final int aX, final int aY, final int aZ) { + PlayerUtils.messagePlayer(aPlayer, "Rightclick."); + } + } diff --git a/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java b/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java index 543fd65b71..f1462ba51e 100644 --- a/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java +++ b/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java @@ -1,6 +1,9 @@ package gtPlusPlus.core.util.player; -import java.util.*; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.UUID; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -104,7 +107,7 @@ public class PlayerUtils { }catch(final NullPointerException e){ e.printStackTrace(); return null; - } + } if (heldItem != null){ return heldItem; } @@ -125,32 +128,32 @@ public class PlayerUtils { return null; } - - public static Item getItemInPlayersHand(EntityPlayer player){ + + public static Item getItemInPlayersHand(final EntityPlayer player){ Item heldItem = null; - try{heldItem = player.getHeldItem().getItem(); + try{ + heldItem = player.getHeldItem().getItem(); }catch(final NullPointerException e){return null;} if (heldItem != null){ return heldItem; } - return null; } - - public final static EntityPlayer getPlayerEntityByName(String aPlayerName){ - EntityPlayer player = PlayerUtils.getPlayer(aPlayerName); + + public final static EntityPlayer getPlayerEntityByName(final String aPlayerName){ + final EntityPlayer player = PlayerUtils.getPlayer(aPlayerName); if (player != null){ return player; - } + } return null; } - - public final static UUID getPlayersUUIDByName(String aPlayerName){ - EntityPlayer player = PlayerUtils.getPlayer(aPlayerName); + + public final static UUID getPlayersUUIDByName(final String aPlayerName){ + final EntityPlayer player = PlayerUtils.getPlayer(aPlayerName); if (player != null){ return player.getUniqueID(); - } + } return null; } -- cgit From 2b28b0849d64b320e42a478f83af6a29c4f28ac1 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Sun, 26 Nov 2017 17:54:25 +1000 Subject: $ Fixed Large Sifter, Tree Farm & Power Sub-Station not forming on SMP. $ Fixed issue where INFO_MACHINE_LOGGING would cause NPE's on SMP. - Removed logging from the Xp Converter. --- .../item/base/itemblock/ItemBlockEntityBase.java | 4 +- .../general/TileEntityXpConverter.java | 38 ++++++------- src/Java/gtPlusPlus/core/util/Utils.java | 65 ++++++++++++++-------- 3 files changed, 64 insertions(+), 43 deletions(-) (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java index 0dda165b6b..b13e6b22bc 100644 --- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java +++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockEntityBase.java @@ -28,8 +28,8 @@ public class ItemBlockEntityBase extends ItemBlock { @Override public final void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { if (Block.getBlockFromItem(stack.getItem()) instanceof BlockTankXpConverter){ - list.add(EnumChatFormatting.GRAY+"Liquid Xp can be filled or drained from all four sides."); - list.add(EnumChatFormatting.GRAY+"Mob Essence can be filled or drained from the top and bottom."); + list.add(EnumChatFormatting.GRAY+"Can convert Liquid Xp to Mob Essence and back."); + list.add(EnumChatFormatting.GRAY+"Right click with a Screwdriver to change mode."); } else if (Block.getBlockFromItem(stack.getItem()) instanceof BlockTankXpConverter){ //list.add(EnumChatFormatting.GRAY+"A pile of " + materialName + " dust."); diff --git a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java index 8491cf8f6e..98da5a40fc 100644 --- a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java +++ b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityXpConverter.java @@ -53,26 +53,26 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { @Override public int fill(final ForgeDirection from, final FluidStack resource, final boolean doFill) { this.needsUpdate = true; - Utils.LOG_INFO("Ticking. | mConvertToEssence: "+this.mConvertToEssence); + Utils.LOG_WARNING("Ticking. | mConvertToEssence: "+this.mConvertToEssence); if (this.mConvertToEssence){ if (resource.isFluidEqual(EnchantingUtils.getLiquidXP(1))){ - Utils.LOG_INFO("fill(tankLiquidXp)"); + Utils.LOG_WARNING("fill(tankLiquidXp)"); return this.tankLiquidXp.fill(resource, doFill); } else { - Utils.LOG_INFO("Looking for Liquid Xp, Instead found "+resource.getLocalizedName()+"."); + Utils.LOG_WARNING("Looking for Liquid Xp, Instead found "+resource.getLocalizedName()+"."); } } else { if (resource.isFluidEqual(EnchantingUtils.getMobEssence(1))){ - Utils.LOG_INFO("fill(tankEssence)"); + Utils.LOG_WARNING("fill(tankEssence)"); return this.tankEssence.fill(resource, doFill); } else { - Utils.LOG_INFO("Looking for Essence, Instead found "+resource.getLocalizedName()+"."); + Utils.LOG_WARNING("Looking for Essence, Instead found "+resource.getLocalizedName()+"."); } } - Utils.LOG_INFO("fill(0)"); + Utils.LOG_WARNING("fill(0)"); return 0; } @@ -81,24 +81,24 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { this.needsUpdate = true; if (this.mConvertToEssence){ if (resource.isFluidEqual(EnchantingUtils.getMobEssence(1))){ - Utils.LOG_INFO("drain(mConvertToEssence)"); + Utils.LOG_WARNING("drain(mConvertToEssence)"); return this.tankEssence.drain(resource.amount, doDrain); } } else { if (resource.isFluidEqual(EnchantingUtils.getLiquidXP(1))){ - Utils.LOG_INFO("drain(tankLiquidXp)"); + Utils.LOG_WARNING("drain(tankLiquidXp)"); return this.tankLiquidXp.drain(resource.amount, doDrain); } } - Utils.LOG_INFO("drain(null)"); + Utils.LOG_WARNING("drain(null)"); return null; } @Override public FluidStack drain(final ForgeDirection from, final int maxDrain, final boolean doDrain) { this.needsUpdate = true; - Utils.LOG_INFO("drain(Ex)"); + Utils.LOG_WARNING("drain(Ex)"); final FluidStack fluid_Essence = this.tankEssence.getFluid(); final FluidStack fluid_Xp = this.tankLiquidXp.getFluid(); if ((fluid_Essence == null) && (fluid_Xp == null)) { @@ -143,7 +143,7 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { this.tankLiquidXp = tank; } - Utils.LOG_INFO("drain(Ex2)"); + Utils.LOG_WARNING("drain(Ex2)"); return stack; } @@ -151,17 +151,17 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { public boolean canFill(final ForgeDirection from, final Fluid fluid) { if (this.mConvertToEssence){ if (this.tankEssence.getFluidAmount() < this.tankEssence.getCapacity()){ - Utils.LOG_INFO("canFill(mConvertToEssence)"); + Utils.LOG_WARNING("canFill(mConvertToEssence)"); return true; } } else { if (this.tankLiquidXp.getFluidAmount() < this.tankLiquidXp.getCapacity()){ - Utils.LOG_INFO("canFill(tankLiquidXp)"); + Utils.LOG_WARNING("canFill(tankLiquidXp)"); return true; } } - Utils.LOG_INFO("canFill(false)"); + Utils.LOG_WARNING("canFill(false)"); return false; } @@ -177,7 +177,7 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { return true; } } - Utils.LOG_INFO("canDrain(false)"); + Utils.LOG_WARNING("canDrain(false)"); return false; } @@ -192,7 +192,7 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { } public float getAdjustedVolume() { - Utils.LOG_INFO("AdjustedVolume()"); + Utils.LOG_WARNING("AdjustedVolume()"); this.needsUpdate = true; final float amount = this.tankLiquidXp.getFluidAmount(); final float capacity = this.tankLiquidXp.getCapacity(); @@ -205,7 +205,7 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { if (this.isServerSide()){ - //Utils.LOG_INFO("Ticking. | mConvertToEssence: "+this.mConvertToEssence); + //Utils.LOG_WARNING("Ticking. | mConvertToEssence: "+this.mConvertToEssence); if (this.needsUpdate) { @@ -227,7 +227,7 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { this.tankEssence.fill(bigStorage, true); this.tankLiquidXp.drain(100, true); this.needsUpdate = true; - Utils.LOG_INFO("B->A"); + Utils.LOG_WARNING("B->A"); } } else { @@ -237,7 +237,7 @@ public class TileEntityXpConverter extends TileEntity implements IFluidHandler { this.tankLiquidXp.fill(bigStorage, true); this.tankEssence.drain((int) rm, true); this.needsUpdate = true; - Utils.LOG_INFO("A->B"); + Utils.LOG_WARNING("A->B"); } } } diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java index f9315a2966..979c1f0287 100644 --- a/src/Java/gtPlusPlus/core/util/Utils.java +++ b/src/Java/gtPlusPlus/core/util/Utils.java @@ -1,12 +1,16 @@ package gtPlusPlus.core.util; -import static gtPlusPlus.core.handler.BookHandler.mBookKeeperCount; - import java.awt.Color; import java.awt.Graphics; import java.io.File; import java.lang.reflect.Method; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; import org.apache.commons.lang3.EnumUtils; import org.apache.logging.log4j.LogManager; @@ -15,7 +19,6 @@ import org.apache.logging.log4j.Logger; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.relauncher.FMLRelaunchLog; -import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.enums.TC_Aspects; import gregtech.api.enums.TC_Aspects.TC_AspectStack; @@ -23,7 +26,6 @@ import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Utility; import gtPlusPlus.GTplusplus; -import gtPlusPlus.core.handler.BookHandler; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; @@ -38,7 +40,6 @@ import ic2.core.item.resources.ItemCell; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; -import net.minecraft.init.Items; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -49,7 +50,9 @@ import net.minecraft.util.ChatComponentText; import net.minecraft.util.IChatComponent; import net.minecraft.world.World; import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; public class Utils { @@ -183,8 +186,21 @@ public class Utils { // Non-Dev Comments public static void LOG_MACHINE_INFO(final String s) { - if (CORE.configSwitches.MACHINE_INFO || ClientProxy.playerName.toLowerCase().contains("draknyte1")) { - String name1 = gtPlusPlus.core.util.reflect.ReflectionUtils.getMethodName(2); + + boolean localPlayer = false; + try { + if (ClientProxy.playerName != null){ + if (ClientProxy.playerName.toLowerCase().contains("draknyte1")){ + localPlayer = true; + } + } + } + catch (final Throwable t){ + + } + + if (CORE.configSwitches.MACHINE_INFO || localPlayer) { + final String name1 = gtPlusPlus.core.util.reflect.ReflectionUtils.getMethodName(2); modLogger.info("Machine Info: " + s + " | " + name1); } } @@ -504,7 +520,7 @@ public class Utils { } public static File getMcDir() { - if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDedicatedServer()) { + if ((MinecraftServer.getServer() != null) && MinecraftServer.getServer().isDedicatedServer()) { return new File("."); } return Minecraft.getMinecraft().mcDataDir; @@ -604,7 +620,7 @@ public class Utils { } - public static int calculateVoltageTier(int Voltage) { + public static int calculateVoltageTier(final int Voltage) { int V; if (Voltage == 8) { V = 0; @@ -732,34 +748,39 @@ public class Utils { return sBookCount; } - public static ItemStack getWrittenBook(ItemStack aBook, int aID, String aMapping, String aTitle, String aAuthor, - String[] aPages) { - if (GT_Utility.isStringInvalid(aMapping)) + public static ItemStack getWrittenBook(final ItemStack aBook, final int aID, final String aMapping, final String aTitle, final String aAuthor, + final String[] aPages) { + if (GT_Utility.isStringInvalid(aMapping)) { return null; - ItemStack rStack = (ItemStack) CORE.sBookList.get(aMapping); - if (rStack != null) + } + ItemStack rStack = CORE.sBookList.get(aMapping); + if (rStack != null) { return GT_Utility.copyAmount(1L, new Object[] { rStack }); - if ((GT_Utility.isStringInvalid(aTitle)) || (GT_Utility.isStringInvalid(aAuthor)) || (aPages.length <= 0)) + } + if ((GT_Utility.isStringInvalid(aTitle)) || (GT_Utility.isStringInvalid(aAuthor)) || (aPages.length <= 0)) { return null; + } sBookCount += 1; - int vMeta = (aID == -1 ? sBookCount : aID); + final int vMeta = (aID == -1 ? sBookCount : aID); rStack = (aBook == null ? new ItemStack(ModItems.itemCustomBook, 1, vMeta) : aBook); - NBTTagCompound tNBT = new NBTTagCompound(); + final NBTTagCompound tNBT = new NBTTagCompound(); tNBT.setString("title", GT_LanguageManager.addStringLocalization( new StringBuilder().append("Book.").append(aTitle).append(".Name").toString(), aTitle)); tNBT.setString("author", aAuthor); - NBTTagList tNBTList = new NBTTagList(); + final NBTTagList tNBTList = new NBTTagList(); for (byte i = 0; i < aPages.length; i = (byte) (i + 1)) { aPages[i] = GT_LanguageManager .addStringLocalization(new StringBuilder().append("Book.").append(aTitle).append(".Page") .append((i < 10) ? new StringBuilder().append("0").append(i).toString() : Byte.valueOf(i)) .toString(), aPages[i]); if (i < 48) { - if (aPages[i].length() < 256) + if (aPages[i].length() < 256) { tNBTList.appendTag(new NBTTagString(aPages[i])); - else + } + else { GT_Log.err.println(new StringBuilder().append("WARNING: String for written Book too long! -> ") .append(aPages[i]).toString()); + } } else { GT_Log.err.println(new StringBuilder().append("WARNING: Too much Pages for written Book! -> ") .append(aTitle).toString()); -- cgit From 9e4dcc750d9aa3c37d278aec7404a9ded134f0b6 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Sun, 26 Nov 2017 20:55:02 +1000 Subject: + Added Xp Converter crafting recipe. + Added compressed obsidian. + Added inverted obsidian. + Added crafting & uncrafting recipes for the compressed & inverted obsidian. % Formatting. --- src/Java/gtPlusPlus/core/block/ModBlocks.java | 3 + .../block/general/BlockCompressedObsidian.java | 90 +++++++++++++++ .../core/block/general/BlockTankXpConverter.java | 122 +++++++++++---------- .../core/item/base/itemblock/ItemBlockMeta.java | 44 ++++++++ .../gtPlusPlus/core/recipe/RECIPES_General.java | 43 +++++++- src/Java/gtPlusPlus/core/util/item/ItemUtils.java | 9 +- src/resources/assets/miscutils/lang/en_US.lang | 92 +++++----------- .../assets/miscutils/textures/blocks/SwirlGray.png | Bin 0 -> 270 bytes .../textures/blocks/compressed/obsidian1.png | Bin 0 -> 656 bytes .../textures/blocks/compressed/obsidian2.png | Bin 0 -> 757 bytes .../textures/blocks/compressed/obsidian3.png | Bin 0 -> 856 bytes .../textures/blocks/compressed/obsidian4.png | Bin 0 -> 1022 bytes .../textures/blocks/compressed/obsidian5.png | Bin 0 -> 1245 bytes .../textures/blocks/compressed/obsidian_invert.png | Bin 0 -> 770 bytes 14 files changed, 280 insertions(+), 123 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java create mode 100644 src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java create mode 100644 src/resources/assets/miscutils/textures/blocks/SwirlGray.png create mode 100644 src/resources/assets/miscutils/textures/blocks/compressed/obsidian1.png create mode 100644 src/resources/assets/miscutils/textures/blocks/compressed/obsidian2.png create mode 100644 src/resources/assets/miscutils/textures/blocks/compressed/obsidian3.png create mode 100644 src/resources/assets/miscutils/textures/blocks/compressed/obsidian4.png create mode 100644 src/resources/assets/miscutils/textures/blocks/compressed/obsidian5.png create mode 100644 src/resources/assets/miscutils/textures/blocks/compressed/obsidian_invert.png (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java index 992cd7e991..770494c9f0 100644 --- a/src/Java/gtPlusPlus/core/block/ModBlocks.java +++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java @@ -3,6 +3,7 @@ package gtPlusPlus.core.block; import cpw.mods.fml.common.registry.GameRegistry; import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; import gtPlusPlus.core.block.base.BlockBaseOre; +import gtPlusPlus.core.block.general.BlockCompressedObsidian; import gtPlusPlus.core.block.general.BlockTankXpConverter; import gtPlusPlus.core.block.general.FirePit; import gtPlusPlus.core.block.general.FluidTankInfinite; @@ -60,6 +61,7 @@ public final class ModBlocks { public static Block blockWitherGuard; public static Block blockXpConverter; + public static Block blockCompressedObsidian; public static void init() { Utils.LOG_INFO("Initializing Blocks."); @@ -91,6 +93,7 @@ public final class ModBlocks { blockModularTable = new Machine_ModularityTable(); blockWitherGuard = new BlockWitherProof(); blockXpConverter = new BlockTankXpConverter(); + blockCompressedObsidian = new BlockCompressedObsidian(); } diff --git a/src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java b/src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java new file mode 100644 index 0000000000..48ee7709ec --- /dev/null +++ b/src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java @@ -0,0 +1,90 @@ +package gtPlusPlus.core.block.general; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.item.base.itemblock.ItemBlockMeta; +import gtPlusPlus.core.lib.CORE; +import net.minecraft.block.BlockObsidian; +import net.minecraft.block.material.MapColor; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BlockCompressedObsidian extends BlockObsidian { + + @SideOnly(Side.CLIENT) + private final IIcon textureArray[] = new IIcon[6]; + + public BlockCompressedObsidian() { + this.setBlockName("blockCompressedObsidian"); + this.setCreativeTab(AddToCreativeTab.tabMachines); + GameRegistry.registerBlock(this, ItemBlockMeta.class, "blockCompressedObsidian"); + } + + @Override + public MapColor getMapColor(final int meta) { + if (meta != 5) { + return MapColor.obsidianColor; + } + else { + return MapColor.sandColor; + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(final IIconRegister iicon) { + this.textureArray[0] = iicon.registerIcon(CORE.MODID + ":" + "compressed/" + "obsidian1"); + this.textureArray[1] = iicon.registerIcon(CORE.MODID + ":" + "compressed/" + "obsidian2"); + this.textureArray[2] = iicon.registerIcon(CORE.MODID + ":" + "compressed/" + "obsidian3"); + this.textureArray[3] = iicon.registerIcon(CORE.MODID + ":" + "compressed/" + "obsidian4"); + this.textureArray[4] = iicon.registerIcon(CORE.MODID + ":" + "compressed/" + "obsidian5"); + this.textureArray[5] = iicon.registerIcon(CORE.MODID + ":" + "compressed/" + "obsidian_invert"); + } + + /** + * Gets the block's texture. Args: side, meta + */ + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(final int side, final int meta) { + return this.textureArray[meta]; + } + + @Override + public int damageDropped(final int damage) { + return damage; + } + + @Override + public void getSubBlocks(final Item item, final CreativeTabs tab, final List list) { + for (int i = 0; i < 6; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public Item getItemDropped(final int meta, final Random rand, final int fortune) { + return Item.getItemFromBlock(this); + } + + @Override + public ArrayList getDrops(final World world, final int x, final int y, final int z, final int metadata, + final int fortune) { + int m = metadata; + if (m == 5) { + m = 1; + } + return super.getDrops(world, x, y, z, m, fortune); + } + +} diff --git a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java index c2afdfd21f..7e1ab75b84 100644 --- a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java +++ b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java @@ -50,7 +50,7 @@ public class BlockTankXpConverter extends BlockContainer { GameRegistry.registerBlock(this, ItemBlockEntityBase.class, "blockTankXpConverter"); LanguageRegistry.addName(this, "Xp Converter"); this.generateRainbowMap(); - if (!this.getTickRandomly()){ + if (!this.getTickRandomly()) { this.setTickRandomly(true); } } @@ -86,44 +86,48 @@ public class BlockTankXpConverter extends BlockContainer { } else { boolean mDidScrewDriver = false; - //Check For Screwdriver + // Check For Screwdriver try { final ItemStack mHandStack = PlayerUtils.getItemStackInPlayersHand(world, player.getDisplayName()); final Item mHandItem = mHandStack.getItem(); - if (((mHandItem instanceof GT_MetaGenerated_Tool_01) && ((mHandItem.getDamage(mHandStack) == 22) || (mHandItem.getDamage(mHandStack) == 150)))){ + if (((mHandItem instanceof GT_MetaGenerated_Tool_01) + && ((mHandItem.getDamage(mHandStack) == 22) || (mHandItem.getDamage(mHandStack) == 150)))) { final TileEntityXpConverter tile = (TileEntityXpConverter) world.getTileEntity(x, y, z); - if (tile != null){ + if (tile != null) { mDidScrewDriver = true; tile.onScrewdriverRightClick((byte) side, player, x, y, z); } } } - catch (final Throwable t){ + catch (final Throwable t) { mDidScrewDriver = false; } - if (!mDidScrewDriver){ - + if (!mDidScrewDriver) { try { final TileEntityXpConverter tile = (TileEntityXpConverter) world.getTileEntity(x, y, z); - if (tile != null){ + if (tile != null) { tile.onRightClick((byte) side, player, x, y, z); } } - catch (final Throwable t){} + catch (final Throwable t) { + } final TileEntityXpConverter tank = (TileEntityXpConverter) world.getTileEntity(x, y, z); - if (tank != null){ - if (tank.tankEssence.getFluid() != null){ - PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankEssence.getFluidAmount()+"L of "+tank.tankEssence.getFluid().getLocalizedName()); + if (tank != null) { + if (tank.tankEssence.getFluid() != null) { + PlayerUtils.messagePlayer(player, "This tank contains " + tank.tankEssence.getFluidAmount() + + "L of " + tank.tankEssence.getFluid().getLocalizedName()); } - if (tank.tankLiquidXp.getFluid() != null){ - PlayerUtils.messagePlayer(player, "This tank contains "+tank.tankLiquidXp.getFluidAmount()+"L of "+tank.tankLiquidXp.getFluid().getLocalizedName()); + if (tank.tankLiquidXp.getFluid() != null) { + PlayerUtils.messagePlayer(player, "This tank contains " + tank.tankLiquidXp.getFluidAmount() + + "L of " + tank.tankLiquidXp.getFluid().getLocalizedName()); } - if ((tank.tankEssence.getFluid() != null) && (tank.tankLiquidXp.getFluid() != null)){ - PlayerUtils.messagePlayer(player, "This is worth "+EnchantingUtils.getLevelForLiquid(tank.tankLiquidXp.getFluidAmount())+" levels."); + if ((tank.tankEssence.getFluid() != null) && (tank.tankLiquidXp.getFluid() != null)) { + PlayerUtils.messagePlayer(player, "This is worth " + + EnchantingUtils.getLevelForLiquid(tank.tankLiquidXp.getFluidAmount()) + " levels."); } } } @@ -152,42 +156,43 @@ public class BlockTankXpConverter extends BlockContainer { } @Override - public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, + final int z) { return false; } - private final boolean generateRainbowMap(){ + private final boolean generateRainbowMap() { int id = 0; - this.mRainbowMap.put(id++, new Triplet( 0, 255, 0)); - this.mRainbowMap.put(id++, new Triplet( 51, 255, 0)); - this.mRainbowMap.put(id++, new Triplet(102, 255, 0)); - this.mRainbowMap.put(id++, new Triplet(153, 255, 0)); - this.mRainbowMap.put(id++, new Triplet(204, 255, 0)); - this.mRainbowMap.put(id++, new Triplet(255, 255, 0)); - this.mRainbowMap.put(id++, new Triplet(255, 204, 0)); - this.mRainbowMap.put(id++, new Triplet(255, 153, 0)); - this.mRainbowMap.put(id++, new Triplet(255, 102, 0)); - this.mRainbowMap.put(id++, new Triplet(255, 51, 0)); - this.mRainbowMap.put(id++, new Triplet(255, 0, 0)); - this.mRainbowMap.put(id++, new Triplet(255, 0, 51)); - this.mRainbowMap.put(id++, new Triplet(255, 0, 102)); - this.mRainbowMap.put(id++, new Triplet(255, 0, 153)); - this.mRainbowMap.put(id++, new Triplet(255, 0, 204)); - this.mRainbowMap.put(id++, new Triplet(255, 0, 255)); - this.mRainbowMap.put(id++, new Triplet(204, 0, 255)); - this.mRainbowMap.put(id++, new Triplet(153, 0, 255)); - this.mRainbowMap.put(id++, new Triplet(102, 0, 255)); - this.mRainbowMap.put(id++, new Triplet( 51, 0, 255)); - this.mRainbowMap.put(id++, new Triplet( 0, 0, 255)); - this.mRainbowMap.put(id++, new Triplet( 0, 51, 255)); - this.mRainbowMap.put(id++, new Triplet( 0, 102, 255)); - this.mRainbowMap.put(id++, new Triplet( 0, 153, 255)); - this.mRainbowMap.put(id++, new Triplet( 0, 204, 255)); - this.mRainbowMap.put(id++, new Triplet( 0, 255, 255)); - this.mRainbowMap.put(id++, new Triplet( 0, 255, 204)); - this.mRainbowMap.put(id++, new Triplet( 0, 255, 153)); - this.mRainbowMap.put(id++, new Triplet( 0, 255, 102)); - this.mRainbowMap.put(id++, new Triplet( 0, 255, 51)); + this.mRainbowMap.put(id++, new Triplet(0, 255, 0)); + this.mRainbowMap.put(id++, new Triplet(51, 255, 0)); + this.mRainbowMap.put(id++, new Triplet(102, 255, 0)); + this.mRainbowMap.put(id++, new Triplet(153, 255, 0)); + this.mRainbowMap.put(id++, new Triplet(204, 255, 0)); + this.mRainbowMap.put(id++, new Triplet(255, 255, 0)); + this.mRainbowMap.put(id++, new Triplet(255, 204, 0)); + this.mRainbowMap.put(id++, new Triplet(255, 153, 0)); + this.mRainbowMap.put(id++, new Triplet(255, 102, 0)); + this.mRainbowMap.put(id++, new Triplet(255, 51, 0)); + this.mRainbowMap.put(id++, new Triplet(255, 0, 0)); + this.mRainbowMap.put(id++, new Triplet(255, 0, 51)); + this.mRainbowMap.put(id++, new Triplet(255, 0, 102)); + this.mRainbowMap.put(id++, new Triplet(255, 0, 153)); + this.mRainbowMap.put(id++, new Triplet(255, 0, 204)); + this.mRainbowMap.put(id++, new Triplet(255, 0, 255)); + this.mRainbowMap.put(id++, new Triplet(204, 0, 255)); + this.mRainbowMap.put(id++, new Triplet(153, 0, 255)); + this.mRainbowMap.put(id++, new Triplet(102, 0, 255)); + this.mRainbowMap.put(id++, new Triplet(51, 0, 255)); + this.mRainbowMap.put(id++, new Triplet(0, 0, 255)); + this.mRainbowMap.put(id++, new Triplet(0, 51, 255)); + this.mRainbowMap.put(id++, new Triplet(0, 102, 255)); + this.mRainbowMap.put(id++, new Triplet(0, 153, 255)); + this.mRainbowMap.put(id++, new Triplet(0, 204, 255)); + this.mRainbowMap.put(id++, new Triplet(0, 255, 255)); + this.mRainbowMap.put(id++, new Triplet(0, 255, 204)); + this.mRainbowMap.put(id++, new Triplet(0, 255, 153)); + this.mRainbowMap.put(id++, new Triplet(0, 255, 102)); + this.mRainbowMap.put(id++, new Triplet(0, 255, 51)); this.mRainbowTickMax = this.mRainbowMap.size(); return true; } @@ -198,21 +203,24 @@ public class BlockTankXpConverter extends BlockContainer { } @Override - public int colorMultiplier(final IBlockAccess p_149720_1_, final int p_149720_2_, final int p_149720_3_, final int p_149720_4_) { + public int colorMultiplier(final IBlockAccess p_149720_1_, final int p_149720_2_, final int p_149720_3_, + final int p_149720_4_) { - if ((this.mRainbowTick < 0) || (this.mRainbowTick > this.mRainbowTickMax)){ + if ((this.mRainbowTick < 0) || (this.mRainbowTick > this.mRainbowTickMax)) { this.mRainbowTick = 0; } - //Utils.LOG_INFO("x: "+this.mRainbowTick); - if (this.mRainbowTick <= this.mRainbowTickMax){ + // Utils.LOG_INFO("x: "+this.mRainbowTick); + if (this.mRainbowTick <= this.mRainbowTickMax) { Triplet mT = this.mRainbowMap.get(this.mRainbowTick); try { return Utils.rgbtoHexValue(mT.getValue_1(), mT.getValue_1(), mT.getValue_1()); - } catch (final Throwable t){ + } + catch (final Throwable t) { try { - mT = this.mRainbowMap.get(this.mRainbowTick-1); + mT = this.mRainbowMap.get(this.mRainbowTick - 1); return Utils.rgbtoHexValue(mT.getValue_1(), mT.getValue_1(), mT.getValue_1()); - } catch (final Throwable t1){ + } + catch (final Throwable t1) { return Utils.rgbtoHexValue(0, 0, 0); } } @@ -223,12 +231,12 @@ public class BlockTankXpConverter extends BlockContainer { @Override public void updateTick(final World world, final int x, final int y, final int z, final Random rand) { - //this.mRainbowTick++; + // this.mRainbowTick++; super.updateTick(world, x, y, z, rand); } @Override - public void randomDisplayTick(final World world, final int x, final int y, final int z, final Random rand) { + public void randomDisplayTick(final World world, final int x, final int y, final int z, final Random rand) { this.mRainbowTick++; super.randomDisplayTick(world, x, y, z, rand); } diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java new file mode 100644 index 0000000000..9cf3f796df --- /dev/null +++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java @@ -0,0 +1,44 @@ +package gtPlusPlus.core.item.base.itemblock; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlockWithMetadata; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class ItemBlockMeta extends ItemBlockWithMetadata +{ + private final Block mBlock; + + public ItemBlockMeta(final Block p_i45326_1_) + { + super(p_i45326_1_, p_i45326_1_); + this.mBlock = p_i45326_1_; + this.setMaxDamage(0); + this.setHasSubtypes(true); + } + + /** + * Gets an icon index based on an item's damage value + */ + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(final int p_77617_1_) + { + return this.mBlock.getIcon(2, p_77617_1_); + } + + /** + * Returns the metadata of the block which this Item (ItemBlock) can place + */ + @Override + public int getMetadata(final int p_77647_1_) + { + return p_77647_1_; + } + + @Override + public String getUnlocalizedName(final ItemStack stack) { + return this.getUnlocalizedName() + "." + stack.getItemDamage(); + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java index f5f793da77..973a653302 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java @@ -1,5 +1,7 @@ package gtPlusPlus.core.recipe; +import static gtPlusPlus.core.util.item.ItemUtils.getSimpleStack; + import cpw.mods.fml.common.registry.GameRegistry; import gregtech.api.enums.ItemList; import gregtech.api.util.GT_ModHandler; @@ -35,6 +37,7 @@ public class RECIPES_General { if (LoadedMods.Gregtech){ RECIPE_BasicCasingIC2 = ItemUtils.getItemStack("IC2:blockMachine", 1); run(); + addCompressedObsidian(); } } @@ -133,10 +136,16 @@ public class RECIPES_General { RecipeUtils.addShapedGregtechRecipe( "stickBlackSteel", "plateTungstenSteel", "stickBlackSteel", - "plateTungstenSteel", ItemUtils.getSimpleStack(Items.nether_star), "plateTungstenSteel", + "plateTungstenSteel", getSimpleStack(Items.nether_star), "plateTungstenSteel", "stickBlackSteel", "plateTungstenSteel", "stickBlackSteel", ItemUtils.getSimpleStack(ModBlocks.blockWitherGuard, 32)); + RecipeUtils.addShapedGregtechRecipe( + getSimpleStack(Items.experience_bottle), ItemUtils.simpleMetaStack(ModBlocks.blockCompressedObsidian, 2, 1), getSimpleStack(Items.experience_bottle), + ItemUtils.simpleMetaStack(ModBlocks.blockCompressedObsidian, 5, 1), getSimpleStack(Items.nether_star), ItemUtils.simpleMetaStack(ModBlocks.blockCompressedObsidian, 5, 1), + getSimpleStack(Items.experience_bottle), ItemUtils.simpleMetaStack(ModBlocks.blockCompressedObsidian, 2, 1), getSimpleStack(Items.experience_bottle), + ItemUtils.getSimpleStack(ModBlocks.blockXpConverter, 1)); + //Alkalus Coin /*AddGregtechRecipe.addAssemblylineRecipe( ItemUtils.getSimpleStack(ModItems.itemAlkalusDisk), @@ -161,6 +170,38 @@ public class RECIPES_General { } + private static boolean addCompressedObsidian(){ + //Invert Obsidian + RecipeUtils.addShapedGregtechRecipe( + getSimpleStack(Items.redstone), getSimpleStack(Items.glowstone_dust), getSimpleStack(Items.redstone), + getSimpleStack(Items.glowstone_dust), ItemUtils.simpleMetaStack(ModBlocks.blockCompressedObsidian, 1, 1), getSimpleStack(Items.glowstone_dust), + getSimpleStack(Items.redstone), getSimpleStack(Items.glowstone_dust), getSimpleStack(Items.redstone), + ItemUtils.simpleMetaStack(ModBlocks.blockCompressedObsidian, 5, 1)); + + final ItemStack[] mItems = new ItemStack[6]; + mItems[0] = ItemUtils.getSimpleStack(Blocks.obsidian); + for (int r=0;r<5;r++){ + mItems[r+1] = ItemUtils.simpleMetaStack(ModBlocks.blockCompressedObsidian, r, 1); + } + + //Compressed Obsidian 1-5 + for (int r=0;r<5;r++){ + + final ItemStack input = mItems[r]; + final ItemStack output = mItems[r+1]; + + RecipeUtils.addShapedGregtechRecipe( + input, input, input, + input, input, input, + input, input, input, + output); + + RecipeUtils.addShapelessGregtechRecipe(new ItemStack[]{output}, ItemUtils.getSimpleStack(input, 9)); + + } + return true; + } + } diff --git a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java index 3680dfb59d..fb20c87bac 100644 --- a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java +++ b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java @@ -163,7 +163,7 @@ public class ItemUtils { } @SuppressWarnings("unused") - public static ItemStack simpleMetaStack(final Item item, final int meta, final int itemstackSize){ + public static ItemStack simpleMetaStack(final Item item, final int meta, final int size){ try { if (item == null){ return null; @@ -176,7 +176,7 @@ public class ItemUtils { em = em1; } if (em != null){ - final ItemStack metaStack = new ItemStack(em,itemstackSize,meta); + final ItemStack metaStack = new ItemStack(em,size,meta); return metaStack; } } @@ -187,6 +187,10 @@ public class ItemUtils { } } + public static ItemStack simpleMetaStack(final Block block, final int meta, final int size) { + return simpleMetaStack(Item.getItemFromBlock(block), meta, size); + } + public static ItemStack getCorrectStacktype(final String fqrn, final int stackSize){ final String oreDict = "ore:"; ItemStack temp; @@ -634,4 +638,5 @@ public class ItemUtils { return getItemStackOfAmountFromOreDictNoBroken(oredictName, amount); } + } diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang index c2d177de48..d81815e0d3 100644 --- a/src/resources/assets/miscutils/lang/en_US.lang +++ b/src/resources/assets/miscutils/lang/en_US.lang @@ -1,3 +1,4 @@ +//Creative Tabs itemGroup.MiscUtilBlockTab=[GT++] Blocks itemGroup.MiscUtilMiscTab=[GT++] Items itemGroup.MiscUtilCombatTab=[GT++] Combat @@ -5,77 +6,33 @@ itemGroup.MiscUtilToolsTab=[GT++] Tools itemGroup.MiscUtilMachineTab=[GT++] Machines itemGroup.MiscUtilOtherTab=[GT++] Items II -item.itemPLACEHOLDER_Circuit.name=Quark Manipulator (UV) - -item.itemPlateEnrichedSoularium.name=Enriched Soularium Plate - -item.itemHeliumBlob.name=Mysterious Hydrogen Substance +//Debug +item.AAA_Broken.name=[Non-existent Item] Report This Recipe On Github, Please. +item.itemBedLocator_Base.name=Bed Locator [NBT Test] +item.itemBaseItemWithCharge.name=Base Chargeable Item +item.miscutils_itemDebugShapeSpawner.name=[Debug] Shapes +//Alternative Materials item.itemPlateBatteryAlloy.name=Plate of Battery Alloy item.itemIngotBatteryAlloy.name=Ingot of Battery Alloy - item.itemStickyRubber.name=Gumlet of Sticky Rubber +//Unused Fuel rods item.itemFuelRod_Empty.name=Empty Fuel Rod item.itemFuelRod_Thorium.name=Thorium Fuel Rod item.itemFuelRod_Uranium.name=Uranium Fuel Rod item.itemFuelRod_Plutonium.name=Plutonium Fuel Rod - -item.itemBedLocator_Base.name=Bed Locator [NBT Test] -item.itemBaseItemWithCharge.name=Base Chargeable Item - -item.miscutils_itemDebugShapeSpawner.name=[Debug] Shapes - -tile.fluidJackDaniels.name=Jack Daniels -tile.blockGriefSaver.name=Anti-Griefer [WIP] -tile.helium_collector.name=Helium Collector -tile.blockNuclearFueledHeliumGenerator.name=Nuclear Fueled Helium Generator [NFHG] -tile.blockMachineCharger.name=Charging Machine -container.Charger=Charging Machine -container.NHG=Nuclear Fueled Helium Generator -container.helium_collector.name=Helium Collector -tile.blockStaballoy.name=Block of Staballoy -tile.blockBloodSteel.name=Block of Blood Steel - - +//Tile Entities tile.blockToolBuilder.name=GregTech Tool Constructor + +//Tools item.itemBufferCore.name=Buffer Core item.itemStaballoyPickaxe.name=Tunnel Digger item.itemStaballoyAxe.name=Tree Feller item.itemSandstoneHammer.name=Cobblestone Breaker - -item.bucket.fluid.grc.jackDanielsWhiskey0.name=Jack Daniels (0) -item.bucket.fluid.grc.jackDanielsWhiskey1.name=Jack Daniels (1) -item.bucket.fluid.grc.jackDanielsWhiskey2.name=Jack Daniels (2) -item.bucket.fluid.grc.jackDanielsWhiskey3.name=Jack Daniels (3) -item.bucket.fluid.grc.jackDanielsWhiskey4.name=Jack Daniels (4) -fluid.grc.jackDanielsWhiskey=Jack Daniels -fluid.grc.jackDanielsWhiskey0=Jack Daniels (0) -fluid.grc.jackDanielsWhiskey1=Jack Daniels (1) -fluid.grc.jackDanielsWhiskey2=Jack Daniels (2) -fluid.grc.jackDanielsWhiskey3=Jack Daniels (3) -fluid.grc.jackDanielsWhiskey4=Jack Daniels (4) -fluid.fluidJackDaniels=Jack Daniels -fluid.grc.jackDanielsWhiskey0.Modifier=Jack Daniels (0) -fluid.grc.jackDanielsWhiskey1.Modifier=Jack Daniels (1) -fluid.grc.jackDanielsWhiskey2.Modifier=Jack Daniels (2) -fluid.grc.jackDanielsWhiskey3.Modifier=Jack Daniels (3) -fluid.grc.jackDanielsWhiskey4.Modifier=Jack Daniels (4) -tile.fluidBlockJackDaniels.name=Jack Daniels -tile.fluid.grc.jackDanielsWhiskey0.name=Jack Daniels (0) -tile.fluid.grc.jackDanielsWhiskey1.name=Jack Daniels (1) -tile.fluid.grc.jackDanielsWhiskey2.name=Jack Daniels (2) -tile.fluid.grc.jackDanielsWhiskey3.name=Jack Daniels (3) -tile.fluid.grc.jackDanielsWhiskey4.name=Jack Daniels (4) -fluid.psc_JD.ferment.2=Fermenting Jack Daniels -fluid.psc_JD.dmature=D Matured Jack Daniels -fluid.psc_JD.mature=Jack Daniels -fluid.psc_JD.distill=Jack Daniels Wash -fluid.psc_JD.name=Jack Daniels -fluid.psc_JD=Jack Daniels - +//Thermal Foundation Stuff item.MiscUtils.bucket.bucketPyrotheum.name=Blazing Pyrotheum Bucket item.MiscUtils.bucket.bucketCryotheum.name=Gelid Cryotheum Bucket item.MiscUtils.bucket.bucketEnder.name=Resonant Ender Bucket @@ -85,11 +42,9 @@ item.MiscUtils.material.rodBlizz.name=Blizz Rod item.MiscUtils.material.dustBlizz.name=Blizz Powder tile.MiscUtils.fluid.pyrotheum.name=Blazing Pyrotheum tile.MiscUtils.fluid.cryotheum.name=Gelid Cryotheum - -tile.miscutils.fluid.cryotheum.name=Gelid Cryotheum -tile.miscutils.fluid.pyrotheum.name=Blazing Pyrotheum tile.miscutils.fluid.ender.name=Resonant Ender +//Forestry Stuff item.frameAccelerated.name=Accelerated Frame item.frameVoid.name=Void Frame item.frameMutagenic.name=Mutagenic Frame @@ -100,22 +55,33 @@ item.frameSoul.name=Soul Frame item.frameHealing.name=Healing Frame item.frameNova.name=Nova Frame +//IC2 stuff item.itemEnergeticRotorBlade.name=Energetic Alloy Rotor Blade item.itemTungstenSteelRotorBlade.name=TungstenSteel Rotor Blade item.itemVibrantRotorBlade.name=Vibrant Alloy Rotor Blade item.itemIridiumRotorBlade.name=Iridium Rotor Blade - item.itemEnergeticShaft.name=Energetic Alloy Shaft item.itemTungstenSteelShaft.name=TungstenSteel Shaft item.itemVibrantShaft.name=Vibrant Alloy Shaft item.itemIridiumShaft.name=Iridium Shaft - item.itemMagnaliumRotorBlade.name=Magnalium Rotor Blade item.itemUltimetRotorBlade.name=Ultimet Blade item.itemMagnaliumShaft.name=Magnalium Shaft item.itemUltimetShaft.name=Ultimet Shaft -item.itemHotIngotRaisinBread.name= Hot Loaf of Raisin Bread -item.AAA_Broken.name=[Non-existent Item] Report This Recipe On Github, Please. + +//Misc Items +item.itemPLACEHOLDER_Circuit.name=Quark Manipulator (UV) +item.itemPlateEnrichedSoularium.name=Enriched Soularium Plate +item.itemHeliumBlob.name=Mysterious Hydrogen Substance item.itemAlkalusDisk.name=Alkalus Disk -item.itemIngotRaisinBread.name=§5ImQ009's §fRaisin Bread \ No newline at end of file +item.itemHotIngotRaisinBread.name= Hot Loaf of Raisin Bread +item.itemIngotRaisinBread.name=§5ImQ009's §fRaisin Bread + +//Misc Blocks +tile.blockCompressedObsidian.0.name=Compressed Obsidian (9) +tile.blockCompressedObsidian.1.name=Compressed Obsidian (81) +tile.blockCompressedObsidian.2.name=Compressed Obsidian (729) +tile.blockCompressedObsidian.3.name=Compressed Obsidian (6561) +tile.blockCompressedObsidian.4.name=Compressed Obsidian (59049) +tile.blockCompressedObsidian.5.name=Inverted Obsidian \ No newline at end of file diff --git a/src/resources/assets/miscutils/textures/blocks/SwirlGray.png b/src/resources/assets/miscutils/textures/blocks/SwirlGray.png new file mode 100644 index 0000000000..337d5fd1bc Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/SwirlGray.png differ diff --git a/src/resources/assets/miscutils/textures/blocks/compressed/obsidian1.png b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian1.png new file mode 100644 index 0000000000..0970b27745 Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian1.png differ diff --git a/src/resources/assets/miscutils/textures/blocks/compressed/obsidian2.png b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian2.png new file mode 100644 index 0000000000..6cf79c75c4 Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian2.png differ diff --git a/src/resources/assets/miscutils/textures/blocks/compressed/obsidian3.png b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian3.png new file mode 100644 index 0000000000..1241b24fad Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian3.png differ diff --git a/src/resources/assets/miscutils/textures/blocks/compressed/obsidian4.png b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian4.png new file mode 100644 index 0000000000..3d07d55d0c Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian4.png differ diff --git a/src/resources/assets/miscutils/textures/blocks/compressed/obsidian5.png b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian5.png new file mode 100644 index 0000000000..5f83804605 Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian5.png differ diff --git a/src/resources/assets/miscutils/textures/blocks/compressed/obsidian_invert.png b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian_invert.png new file mode 100644 index 0000000000..8c55fdddd3 Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/compressed/obsidian_invert.png differ -- cgit From cef36da8db2cf886f0720dd656eac736cba15dfc Mon Sep 17 00:00:00 2001 From: Alkalus Date: Sun, 26 Nov 2017 22:15:59 +1000 Subject: + Added Rope & Net block. + Added English localization for the Staballoy Construct. % Made the Xp Converter give of light as it cycles colours. % Formatting. --- src/Java/gtPlusPlus/core/block/ModBlocks.java | 3 ++ .../block/general/BlockCompressedObsidian.java | 3 ++ .../gtPlusPlus/core/block/general/BlockNet.java | 35 ++++++++++++++++++ .../core/block/general/BlockTankXpConverter.java | 40 +++++++++++++++++++-- src/Java/gtPlusPlus/core/item/ModItems.java | 9 ++--- src/resources/assets/miscutils/lang/en_US.lang | 3 ++ .../assets/miscutils/textures/blocks/net.png | Bin 0 -> 350 bytes .../assets/miscutils/textures/items/itemRope.png | Bin 0 -> 316 bytes 8 files changed, 86 insertions(+), 7 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/block/general/BlockNet.java create mode 100644 src/resources/assets/miscutils/textures/blocks/net.png create mode 100644 src/resources/assets/miscutils/textures/items/itemRope.png (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java index 770494c9f0..81d3a84dc9 100644 --- a/src/Java/gtPlusPlus/core/block/ModBlocks.java +++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java @@ -4,6 +4,7 @@ import cpw.mods.fml.common.registry.GameRegistry; import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; import gtPlusPlus.core.block.base.BlockBaseOre; import gtPlusPlus.core.block.general.BlockCompressedObsidian; +import gtPlusPlus.core.block.general.BlockNet; import gtPlusPlus.core.block.general.BlockTankXpConverter; import gtPlusPlus.core.block.general.FirePit; import gtPlusPlus.core.block.general.FluidTankInfinite; @@ -62,6 +63,7 @@ public final class ModBlocks { public static Block blockWitherGuard; public static Block blockXpConverter; public static Block blockCompressedObsidian; + public static Block blockNet; public static void init() { Utils.LOG_INFO("Initializing Blocks."); @@ -94,6 +96,7 @@ public final class ModBlocks { blockWitherGuard = new BlockWitherProof(); blockXpConverter = new BlockTankXpConverter(); blockCompressedObsidian = new BlockCompressedObsidian(); + blockNet = new BlockNet(); } diff --git a/src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java b/src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java index 48ee7709ec..853abe3edf 100644 --- a/src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java +++ b/src/Java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java @@ -26,6 +26,9 @@ public class BlockCompressedObsidian extends BlockObsidian { public BlockCompressedObsidian() { this.setBlockName("blockCompressedObsidian"); + this.setHardness(50.0F); + this.setResistance(2000.0F); + this.setStepSound(soundTypePiston); this.setCreativeTab(AddToCreativeTab.tabMachines); GameRegistry.registerBlock(this, ItemBlockMeta.class, "blockCompressedObsidian"); } diff --git a/src/Java/gtPlusPlus/core/block/general/BlockNet.java b/src/Java/gtPlusPlus/core/block/general/BlockNet.java new file mode 100644 index 0000000000..26871662b2 --- /dev/null +++ b/src/Java/gtPlusPlus/core/block/general/BlockNet.java @@ -0,0 +1,35 @@ +package gtPlusPlus.core.block.general; +import java.util.Random; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.item.ModItems; +import gtPlusPlus.core.lib.CORE; +import net.minecraft.block.BlockWeb; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.Item; + +public class BlockNet extends BlockWeb{ + + public BlockNet(){ + this.setCreativeTab(AddToCreativeTab.tabBlock); + this.setLightOpacity(1); + this.setHardness(4.0F); + this.setBlockName("blockNet"); + GameRegistry.registerBlock(this, "blockNet"); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(final IIconRegister iIcon){ + this.blockIcon = iIcon.registerIcon(CORE.MODID + ":" + "net"); + } + + @Override + public Item getItemDropped(final int p_149650_1_, final Random p_149650_2_, final int p_149650_3_){ + return ModItems.itemRope; + } + +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java index 7e1ab75b84..ea55a9177d 100644 --- a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java +++ b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java @@ -119,11 +119,11 @@ public class BlockTankXpConverter extends BlockContainer { if (tank != null) { if (tank.tankEssence.getFluid() != null) { PlayerUtils.messagePlayer(player, "This tank contains " + tank.tankEssence.getFluidAmount() - + "L of " + tank.tankEssence.getFluid().getLocalizedName()); + + "L of " + tank.tankEssence.getFluid().getLocalizedName()); } if (tank.tankLiquidXp.getFluid() != null) { PlayerUtils.messagePlayer(player, "This tank contains " + tank.tankLiquidXp.getFluidAmount() - + "L of " + tank.tankLiquidXp.getFluid().getLocalizedName()); + + "L of " + tank.tankLiquidXp.getFluid().getLocalizedName()); } if ((tank.tankEssence.getFluid() != null) && (tank.tankLiquidXp.getFluid() != null)) { PlayerUtils.messagePlayer(player, "This is worth " @@ -209,7 +209,7 @@ public class BlockTankXpConverter extends BlockContainer { if ((this.mRainbowTick < 0) || (this.mRainbowTick > this.mRainbowTickMax)) { this.mRainbowTick = 0; } - // Utils.LOG_INFO("x: "+this.mRainbowTick); + //Utils.LOG_INFO("x: "+this.mRainbowTick); if (this.mRainbowTick <= this.mRainbowTickMax) { Triplet mT = this.mRainbowMap.get(this.mRainbowTick); try { @@ -246,4 +246,38 @@ public class BlockTankXpConverter extends BlockContainer { return 20; } + @Override + public int getLightValue() { + final int mTicker = this.mRainbowTick; + if ((mTicker == 0) || (mTicker == 17)){ + return 1; + } + else if ((mTicker == 1) || (mTicker == 16)){ + return 2; + } + else if ((mTicker == 2) || (mTicker == 15)){ + return 3; + } + else if ((mTicker == 3) || (mTicker == 14)){ + return 4; + } + else if ((mTicker == 4) || (mTicker == 13)){ + return 6; + } + else if ((mTicker == 5) || (mTicker == 12)){ + return 8; + } + else if ((mTicker == 6) || (mTicker == 11)){ + return 10; + } + else if ((mTicker == 7) || (mTicker == 10)){ + return 12; + } + else if ((mTicker == 8) || (mTicker == 9)){ + return 14; + } + return 0; + + } + } diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index bd43da11fa..103639074f 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -268,6 +268,8 @@ public final class ModItems { public static Item itemGrindleTablet; + public static Item itemRope; + public static final void init(){ //Default item used when recipes fail, handy for debugging. @@ -290,20 +292,19 @@ public final class ModItems { GT_OreDictUnificator.registerOre("ingotRubber", ItemUtils.getItemStack(CORE.MODID+":itemStickyRubber", 1)); - - - //Register Hydrogen Blobs first, so we can replace old helium blobs. itemCoalCoke = new BaseItemBurnable("itemCoalCoke", "Coking Coal", tabMisc, 64, 0, "Used for metallurgy.", "fuelCoke", 3200, 0).setTextureName(CORE.MODID + ":itemCoalCoke"); //Register Hydrogen Blobs first, so we can replace old helium blobs. itemHydrogenBlob = new CoreItem("itemHydrogenBlob", "Mysterious Hydrogen Blob", tabMisc).setTextureName(CORE.MODID + ":itemHeliumBlob"); - //GT_OreDictUnificator.registerOre("dustHydrogen", new ItemStack(ModItems.itemHydrogenBlob)); //Register Old Helium Blob, this will be replaced when held by a player. itemHeliumBlob = new CoreItem("itemHeliumBlob", tabMisc, ItemUtils.getSimpleStack(itemHydrogenBlob)).setTextureName(CORE.MODID + ":itemHydrogenBlob"); //Register this neato device, for making some fires. itemBasicFireMaker = new ItemBasicFirestarter(); + //Register Rope + itemRope = new CoreItem("itemRope", "Rope", tabMisc); + //Make some backpacks //Primary colours backpack_Red = new BaseItemBackpack("backpackRed", Utils.rgbtoHexValue(200, 0, 0)); diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang index d81815e0d3..c10f904056 100644 --- a/src/resources/assets/miscutils/lang/en_US.lang +++ b/src/resources/assets/miscutils/lang/en_US.lang @@ -23,6 +23,9 @@ item.itemFuelRod_Thorium.name=Thorium Fuel Rod item.itemFuelRod_Uranium.name=Uranium Fuel Rod item.itemFuelRod_Plutonium.name=Plutonium Fuel Rod +//Entities +entity.miscutils.constructStaballoy.name=Staballoy Construct + //Tile Entities tile.blockToolBuilder.name=GregTech Tool Constructor diff --git a/src/resources/assets/miscutils/textures/blocks/net.png b/src/resources/assets/miscutils/textures/blocks/net.png new file mode 100644 index 0000000000..e885ed12db Binary files /dev/null and b/src/resources/assets/miscutils/textures/blocks/net.png differ diff --git a/src/resources/assets/miscutils/textures/items/itemRope.png b/src/resources/assets/miscutils/textures/items/itemRope.png new file mode 100644 index 0000000000..061938234d Binary files /dev/null and b/src/resources/assets/miscutils/textures/items/itemRope.png differ -- cgit From 9d57f7f2f399689f5d39e0a130f363e5f5aa6877 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Mon, 27 Nov 2017 00:34:03 +1000 Subject: + Added plant fibre to craft ropes with. + Added recipes for Plant Fibre, Rope and Nets. --- src/Java/gtPlusPlus/core/item/ModItems.java | 2 ++ .../gtPlusPlus/core/recipe/RECIPES_General.java | 26 +++++++++++++++++++++ src/resources/assets/miscutils/lang/en_US.lang | 11 +++++---- .../assets/miscutils/textures/items/itemFiber.png | Bin 0 -> 455 bytes 4 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 src/resources/assets/miscutils/textures/items/itemFiber.png (limited to 'src/Java/gtPlusPlus/core/item') diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index 103639074f..5afd82b7d4 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -269,6 +269,7 @@ public final class ModItems { public static Item itemGrindleTablet; public static Item itemRope; + public static Item itemFiber; public static final void init(){ @@ -303,6 +304,7 @@ public final class ModItems { itemBasicFireMaker = new ItemBasicFirestarter(); //Register Rope + itemFiber = new CoreItem("itemFiber", "Plant Fiber", tabMisc); itemRope = new CoreItem("itemRope", "Rope", tabMisc); //Make some backpacks diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java index 973a653302..180294c597 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java @@ -8,6 +8,7 @@ import gregtech.api.util.GT_ModHandler; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.lib.LoadedMods; +import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.recipe.RecipeUtils; @@ -168,6 +169,31 @@ public class RECIPES_General { 30*20*60, 100000);*/ + RecipeUtils.addShapelessGregtechRecipe( + new ItemStack[]{ + ItemUtils.getItemStackOfAmountFromOreDictNoBroken(CI.craftingToolKnife, 1), ItemUtils.getSimpleStack(Blocks.reeds)}, + ItemUtils.getSimpleStack(ModItems.itemFiber, 16) + ); + + RecipeUtils.addShapelessGregtechRecipe( + new ItemStack[]{ + ItemUtils.getItemStackOfAmountFromOreDictNoBroken(CI.craftingToolKnife, 1), ItemUtils.getSimpleStack(Blocks.sapling)}, + ItemUtils.getSimpleStack(ModItems.itemFiber, 32) + ); + + RecipeUtils.recipeBuilder( + null, ItemUtils.getSimpleStack(ModItems.itemFiber, 1), null, + ItemUtils.getSimpleStack(ModItems.itemFiber, 1), CI.craftingToolKnife, ItemUtils.getSimpleStack(ModItems.itemFiber, 1), + null, ItemUtils.getSimpleStack(ModItems.itemFiber, 1), null, + ItemUtils.getSimpleStack(ModItems.itemRope, 3)); + + RecipeUtils.recipeBuilder( + ItemUtils.getSimpleStack(ModItems.itemRope, 1), ItemUtils.getSimpleStack(ModItems.itemRope, 1), ItemUtils.getSimpleStack(ModItems.itemRope, 1), + ItemUtils.getSimpleStack(ModItems.itemRope, 1), ItemUtils.getSimpleStack(ModItems.itemRope, 1), ItemUtils.getSimpleStack(ModItems.itemRope, 1), + null, null, null, + ItemUtils.getSimpleStack(ModBlocks.blockNet, 2)); + + } private static boolean addCompressedObsidian(){ diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang index c10f904056..962cce198b 100644 --- a/src/resources/assets/miscutils/lang/en_US.lang +++ b/src/resources/assets/miscutils/lang/en_US.lang @@ -83,8 +83,9 @@ item.itemIngotRaisinBread.name=§5ImQ009's §fRaisin Bread //Misc Blocks tile.blockCompressedObsidian.0.name=Compressed Obsidian (9) -tile.blockCompressedObsidian.1.name=Compressed Obsidian (81) -tile.blockCompressedObsidian.2.name=Compressed Obsidian (729) -tile.blockCompressedObsidian.3.name=Compressed Obsidian (6561) -tile.blockCompressedObsidian.4.name=Compressed Obsidian (59049) -tile.blockCompressedObsidian.5.name=Inverted Obsidian \ No newline at end of file +tile.blockCompressedObsidian.1.name=Double Compressed Obsidian (81) +tile.blockCompressedObsidian.2.name=Triple Compressed Obsidian (729) +tile.blockCompressedObsidian.3.name=Quadruple Compressed Obsidian (6561) +tile.blockCompressedObsidian.4.name=Quintuple Compressed Obsidian (59049) +tile.blockCompressedObsidian.5.name=Inverted Obsidian +tile.blockNet.name=Net \ No newline at end of file diff --git a/src/resources/assets/miscutils/textures/items/itemFiber.png b/src/resources/assets/miscutils/textures/items/itemFiber.png new file mode 100644 index 0000000000..c2eb959c6c Binary files /dev/null and b/src/resources/assets/miscutils/textures/items/itemFiber.png differ -- cgit