From ac7608ea9bed12554518d98a17570a42b890e6d0 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Sun, 21 May 2023 17:39:11 +0200 Subject: [PATCH] feat: implement soul brazier --- .../net/anvilcraft/thaummach/ClientProxy.java | 4 ++ .../net/anvilcraft/thaummach/CommonProxy.java | 4 ++ .../java/net/anvilcraft/thaummach/GuiID.java | 1 + .../net/anvilcraft/thaummach/TMItems.java | 6 ++ .../container/ContainerSoulBrazier.java | 67 ++++++++++++++++++ .../thaummach/gui/GuiArcaneFurnace.java | 4 +- .../thaummach/gui/GuiSoulBrazier.java | 37 ++++++++++ .../thaummach/items/ItemSoulFragment.java | 19 +++++ .../thaummach/tiles/TileSoulBrazier.java | 21 +++--- .../assets/thaummach/lang/en_US.lang | 2 + .../thaummach/textures/guis/soul_brazier.png | Bin 0 -> 4548 bytes .../textures/items/soul_fragment.png | Bin 0 -> 518 bytes 12 files changed, 152 insertions(+), 13 deletions(-) create mode 100644 src/main/java/net/anvilcraft/thaummach/container/ContainerSoulBrazier.java create mode 100644 src/main/java/net/anvilcraft/thaummach/gui/GuiSoulBrazier.java create mode 100644 src/main/java/net/anvilcraft/thaummach/items/ItemSoulFragment.java create mode 100644 src/main/resources/assets/thaummach/textures/guis/soul_brazier.png create mode 100644 src/main/resources/assets/thaummach/textures/items/soul_fragment.png 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 0000000000000000000000000000000000000000..db22329a75680b99ab3d85d99427211d40397158 GIT binary patch literal 4548 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e4303e0500ea64ad6b4cb2b5bb735f4f864f7efc GIT binary patch literal 518 zcmV+h0{Q)kP)-S!RqZOJqum>W@$q(+HU{KRgX4t-c zJHx%3PZ&CCrhxgO4k7R~ft(&t0&&;=t>9?OimPBSGBN^-HJ0`>=tw!k6BjywhXEra zBRFvKQmVm*+<$)>EUqYM3f741cjUZ)VgM{EaivadnF%1k05PM(mwr5{rvLx|07*qo IM6N<$g3qhoQUCw| literal 0 HcmV?d00001