diff --git a/src/main/java/net/anvilcraft/thaummach/ClientProxy.java b/src/main/java/net/anvilcraft/thaummach/ClientProxy.java index fd74853..e866951 100644 --- a/src/main/java/net/anvilcraft/thaummach/ClientProxy.java +++ b/src/main/java/net/anvilcraft/thaummach/ClientProxy.java @@ -8,6 +8,7 @@ import net.anvilcraft.thaummach.entities.EntitySingularity; import net.anvilcraft.thaummach.gui.GuiArcaneFurnace; import net.anvilcraft.thaummach.gui.GuiBore; import net.anvilcraft.thaummach.gui.GuiCrystallizer; +import net.anvilcraft.thaummach.gui.GuiSoulBrazier; import net.anvilcraft.thaummach.gui.GuiVoidChest; import net.anvilcraft.thaummach.gui.GuiVoidInterface; import net.anvilcraft.thaummach.render.BlockApparatusRenderer; @@ -99,6 +100,9 @@ public class ClientProxy extends CommonProxy { case CRYSTALLIZER: return new GuiCrystallizer(player.inventory, (TileCrystallizer) te); + case SOUL_BRAZIER: + return new GuiSoulBrazier(player.inventory, (TileSoulBrazier) te); + case VOID_CHEST: return new GuiVoidChest(player.inventory, (TileVoidChest) te); diff --git a/src/main/java/net/anvilcraft/thaummach/CommonProxy.java b/src/main/java/net/anvilcraft/thaummach/CommonProxy.java index a6944c1..a447e89 100644 --- a/src/main/java/net/anvilcraft/thaummach/CommonProxy.java +++ b/src/main/java/net/anvilcraft/thaummach/CommonProxy.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.registry.GameRegistry; import net.anvilcraft.thaummach.container.ContainerArcaneFurnace; import net.anvilcraft.thaummach.container.ContainerBore; import net.anvilcraft.thaummach.container.ContainerCrystallizer; +import net.anvilcraft.thaummach.container.ContainerSoulBrazier; import net.anvilcraft.thaummach.container.ContainerVoidChest; import net.anvilcraft.thaummach.container.ContainerVoidInterface; import net.anvilcraft.thaummach.tiles.TileArcaneFurnace; @@ -67,6 +68,9 @@ public class CommonProxy implements IGuiHandler { case CRYSTALLIZER: return new ContainerCrystallizer(player.inventory, (TileCrystallizer) te); + case SOUL_BRAZIER: + return new ContainerSoulBrazier(player.inventory, (TileSoulBrazier) te); + case VOID_CHEST: return new ContainerVoidChest(player.inventory, (TileVoidChest) te); diff --git a/src/main/java/net/anvilcraft/thaummach/GuiID.java b/src/main/java/net/anvilcraft/thaummach/GuiID.java index d1f5806..9fdf87f 100644 --- a/src/main/java/net/anvilcraft/thaummach/GuiID.java +++ b/src/main/java/net/anvilcraft/thaummach/GuiID.java @@ -4,6 +4,7 @@ public enum GuiID { ARCANE_FURNACE, BORE, CRYSTALLIZER, + SOUL_BRAZIER, VOID_CHEST, VOID_INTERFACE; diff --git a/src/main/java/net/anvilcraft/thaummach/TMItems.java b/src/main/java/net/anvilcraft/thaummach/TMItems.java index 77b383a..547fecb 100644 --- a/src/main/java/net/anvilcraft/thaummach/TMItems.java +++ b/src/main/java/net/anvilcraft/thaummach/TMItems.java @@ -5,6 +5,7 @@ import net.anvilcraft.thaummach.items.ItemCrystallineBell; import net.anvilcraft.thaummach.items.ItemFocus; import net.anvilcraft.thaummach.items.ItemRunicEssence; import net.anvilcraft.thaummach.items.ItemSingularity; +import net.anvilcraft.thaummach.items.ItemSoulFragment; import net.anvilcraft.thaummach.items.ItemUpgrade; import net.minecraft.item.Item; @@ -17,6 +18,7 @@ public class TMItems { public static Item focus4; public static Item runicEssence; public static Item singularity; + public static Item soul_fragment; public static Item upgrade; public static void init() { @@ -32,6 +34,8 @@ public class TMItems { singularity = new ItemSingularity(); + soul_fragment = new ItemSoulFragment(); + upgrade = new ItemUpgrade(); GameRegistry.registerItem(crystallineBell, "crystalline_bell"); @@ -46,6 +50,8 @@ public class TMItems { GameRegistry.registerItem(singularity, "singularity"); + GameRegistry.registerItem(soul_fragment, "soul_fragment"); + GameRegistry.registerItem(upgrade, "upgrade"); } } diff --git a/src/main/java/net/anvilcraft/thaummach/container/ContainerSoulBrazier.java b/src/main/java/net/anvilcraft/thaummach/container/ContainerSoulBrazier.java new file mode 100644 index 0000000..d5e8613 --- /dev/null +++ b/src/main/java/net/anvilcraft/thaummach/container/ContainerSoulBrazier.java @@ -0,0 +1,67 @@ +package net.anvilcraft.thaummach.container; + +import net.anvilcraft.thaummach.InventorySlot; +import net.anvilcraft.thaummach.tiles.TileSoulBrazier; +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 ContainerSoulBrazier extends Container { + private TileSoulBrazier brazier; + + public ContainerSoulBrazier( + InventoryPlayer inventoryplayer, TileSoulBrazier soulbrazier + ) { + this.brazier = soulbrazier; + this.addSlotToContainer(new InventorySlot(soulbrazier, 0, 80, 41)); + + int j; + for (j = 0; j < 3; ++j) { + for (int k = 0; k < 9; ++k) { + this.addSlotToContainer( + new Slot(inventoryplayer, k + j * 9 + 9, 8 + k * 18, 84 + j * 18) + ); + } + } + + for (j = 0; j < 9; ++j) { + this.addSlotToContainer(new Slot(inventoryplayer, j, 8 + j * 18, 142)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer entityplayer) { + return this.brazier.isUseableByPlayer(entityplayer); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int i) { + ItemStack itemstack = null; + Slot slot = (Slot) super.inventorySlots.get(i); + if (slot != null && slot.getHasStack()) { + ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); + if (i == 0) { + if (!this.mergeItemStack(itemstack1, 1, 37, true)) { + return null; + } + } else if (!this.mergeItemStack(itemstack1, 0, 1, false)) { + return null; + } + + if (itemstack1.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + + if (itemstack1.stackSize == itemstack.stackSize) { + return null; + } + } + + return itemstack; + } +} diff --git a/src/main/java/net/anvilcraft/thaummach/gui/GuiArcaneFurnace.java b/src/main/java/net/anvilcraft/thaummach/gui/GuiArcaneFurnace.java index 655ac52..3ef6e18 100644 --- a/src/main/java/net/anvilcraft/thaummach/gui/GuiArcaneFurnace.java +++ b/src/main/java/net/anvilcraft/thaummach/gui/GuiArcaneFurnace.java @@ -19,8 +19,8 @@ public class GuiArcaneFurnace extends GuiContainer { @Override protected void drawGuiContainerForegroundLayer(int alec1, int alec2) { - super.fontRendererObj.drawString("Thaumic Furnace", 48, 5, 4210752); - super.fontRendererObj.drawString("Inventory", 8, super.ySize - 96 + 2, 4210752); + super.fontRendererObj.drawString("Thaumic Furnace", 48, 5, 0x404040); + super.fontRendererObj.drawString("Inventory", 8, super.ySize - 96 + 2, 0x404040); } @Override diff --git a/src/main/java/net/anvilcraft/thaummach/gui/GuiSoulBrazier.java b/src/main/java/net/anvilcraft/thaummach/gui/GuiSoulBrazier.java new file mode 100644 index 0000000..80e8666 --- /dev/null +++ b/src/main/java/net/anvilcraft/thaummach/gui/GuiSoulBrazier.java @@ -0,0 +1,37 @@ +package net.anvilcraft.thaummach.gui; + +import net.anvilcraft.thaummach.container.ContainerSoulBrazier; +import net.anvilcraft.thaummach.tiles.TileSoulBrazier; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +public class GuiSoulBrazier extends GuiContainer { + private TileSoulBrazier brazier; + + public GuiSoulBrazier(InventoryPlayer inventoryplayer, TileSoulBrazier soulbrazier) { + super(new ContainerSoulBrazier(inventoryplayer, soulbrazier)); + this.brazier = soulbrazier; + } + + @Override + protected void drawGuiContainerForegroundLayer(int alec1, int alec2) { + super.fontRendererObj.drawString("Soul Brazier", 57, 5, 0xf0f0f0); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float f, int qq, int ww) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + super.mc.renderEngine.bindTexture( + new ResourceLocation("thaummach", "textures/guis/soul_brazier.png") + ); + int l = (super.width - super.xSize) / 2; + int i1 = (super.height - super.ySize) / 2; + this.drawTexturedModalRect(l, i1, 0, 0, super.xSize, super.ySize); + int k1 = (int) ((float) (16 * this.brazier.burnTime) / 6000.0F); + this.drawTexturedModalRect(l + 80, i1 + 35 - k1, 176, 16 - k1, 16, k1); + int moon = super.mc.theWorld.getMoonPhase(); + this.drawTexturedModalRect(l + 84, i1 + 66, 200, moon * 8, 8, 8); + } +} diff --git a/src/main/java/net/anvilcraft/thaummach/items/ItemSoulFragment.java b/src/main/java/net/anvilcraft/thaummach/items/ItemSoulFragment.java new file mode 100644 index 0000000..4b4c1c4 --- /dev/null +++ b/src/main/java/net/anvilcraft/thaummach/items/ItemSoulFragment.java @@ -0,0 +1,19 @@ +package net.anvilcraft.thaummach.items; + +import net.anvilcraft.thaummach.TMTab; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.Item; + +public class ItemSoulFragment extends Item { + public ItemSoulFragment() { + super(); + + this.setUnlocalizedName("thaummach:soul_fragment"); + this.setCreativeTab(TMTab.INSTANCE); + } + + @Override + public void registerIcons(IIconRegister reg) { + this.itemIcon = reg.registerIcon("thaummach:soul_fragment"); + } +} diff --git a/src/main/java/net/anvilcraft/thaummach/tiles/TileSoulBrazier.java b/src/main/java/net/anvilcraft/thaummach/tiles/TileSoulBrazier.java index 36ffe45..7f02658 100644 --- a/src/main/java/net/anvilcraft/thaummach/tiles/TileSoulBrazier.java +++ b/src/main/java/net/anvilcraft/thaummach/tiles/TileSoulBrazier.java @@ -2,11 +2,13 @@ package net.anvilcraft.thaummach.tiles; import dev.tilera.auracore.api.AuraNode; import dev.tilera.auracore.aura.AuraManager; +import net.anvilcraft.thaummach.GuiID; +import net.anvilcraft.thaummach.ITileGui; +import net.anvilcraft.thaummach.TMItems; import net.anvilcraft.thaummach.ThaumicMachinery; import net.anvilcraft.thaummach.packets.PacketFXSparkle; import net.anvilcraft.thaummach.packets.PacketFXWisp; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -16,20 +18,19 @@ import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.EnumSkyBlock; -public class TileSoulBrazier extends TileEntity implements ISidedInventory { +public class TileSoulBrazier extends TileEntity implements ISidedInventory, ITileGui { private ItemStack stack = null; private int delay; public int burnTime; private boolean previousLight; private int lightingDelay; - // TODO: implement soul fragment - public static ItemStack VALID_ITEM = new ItemStack(Blocks.soul_sand); + public static ItemStack VALID_ITEM = new ItemStack(TMItems.soul_fragment); - // TODO: GUIs - //public GuiScreen getGui(EntityPlayer player) { - // return new GuiSoulBrazier(player.inventory, this); - //} + @Override + public GuiID getGuiID() { + return GuiID.SOUL_BRAZIER; + } public boolean isWorking() { return this.burnTime > 0 @@ -56,13 +57,11 @@ public class TileSoulBrazier extends TileEntity implements ISidedInventory { if (!super.worldObj.isBlockIndirectlyGettingPowered( super.xCoord, super.yCoord, super.zCoord )) { + super.worldObj.markBlockForUpdate(super.xCoord, super.yCoord, super.zCoord); if (this.burnTime <= 0 && this.stack != null && this.stack.isItemEqual(VALID_ITEM)) { this.burnTime = 6000; this.lightingDelay = 0; - super.worldObj.markBlockForUpdate( - super.xCoord, super.yCoord, super.zCoord - ); super.worldObj.updateLightByType( EnumSkyBlock.Block, super.xCoord, super.yCoord, super.zCoord ); diff --git a/src/main/resources/assets/thaummach/lang/en_US.lang b/src/main/resources/assets/thaummach/lang/en_US.lang index f02a949..bb327cf 100644 --- a/src/main/resources/assets/thaummach/lang/en_US.lang +++ b/src/main/resources/assets/thaummach/lang/en_US.lang @@ -47,6 +47,8 @@ item.thaummach:upgrade_4.name=Infinite Sadness item.thaummach:upgrade_5.name=Contained Emptiness item.thaummach:upgrade_6.name=Collected Wisdom +item.thaummach:soul_fragment.name=Soul Fragment + item.thaummach:singularity.name=Arcane Singularity item.thaummach:crystalline_bell.name=Crystalline Bell diff --git a/src/main/resources/assets/thaummach/textures/guis/soul_brazier.png b/src/main/resources/assets/thaummach/textures/guis/soul_brazier.png new file mode 100644 index 0000000..db22329 Binary files /dev/null and b/src/main/resources/assets/thaummach/textures/guis/soul_brazier.png differ diff --git a/src/main/resources/assets/thaummach/textures/items/soul_fragment.png b/src/main/resources/assets/thaummach/textures/items/soul_fragment.png new file mode 100644 index 0000000..e4303e0 Binary files /dev/null and b/src/main/resources/assets/thaummach/textures/items/soul_fragment.png differ