From 3d51f61915178a0c9fff4270cc58acc94edebe6d Mon Sep 17 00:00:00 2001 From: WayofTime Date: Wed, 20 Jan 2021 12:50:34 -0500 Subject: [PATCH] Finished reimplementing the Sigil of Holding Probably missed a few System.out messages for testing, but ah well. --- runServer.launch | 10 +- src/generated/resources/.cache/cache | 6 +- .../assets/bloodmagic/lang/en_us.json | 11 ++ .../models/item/reagentholding.json | 6 + .../models/item/sigilofholding.json | 6 + .../recipes/alchemytable/reagent_holding.json | 23 ++++ .../recipes/array/holdingsigil.json | 13 +++ .../java/wayoftime/bloodmagic/BloodMagic.java | 2 +- .../bloodmagic/client/ClientEvents.java | 46 ++++++++ .../bloodmagic/client/hud/Elements.java | 3 + .../client/hud/element/ElementHolding.java | 109 ++++++++++++++++++ .../bloodmagic/client/key/KeyBindings.java | 30 +++-- .../client/screens/ScreenAlchemyTable.java | 19 --- .../client/screens/ScreenHolding.java | 87 ++++++++++++++ .../common/data/GeneratorLanguage.java | 16 +++ .../common/item/BloodMagicItems.java | 3 + .../common/item/sigil/ItemSigilHolding.java | 11 +- .../recipe/AlchemyArrayRecipeProvider.java | 1 + .../recipe/AlchemyTableRecipeProvider.java | 2 +- .../network/BloodMagicPacketHandler.java | 1 + .../network/KeyProcessorPacket.java | 7 -- .../network/SigilHoldingPacket.java | 59 ++++++++++ .../util/handler/event/ClientHandler.java | 3 +- 23 files changed, 429 insertions(+), 45 deletions(-) create mode 100644 src/generated/resources/assets/bloodmagic/models/item/reagentholding.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/sigilofholding.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_holding.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/array/holdingsigil.json create mode 100644 src/main/java/wayoftime/bloodmagic/client/hud/element/ElementHolding.java create mode 100644 src/main/java/wayoftime/bloodmagic/client/screens/ScreenHolding.java create mode 100644 src/main/java/wayoftime/bloodmagic/network/SigilHoldingPacket.java diff --git a/runServer.launch b/runServer.launch index d94e8723..eda917aa 100644 --- a/runServer.launch +++ b/runServer.launch @@ -1,5 +1,11 @@ + + + + + + @@ -9,9 +15,11 @@ + + - + diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index bdc8b249..144f27cf 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -58,7 +58,7 @@ e6d9cf699667aaa47efff37b2b033895dee29c15 assets/bloodmagic/blockstates/waterritu 42f26f715bddd16c069f9b51e3767b36477c8908 assets/bloodmagic/blockstates/woodtilepath.json 3c6ce233dae6c1307d9016406c324bbe844b4e1e assets/bloodmagic/blockstates/wornstonebrickpath.json d59655f12d1724b73b77c373fb6864fcff69db12 assets/bloodmagic/blockstates/wornstonetilepath.json -53c238d0ba2c0f02bc268f69e8040a0f0a4418ef assets/bloodmagic/lang/en_us.json +6018c5727249da4191f055bc7be11a67af18513b assets/bloodmagic/lang/en_us.json 34445195b9f2459475cde53454bc8e37d32865d7 assets/bloodmagic/models/block/accelerationrune.json bcdbccc49d4509571be6988762ab87126275a4c8 assets/bloodmagic/models/block/airritualstone.json adf6c0b1e25451609486dc8c8cfbd9cf0f8c67f4 assets/bloodmagic/models/block/alchemicalreactionchamber.json @@ -304,6 +304,7 @@ dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/quick_dra df9beacb97275ffaa7f186778d94ad11138dffe3 assets/bloodmagic/models/item/reagentbloodlight.json ba57b2a11a0920e7a4df894c6fbae38bf2a6e0ce assets/bloodmagic/models/item/reagentfastminer.json f9a2fbb703e22dee4ae74daff99249e5f22caa0f assets/bloodmagic/models/item/reagentgrowth.json +a0e2480efd5433e9ead1ef87c2b31b0dbbc7ecb6 assets/bloodmagic/models/item/reagentholding.json 2f8cfb7f2c9cb3dd62a007c2ec56f585414149d8 assets/bloodmagic/models/item/reagentlava.json 2a07dc18d2d8166815c29aa989ccd0093d5d112b assets/bloodmagic/models/item/reagentmagnetism.json 7ce18ad9b0de94a3fc5abf03c6726c8cc4cf5524 assets/bloodmagic/models/item/reagentsight.json @@ -323,6 +324,7 @@ eb098783e91a17d07429d9006fb09bf056350e57 assets/bloodmagic/models/item/sanguiner b6e98c7b1789654fe7ff559e95011c0a28c58bc1 assets/bloodmagic/models/item/seersigil.json cc71421e98ee7ee047a4cfbb6cb69529c2b02d4e assets/bloodmagic/models/item/selfsacrificerune.json 7f0256ef2f219d92882e759677399050b0776d64 assets/bloodmagic/models/item/shaped_charge.json +6cc73920a09d4d6925154732f4064d8d03590f25 assets/bloodmagic/models/item/sigilofholding.json ea5747638d0b5dcc03f008b202cc60a11e0827bb assets/bloodmagic/models/item/sigilofmagnetism.json dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/silk_touch_anointment.json 08bee690d5092e3c9e6c04c43f50af668fdb3b7e assets/bloodmagic/models/item/slate_vial.json @@ -554,6 +556,7 @@ eb8f2ef0c592ba022190d727eec69d73b7437bac data/bloodmagic/recipes/alchemytable/re 47a4511054bd10454302a6b41eecfac942d27864 data/bloodmagic/recipes/alchemytable/reagent_blood_light.json e50bf64f33ac29e704f553ef465c2631c1857777 data/bloodmagic/recipes/alchemytable/reagent_fastminer.json 00d41617bb2e67cdfcfcd87c3bb931726bd37e13 data/bloodmagic/recipes/alchemytable/reagent_growth.json +2c613ba6d23fb3a133963e48134893ac7e404042 data/bloodmagic/recipes/alchemytable/reagent_holding.json e06d24e618d3f2f17cb34a79ac630bd81c85dc45 data/bloodmagic/recipes/alchemytable/reagent_lava.json 41969af0a92baece82c53a779f2e71aec71fe0cb data/bloodmagic/recipes/alchemytable/reagent_magnetism.json cb5b17173d9f6b7dad40a59aa920f47601e1304e data/bloodmagic/recipes/alchemytable/reagent_sight.json @@ -616,6 +619,7 @@ f6b6c72c0a2d6b3e602976f0dd2dfa778be41777 data/bloodmagic/recipes/array/bounce.js 4bd220ced486f1d8fc4468ebd61dac755670d716 data/bloodmagic/recipes/array/fastminersigil.json d9ae32c70d4bd872f22229006ad3c8e0cf7e3721 data/bloodmagic/recipes/array/grove.json f191a3c9982b827b0b2ba93164a81fc4f8cb0959 data/bloodmagic/recipes/array/growthsigil.json +4452b681c328ed01ec680b6b68cb2a0aee11ed3d data/bloodmagic/recipes/array/holdingsigil.json 78c880321f0bfad14239d4b9d2edae170a7fa86e data/bloodmagic/recipes/array/lavasigil.json 165f8f8ba7ae094cdd1367716a0797a0f8d4d605 data/bloodmagic/recipes/array/living_boots.json 1de17e8a769d471c934835955184d0c8782fb619 data/bloodmagic/recipes/array/living_helmet.json diff --git a/src/generated/resources/assets/bloodmagic/lang/en_us.json b/src/generated/resources/assets/bloodmagic/lang/en_us.json index 5a7ae5ce..2834fa5d 100644 --- a/src/generated/resources/assets/bloodmagic/lang/en_us.json +++ b/src/generated/resources/assets/bloodmagic/lang/en_us.json @@ -70,6 +70,9 @@ "block.bloodmagic.woodtilepath": "Tiled Wooden Path", "block.bloodmagic.wornstonebrickpath": "Worn Stone Path", "block.bloodmagic.wornstonetilepath": "Tiled Worn Stone Path", + "bloodmagic.keybind.cycle_holding_neg": "Cycle Sigil (-)", + "bloodmagic.keybind.cycle_holding_pos": "Cycle Sigil (+)", + "bloodmagic.keybind.open_holding": "Open Sigil of Holding", "chat.bloodmagic.damageSource": "%s's soul became too weak", "chat.bloodmagic.living_upgrade_level_increase": "%s has leveled up to %d", "chat.bloodmagic.ritual.activate": "A rush of energy flows through the ritual!", @@ -147,6 +150,7 @@ "item.bloodmagic.reagentbloodlight": "Blood Lamp Reagent", "item.bloodmagic.reagentfastminer": "Mining Reagent", "item.bloodmagic.reagentgrowth": "Growth Reagent", + "item.bloodmagic.reagentholding": "Holding Reagent", "item.bloodmagic.reagentlava": "Lava Reagent", "item.bloodmagic.reagentmagnetism": "Magnetism Reagent", "item.bloodmagic.reagentsight": "Sight Reagent", @@ -161,6 +165,7 @@ "item.bloodmagic.sand_netherite": "Netherite Scrap Sand", "item.bloodmagic.sanguinereverter": "Sanguine Reverter", "item.bloodmagic.seersigil": "Seer's Sigil", + "item.bloodmagic.sigilofholding": "Sigil of Holding", "item.bloodmagic.sigilofmagnetism": "Sigil of Magnetism", "item.bloodmagic.silk_touch_anointment": "Soft Coating", "item.bloodmagic.slate_vial": "Slate-infused Vial", @@ -200,6 +205,7 @@ "jei.bloodmagic.recipe.soulforge": "Hellfire Forge", "jei.bloodmagic.recipe.soulsdrained": "Drained: %s Will", "jei.bloodmagic.recipe.ticksRequired": "Time: %sTicks", + "key.bloodmagic.category": "Blood Magic", "living_upgrade.bloodmagic.arrow_protect": "Pin Cushion", "living_upgrade.bloodmagic.arrow_shot": "Trick Shot", "living_upgrade.bloodmagic.battleHunger": "Battle Hungry", @@ -390,6 +396,7 @@ "tile.bloodmagic.alchemytable.name": "Alchemy Table", "tile.bloodmagic.arc.name": "Alchemical Reaction Chamber", "tile.bloodmagic.soulforge.name": "Hellfire Forge", + "tooltip.bloodmagic.activated": "Activated", "tooltip.bloodmagic.activationcrystal.awakened": "Activates more powerful rituals", "tooltip.bloodmagic.activationcrystal.creative": "Creative Only - Activates any ritual", "tooltip.bloodmagic.activationcrystal.weak": "Activates low-level rituals", @@ -409,6 +416,7 @@ "tooltip.bloodmagic.currentType.destructive": "Contains: Destructive Will", "tooltip.bloodmagic.currentType.steadfast": "Contains: Steadfast Will", "tooltip.bloodmagic.currentType.vengeful": "Contains: Vengeful Will", + "tooltip.bloodmagic.deactivated": "Deactivated", "tooltip.bloodmagic.decoration.notSafe": "Dangerous for decoration", "tooltip.bloodmagic.decoration.safe": "Safe for decoration", "tooltip.bloodmagic.diviner.airRune": "Air Runes: %d", @@ -458,6 +466,9 @@ "tooltip.bloodmagic.sigil.divination.otherNetwork": "Peering into the soul of %s", "tooltip.bloodmagic.sigil.fastminer.desc": "Keep mining, and mining...", "tooltip.bloodmagic.sigil.greengrove.desc": "Environmentally friendly", + "tooltip.bloodmagic.sigil.holding.desc": "Sigil-ception", + "tooltip.bloodmagic.sigil.holding.press": "Press %s to modify", + "tooltip.bloodmagic.sigil.holding.sigilInSlot": "Slot %d: %s", "tooltip.bloodmagic.sigil.lava.desc": "HOT! DO NOT EAT", "tooltip.bloodmagic.sigil.magnetism.desc": "I have a very magnetic personality", "tooltip.bloodmagic.sigil.seer.currentAltarCapacity": "Current Capacity: %d LP", diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentholding.json b/src/generated/resources/assets/bloodmagic/models/item/reagentholding.json new file mode 100644 index 00000000..b84ea6fb --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/reagentholding.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "bloodmagic:item/reagentholding" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/sigilofholding.json b/src/generated/resources/assets/bloodmagic/models/item/sigilofholding.json new file mode 100644 index 00000000..32760a59 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/sigilofholding.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "bloodmagic:item/sigilofholding" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_holding.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_holding.json new file mode 100644 index 00000000..d293e725 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_holding.json @@ -0,0 +1,23 @@ +{ + "type": "bloodmagic:alchemytable", + "input": [ + { + "tag": "forge:chests" + }, + { + "tag": "forge:leather" + }, + { + "tag": "forge:string" + }, + { + "tag": "forge:string" + } + ], + "output": { + "item": "bloodmagic:reagentholding" + }, + "syphon": 2000, + "ticks": 200, + "upgradeLevel": 2 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/array/holdingsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/holdingsigil.json new file mode 100644 index 00000000..9aa7670a --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/array/holdingsigil.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:array", + "texture": "bloodmagic:textures/models/alchemyarrays/sightsigil.png", + "baseinput": { + "item": "bloodmagic:reagentholding" + }, + "addedinput": { + "item": "bloodmagic:infusedslate" + }, + "output": { + "item": "bloodmagic:sigilofholding" + } +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/BloodMagic.java b/src/main/java/wayoftime/bloodmagic/BloodMagic.java index e4575033..9bced871 100644 --- a/src/main/java/wayoftime/bloodmagic/BloodMagic.java +++ b/src/main/java/wayoftime/bloodmagic/BloodMagic.java @@ -135,7 +135,7 @@ public class BloodMagic modBus.addGenericListener(Effect.class, BloodMagicPotions::registerPotions); MinecraftForge.EVENT_BUS.register(new GenericHandler()); -// MinecraftForge.EVENT_BUS.register(new ClientEvents()); +// MinecraftForge.EVENT_BUS.register(new ClientHandler()); modBus.addListener(this::registerColors); MinecraftForge.EVENT_BUS.register(new WillHandler()); diff --git a/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java b/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java index f398a253..2b863d9b 100644 --- a/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java +++ b/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java @@ -1,17 +1,21 @@ package wayoftime.bloodmagic.client; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.gui.ScreenManager; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderTypeLookup; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.IItemPropertyGetter; import net.minecraft.item.Item; import net.minecraft.item.ItemModelsProperties; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.StringTextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ColorHandlerEvent; +import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -38,14 +42,18 @@ import wayoftime.bloodmagic.client.render.entity.EntityShapedChargeRenderer; import wayoftime.bloodmagic.client.render.entity.SoulSnareRenderer; import wayoftime.bloodmagic.client.screens.ScreenAlchemicalReactionChamber; import wayoftime.bloodmagic.client.screens.ScreenAlchemyTable; +import wayoftime.bloodmagic.client.screens.ScreenHolding; import wayoftime.bloodmagic.client.screens.ScreenSoulForge; import wayoftime.bloodmagic.common.block.BloodMagicBlocks; import wayoftime.bloodmagic.common.item.BloodMagicItems; import wayoftime.bloodmagic.common.item.ItemSacrificialDagger; +import wayoftime.bloodmagic.common.item.sigil.ItemSigilHolding; import wayoftime.bloodmagic.common.item.sigil.ItemSigilToggleable; import wayoftime.bloodmagic.common.item.soul.ItemSentientSword; import wayoftime.bloodmagic.common.registries.BloodMagicEntityTypes; import wayoftime.bloodmagic.core.registry.AlchemyArrayRendererRegistry; +import wayoftime.bloodmagic.network.BloodMagicPacketHandler; +import wayoftime.bloodmagic.network.SigilHoldingPacket; import wayoftime.bloodmagic.tile.TileAlchemyArray; import wayoftime.bloodmagic.tile.TileAltar; import wayoftime.bloodmagic.tile.TileDemonCrucible; @@ -67,6 +75,7 @@ public class ClientEvents ScreenManager.registerFactory(BloodMagicBlocks.SOUL_FORGE_CONTAINER.get(), ScreenSoulForge::new); ScreenManager.registerFactory(BloodMagicBlocks.ARC_CONTAINER.get(), ScreenAlchemicalReactionChamber::new); ScreenManager.registerFactory(BloodMagicBlocks.ALCHEMY_TABLE_CONTAINER.get(), ScreenAlchemyTable::new); + ScreenManager.registerFactory(BloodMagicBlocks.HOLDING_CONTAINER.get(), ScreenHolding::new); } public static void colorHandlerEvent(ColorHandlerEvent.Item event) @@ -74,6 +83,43 @@ public class ClientEvents event.getItemColors().register(new AnointmentColor(), BloodMagicItems.MELEE_DAMAGE_ANOINTMENT.get(), BloodMagicItems.SILK_TOUCH_ANOINTMENT.get(), BloodMagicItems.FORTUNE_ANOINTMENT.get(), BloodMagicItems.HOLY_WATER_ANOINTMENT.get(), BloodMagicItems.HIDDEN_KNOWLEDGE_ANOINTMENT.get(), BloodMagicItems.QUICK_DRAW_ANOINTMENT.get(), BloodMagicItems.LOOTING_ANOINTMENT.get(), BloodMagicItems.BOW_POWER_ANOINTMENT.get(), BloodMagicItems.WILL_POWER_ANOINTMENT.get(), BloodMagicItems.SMELTING_ANOINTMENT.get()); } + public static void cycleSigil(ItemStack stack, PlayerEntity player, int dWheel) + { + int mode = dWheel; + if (true) + { + mode = ItemSigilHolding.getCurrentItemOrdinal(stack); + mode = dWheel < 0 ? ItemSigilHolding.next(mode) : ItemSigilHolding.prev(mode); + } + + ItemSigilHolding.cycleToNextSigil(stack, mode); + BloodMagicPacketHandler.INSTANCE.sendToServer(new SigilHoldingPacket(player.inventory.currentItem, mode)); + ItemStack newStack = ItemSigilHolding.getItemStackInSlot(stack, ItemSigilHolding.getCurrentItemOrdinal(stack)); + player.sendStatusMessage(newStack.isEmpty() ? new StringTextComponent("") : newStack.getTextComponent(), true); + } + + @SubscribeEvent + public void onMouseEvent(InputEvent.MouseScrollEvent event) + { + ClientPlayerEntity player = Minecraft.getInstance().player; + + if (event.getScrollDelta() != 0 && player != null && player.isSneaking()) + { + ItemStack stack = player.getHeldItemMainhand(); + + if (!stack.isEmpty()) + { + Item item = stack.getItem(); + + if (item instanceof ItemSigilHolding) + { + cycleSigil(stack, player, event.getScrollDelta() > 0 ? 1 : -1); + event.setCanceled(true); + } + } + } + } + @SubscribeEvent public void appendTooltip(ItemTooltipEvent event) { diff --git a/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java b/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java index 18515e0f..cff7e3a0 100644 --- a/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java +++ b/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java @@ -13,6 +13,7 @@ import wayoftime.bloodmagic.ConfigManager; import wayoftime.bloodmagic.client.Sprite; import wayoftime.bloodmagic.client.hud.element.ElementDemonAura; import wayoftime.bloodmagic.client.hud.element.ElementDivinedInformation; +import wayoftime.bloodmagic.client.hud.element.ElementHolding; import wayoftime.bloodmagic.tile.TileAltar; import wayoftime.bloodmagic.tile.TileIncenseAltar; import wayoftime.bloodmagic.util.helper.NumeralHelper; @@ -86,5 +87,7 @@ public class Elements : String.valueOf((int) (100 * incense.incenseAddition)))); } }, new Vector2f(0.01F, 0.01F)); + + ElementRegistry.registerHandler(new ResourceLocation(BloodMagic.MODID, "holding"), new ElementHolding(), new Vector2f(0.72F, 1.0F)); } } diff --git a/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementHolding.java b/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementHolding.java new file mode 100644 index 00000000..2231907f --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementHolding.java @@ -0,0 +1,109 @@ +package wayoftime.bloodmagic.client.hud.element; + +import java.util.List; + +import com.mojang.blaze3d.matrix.MatrixStack; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.client.Sprite; +import wayoftime.bloodmagic.common.item.BloodMagicItems; +import wayoftime.bloodmagic.common.item.sigil.ItemSigilHolding; + +public class ElementHolding extends HUDElement +{ + private static final Sprite HOLDING_BAR = new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 0, 102, 22); + private static final Sprite SELECTED_OVERLAY = new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 22, 24, 24); + + public ElementHolding() + { + super(HOLDING_BAR.getTextureWidth(), HOLDING_BAR.getTextureHeight()); + } + + @Override + public void draw(MatrixStack matrixStack, float partialTicks, int drawX, int drawY) + { +// GlStateManager.color(1.0F, 1.0F, 1.0F); + matrixStack.push(); + HOLDING_BAR.draw(matrixStack, drawX, drawY); + + Minecraft minecraft = Minecraft.getInstance(); + ItemStack sigilHolding = minecraft.player.getHeldItemMainhand(); + // Check mainhand for Sigil of Holding + if (!(sigilHolding.getItem() == BloodMagicItems.HOLDING_SIGIL.get())) + sigilHolding = minecraft.player.getHeldItemOffhand(); + // Check offhand for Sigil of Holding + if (!(sigilHolding.getItem() == BloodMagicItems.HOLDING_SIGIL.get())) + return; + + int currentSlot = ItemSigilHolding.getCurrentItemOrdinal(sigilHolding); + SELECTED_OVERLAY.draw(matrixStack, drawX - 1 + (currentSlot * 20), drawY - 1); + + RenderHelper.enableStandardItemLighting(); + List inventory = ItemSigilHolding.getInternalInventory(sigilHolding); + int xOffset = 0; + for (ItemStack stack : inventory) + { + renderHotbarItem(matrixStack, drawX + 3 + xOffset, drawY + 3, partialTicks, minecraft.player, stack); + xOffset += 20; + } + matrixStack.pop(); + } + + @Override + public boolean shouldRender(Minecraft minecraft) + { + ItemStack sigilHolding = minecraft.player.getHeldItemMainhand(); + // Check mainhand for Sigil of Holding + if (!(sigilHolding.getItem() == BloodMagicItems.HOLDING_SIGIL.get())) + sigilHolding = minecraft.player.getHeldItemOffhand(); + // Check offhand for Sigil of Holding + if (!(sigilHolding.getItem() == BloodMagicItems.HOLDING_SIGIL.get())) + return false; + + return true; + } + + protected void renderHotbarItem(MatrixStack matrixStack, int x, int y, float partialTicks, PlayerEntity player, ItemStack stack) + { + if (!stack.isEmpty()) + { + float animation = (float) stack.getAnimationsToGo() - partialTicks; + + if (animation > 0.0F) + { + matrixStack.push(); + float f1 = 1.0F + animation / 5.0F; + matrixStack.translate((float) (x + 8), (float) (y + 12), 0.0F); + matrixStack.scale(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F); + matrixStack.translate((float) (-(x + 8)), (float) (-(y + 12)), 0.0F); +// RenderSystem.translatef((float) (x + 8), (float) (y + 12), 0.0F); +// RenderSystem.scalef(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F); +// RenderSystem.translatef((float) (-(x + 8)), (float) (-(y + 12)), 0.0F); + } + + Minecraft.getInstance().getItemRenderer().renderItemAndEffectIntoGUI(player, stack, x, y); + + if (animation > 0.0F) + matrixStack.pop(); + + Minecraft.getInstance().getItemRenderer().renderItemOverlays(Minecraft.getInstance().fontRenderer, stack, x, y); + } + } + +// private void drawItemStack(ItemStack stack, int x, int y, String altText) { +// RenderSystem.translatef(0.0F, 0.0F, 32.0F); +// this.setBlitOffset(200); +// this.itemRenderer.zLevel = 200.0F; +// net.minecraft.client.gui.FontRenderer font = stack.getItem().getFontRenderer(stack); +// if (font == null) font = this.font; +// this.itemRenderer.renderItemAndEffectIntoGUI(stack, x, y); +// this.itemRenderer.renderItemOverlayIntoGUI(font, stack, x, y - (this.draggedStack.isEmpty() ? 0 : 8), altText); +// this.setBlitOffset(0); +// this.itemRenderer.zLevel = 0.0F; +// } +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/client/key/KeyBindings.java b/src/main/java/wayoftime/bloodmagic/client/key/KeyBindings.java index fe6c0224..e711dad3 100644 --- a/src/main/java/wayoftime/bloodmagic/client/key/KeyBindings.java +++ b/src/main/java/wayoftime/bloodmagic/client/key/KeyBindings.java @@ -2,14 +2,20 @@ package wayoftime.bloodmagic.client.key; import java.util.Locale; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.settings.KeyBinding; +import net.minecraft.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.settings.IKeyConflictContext; import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyModifier; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.client.ClientEvents; +import wayoftime.bloodmagic.common.item.sigil.ItemSigilHolding; import wayoftime.bloodmagic.network.KeyProcessorPacket; +import wayoftime.bloodmagic.util.handler.event.ClientHandler; public enum KeyBindings { @@ -20,10 +26,12 @@ public enum KeyBindings @Override public void handleKeybind() { - BloodMagic.packetHandler.sendToServer(new KeyProcessorPacket(this.ordinal(), false)); - System.out.println("I is on the client."); -// ItemStack itemStack = ClientHandler.minecraft.player.getHeldItemMainhand(); -// if (itemStack.getItem() instanceof IKeybindable) + ItemStack itemStack = ClientHandler.minecraft.player.getHeldItemMainhand(); + if (itemStack.getItem() instanceof IKeybindable) + BloodMagic.packetHandler.sendToServer(new KeyProcessorPacket(this.ordinal(), false)); +// System.out.println("I is on the client."); +// +// // BloodMagicPacketHandler.INSTANCE.sendToServer(new KeyProcessorPacket(this, false)); } }, @@ -33,9 +41,9 @@ public enum KeyBindings @Override public void handleKeybind() { -// ClientPlayerEntity player = Minecraft.getInstance().player; -// if (player.getHeldItemMainhand().getItem() instanceof ItemSigilHolding) -// ClientHandler.cycleSigil(player.getHeldItemMainhand(), player, -1); + ClientPlayerEntity player = Minecraft.getInstance().player; + if (player.getHeldItemMainhand().getItem() instanceof ItemSigilHolding) + ClientEvents.cycleSigil(player.getHeldItemMainhand(), player, -1); } }, CYCLE_HOLDING_NEG(KeyConflictContext.IN_GAME, KeyModifier.SHIFT, -1) @@ -44,9 +52,9 @@ public enum KeyBindings @Override public void handleKeybind() { -// ClientPlayerEntity player = Minecraft.getInstance().player; -// if (player.getHeldItemMainhand().getItem() instanceof ItemSigilHolding) -// ClientHandler.cycleSigil(player.getHeldItemMainhand(), player, 1); + ClientPlayerEntity player = Minecraft.getInstance().player; + if (player.getHeldItemMainhand().getItem() instanceof ItemSigilHolding) + ClientEvents.cycleSigil(player.getHeldItemMainhand(), player, 1); } },; // @formatter:on @@ -106,5 +114,7 @@ public enum KeyBindings public static void initializeKeys() { OPEN_HOLDING.getKey(); + CYCLE_HOLDING_POS.getKey(); + CYCLE_HOLDING_NEG.getKey(); } } \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/client/screens/ScreenAlchemyTable.java b/src/main/java/wayoftime/bloodmagic/client/screens/ScreenAlchemyTable.java index 7691fb0f..03ce861e 100644 --- a/src/main/java/wayoftime/bloodmagic/client/screens/ScreenAlchemyTable.java +++ b/src/main/java/wayoftime/bloodmagic/client/screens/ScreenAlchemyTable.java @@ -32,24 +32,6 @@ public class ScreenAlchemyTable extends ScreenBase return background; } -// public - -// public ScreenSoulForge(InventoryPlayer playerInventory, IInventory tileSoulForge) -// { -// super(new ContainerAlchemyTable(playerInventory, tileSoulForge)); -// this.tileSoulForge = tileSoulForge; -// this.xSize = 176; -// this.ySize = 205; -// } -// -// @Override -// public void render(MatrixStack stack, int mouseX, int mouseY, float partialTicks) -// { -// this.drawDefaultBackground(); -// super.drawScreen(mouseX, mouseY, partialTicks); -// this.renderHoveredToolTip(mouseX, mouseY); -// } -// @Override protected void drawGuiContainerForegroundLayer(MatrixStack stack, int mouseX, int mouseY) { @@ -57,7 +39,6 @@ public class ScreenAlchemyTable extends ScreenBase this.font.func_243248_b(stack, new TranslationTextComponent("container.inventory"), 8, 111, 4210752); } -// @Override protected void drawGuiContainerBackgroundLayer(MatrixStack stack, float partialTicks, int mouseX, int mouseY) { diff --git a/src/main/java/wayoftime/bloodmagic/client/screens/ScreenHolding.java b/src/main/java/wayoftime/bloodmagic/client/screens/ScreenHolding.java new file mode 100644 index 00000000..a7147cdd --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/client/screens/ScreenHolding.java @@ -0,0 +1,87 @@ +package wayoftime.bloodmagic.client.screens; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Hand; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.common.item.BloodMagicItems; +import wayoftime.bloodmagic.common.item.inventory.ContainerHolding; +import wayoftime.bloodmagic.common.item.sigil.ItemSigilHolding; + +public class ScreenHolding extends ScreenBase +{ + private static final ResourceLocation background = BloodMagic.rl("gui/sigilholding.png"); + public IInventory tileTable; + private PlayerEntity player; + + public ScreenHolding(ContainerHolding container, PlayerInventory playerInventory, ITextComponent title) + { + super(container, playerInventory, title); + tileTable = container.inventoryHolding; + xSize = 176; + ySize = 121; + this.player = playerInventory.player; + } + + @Override + public ResourceLocation getBackground() + { + return background; + } + + @Override + protected void drawGuiContainerForegroundLayer(MatrixStack stack, int mouseX, int mouseY) + { +// this.font.func_243248_b(stack, new TranslationTextComponent("tile.bloodmagic.alchemytable.name"), 8, 5, 4210752); +// this.font.func_243248_b(stack, new TranslationTextComponent("container.inventory"), 8, 111, 4210752); + this.font.func_243248_b(stack, new TranslationTextComponent("item.bloodmagic.sigilofholding"), 53, 4, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(MatrixStack stack, float partialTicks, int mouseX, int mouseY) + { + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + getMinecraft().getTextureManager().bindTexture(background); +// int i = (this.width - this.xSize) / 2; +// int j = (this.height - this.ySize) / 2; +// this.blit(stack, i, j, 0, 0, this.xSize, this.ySize); +// +// int l = this.getCookProgressScaled(90); +// this.blit(stack, i + 115, j + 14 + 90 - l, 176, 90 - l, 18, l); +// +// for (int slotId = 0; slotId < 6; slotId++) +// { +// if (!((TileAlchemyTable) tileTable).isInputSlotAccessible(slotId)) +// { +// Slot slot = this.getContainer().getSlot(slotId); +// +// this.blit(stack, i + slot.xPos, j + slot.yPos, 195, 1, 16, 16); +// } +// } + + // draw your Gui here, only thing you need to change is the path +// GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); +// this.mc.getTextureManager().bindTexture(texture); + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + this.blit(stack, x, y, 0, 0, xSize, ySize); + ItemStack held = player.getHeldItem(Hand.MAIN_HAND); + if (!held.isEmpty() && held.getItem() == BloodMagicItems.HOLDING_SIGIL.get()) + { +// GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + this.blit(stack, 4 + x + 36 * ItemSigilHolding.getCurrentItemOrdinal(player.getHeldItemMainhand()), y + 13, 0, 123, 24, 24); + } + } + +// + +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java index 37225133..b2cddc18 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java @@ -59,6 +59,13 @@ public class GeneratorLanguage extends LanguageProvider add("tooltip.bloodmagic.sigil.seer.currentTranquility", "Current Tranquility: %d"); add("tooltip.bloodmagic.sigil.seer.currentBonus", "Current Bonus: +%d%%"); + add("tooltip.bloodmagic.sigil.holding.press", "Press %s to modify"); + add("tooltip.bloodmagic.sigil.holding.desc", "Sigil-ception"); + add("tooltip.bloodmagic.sigil.holding.sigilInSlot", "Slot %d: %s"); + + add("tooltip.bloodmagic.activated", "Activated"); + add("tooltip.bloodmagic.deactivated", "Deactivated"); + add("tooltip.bloodmagic.decoration.safe", "Safe for decoration"); add("tooltip.bloodmagic.decoration.notSafe", "Dangerous for decoration"); @@ -113,6 +120,8 @@ public class GeneratorLanguage extends LanguageProvider add("tooltip.bloodmagic.experienceTome.exp", "Exp: %0.3f"); add("tooltip.bloodmagic.experienceTome.expLevel", "Level: %d"); + add("key.bloodmagic.category", "Blood Magic"); + // Ritual info add("tooltip.bloodmagic.diviner.currentRitual", "Current Ritual: %s"); add("tooltip.bloodmagic.diviner.blankRune", "Blank Runes: %d"); @@ -361,6 +370,11 @@ public class GeneratorLanguage extends LanguageProvider add("guide.bloodmagic.name", "Sanguine Scientiem"); add("guide.bloodmagic.landing_text", "\"It is my dear hope that by holding this tome in your hands, I may impart the knowledge of the lost art that is Blood Magic\"$(br)$(o)- Magus Arcana$()"); + // Keybinds + add("bloodmagic.keybind.open_holding", "Open Sigil of Holding"); + add("bloodmagic.keybind.cycle_holding_pos", "Cycle Sigil (+)"); + add("bloodmagic.keybind.cycle_holding_neg", "Cycle Sigil (-)"); + // Block names addBlock(BloodMagicBlocks.BLANK_RUNE, "Blank Rune"); addBlock(BloodMagicBlocks.SPEED_RUNE, "Speed Rune"); @@ -454,6 +468,7 @@ public class GeneratorLanguage extends LanguageProvider addItem(BloodMagicItems.AIR_SIGIL, "Air Sigil"); addItem(BloodMagicItems.BLOOD_LIGHT_SIGIL, "Sigil of the Blood Lamp"); addItem(BloodMagicItems.SEER_SIGIL, "Seer's Sigil"); + addItem(BloodMagicItems.HOLDING_SIGIL, "Sigil of Holding"); addItem(BloodMagicBlocks.LIFE_ESSENCE_BUCKET, "Bucket of Life"); addItem(BloodMagicItems.ARCANE_ASHES, "Arcane Ashes"); @@ -477,6 +492,7 @@ public class GeneratorLanguage extends LanguageProvider addItem(BloodMagicItems.REAGENT_BLOOD_LIGHT, "Blood Lamp Reagent"); addItem(BloodMagicItems.REAGENT_SIGHT, "Sight Reagent"); addItem(BloodMagicItems.REAGENT_BINDING, "Binding Reagent"); + addItem(BloodMagicItems.REAGENT_HOLDING, "Holding Reagent"); addItem(BloodMagicItems.PETTY_GEM, "Petty Tartaric Gem"); addItem(BloodMagicItems.LESSER_GEM, "Lesser Tartaric Gem"); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java b/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java index c7a8333d..f736ee7c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java @@ -20,6 +20,7 @@ import wayoftime.bloodmagic.common.item.sigil.ItemSigilDivination; import wayoftime.bloodmagic.common.item.sigil.ItemSigilFastMiner; import wayoftime.bloodmagic.common.item.sigil.ItemSigilFrost; import wayoftime.bloodmagic.common.item.sigil.ItemSigilGreenGrove; +import wayoftime.bloodmagic.common.item.sigil.ItemSigilHolding; import wayoftime.bloodmagic.common.item.sigil.ItemSigilLava; import wayoftime.bloodmagic.common.item.sigil.ItemSigilMagnetism; import wayoftime.bloodmagic.common.item.sigil.ItemSigilVoid; @@ -127,6 +128,7 @@ public class BloodMagicItems public static final RegistryObject ICE_SIGIL = ITEMS.register("icesigil", () -> new ItemSigilFrost()); public static final RegistryObject AIR_SIGIL = BASICITEMS.register("airsigil", ItemSigilAir::new); public static final RegistryObject BLOOD_LIGHT_SIGIL = BASICITEMS.register("bloodlightsigil", ItemSigilBloodLight::new); + public static final RegistryObject HOLDING_SIGIL = BASICITEMS.register("sigilofholding", ItemSigilHolding::new); public static final RegistryObject ARCANE_ASHES = BASICITEMS.register("arcaneashes", () -> new ItemArcaneAshes()); public static final RegistryObject DAGGER_OF_SACRIFICE = BASICITEMS.register("daggerofsacrifice", () -> new ItemDaggerOfSacrifice()); @@ -168,6 +170,7 @@ public class BloodMagicItems public static final RegistryObject REAGENT_BLOOD_LIGHT = BASICITEMS.register("reagentbloodlight", () -> new ItemBase()); public static final RegistryObject REAGENT_SIGHT = BASICITEMS.register("reagentsight", () -> new ItemBase()); public static final RegistryObject REAGENT_BINDING = BASICITEMS.register("reagentbinding", () -> new ItemBase()); + public static final RegistryObject REAGENT_HOLDING = BASICITEMS.register("reagentholding", () -> new ItemBase()); // Tartaric Gems public static final RegistryObject PETTY_GEM = ITEMS.register("soulgempetty", () -> new ItemSoulGem("petty", 64)); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilHolding.java b/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilHolding.java index 4d48ada4..29d75dfd 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilHolding.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilHolding.java @@ -22,6 +22,7 @@ import net.minecraft.util.NonNullList; import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; @@ -51,6 +52,7 @@ public class ItemSigilHolding extends ItemSigilBase implements IKeybindable, IAl @Override public void onKeyPressed(ItemStack stack, PlayerEntity player, KeyBindings key, boolean showInChat) { + System.out.println("Received key press on server."); if (stack == player.getHeldItemMainhand() && stack.getItem() instanceof ItemSigilHolding && key.equals(KeyBindings.OPEN_HOLDING)) { Utils.setUUID(stack); @@ -81,7 +83,7 @@ public class ItemSigilHolding extends ItemSigilBase implements IKeybindable, IAl public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag flag) { super.addInformation(stack, world, tooltip, flag); - tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.sigil.holding.press", KeyBindings.OPEN_HOLDING.getKey())); + tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.sigil.holding.press", new TranslationTextComponent(KeyBindings.OPEN_HOLDING.getKey().getTranslationKey()).mergeStyle(TextFormatting.ITALIC))); if (!stack.hasTag()) return; @@ -95,8 +97,11 @@ public class ItemSigilHolding extends ItemSigilBase implements IKeybindable, IAl ItemStack invStack = inv.get(i); if (!invStack.isEmpty()) if (!item.isEmpty() && invStack == item) - tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.sigil.holding.sigilInSlot", i + 1, "&o&n" + invStack.getDisplayName())); - else + { + tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.sigil.holding.sigilInSlot", i + 1, (invStack.getDisplayName().copyRaw()).mergeStyle(TextFormatting.ITALIC, TextFormatting.UNDERLINE))); +// tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.sigil.holding.sigilInSlot", i + 1, new TranslationTextComponent(invStack.getDisplayName()).mergeStyle(TextFormatting.ITALIC, TextFormatting.UNDERLINE))); + + } else tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.sigil.holding.sigilInSlot", i + 1, invStack.getDisplayName())); } } diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java index 81d6f7bb..6350126d 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java @@ -31,6 +31,7 @@ public class AlchemyArrayRecipeProvider implements ISubRecipeProvider AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/lightsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_BLOOD_LIGHT.get()), Ingredient.fromItems(BloodMagicItems.IMBUED_SLATE.get()), new ItemStack(BloodMagicItems.BLOOD_LIGHT_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "bloodlightsigil")); AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/airsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_AIR.get()), Ingredient.fromItems(BloodMagicItems.REINFORCED_SLATE.get()), new ItemStack(BloodMagicItems.AIR_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "airsigil")); AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/sightsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_SIGHT.get()), Ingredient.fromItems(BloodMagicItems.REINFORCED_SLATE.get()), new ItemStack(BloodMagicItems.SEER_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "seersigil")); + AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/sightsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_HOLDING.get()), Ingredient.fromItems(BloodMagicItems.IMBUED_SLATE.get()), new ItemStack(BloodMagicItems.HOLDING_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "holdingsigil")); AlchemyArrayRecipeBuilder.array(AlchemyArrayRegistry.BINDING_ARRAY, Ingredient.fromItems(BloodMagicItems.REAGENT_BINDING.get()), Ingredient.fromItems(Items.IRON_HELMET), new ItemStack(BloodMagicItems.LIVING_HELMET.get())).build(consumer, BloodMagic.rl(basePath + "living_helmet")); AlchemyArrayRecipeBuilder.array(AlchemyArrayRegistry.BINDING_ARRAY, Ingredient.fromItems(BloodMagicItems.REAGENT_BINDING.get()), Ingredient.fromItems(Items.IRON_CHESTPLATE), new ItemStack(BloodMagicItems.LIVING_PLATE.get())).build(consumer, BloodMagic.rl(basePath + "living_plate")); AlchemyArrayRecipeBuilder.array(AlchemyArrayRegistry.BINDING_ARRAY, Ingredient.fromItems(BloodMagicItems.REAGENT_BINDING.get()), Ingredient.fromItems(Items.IRON_LEGGINGS), new ItemStack(BloodMagicItems.LIVING_LEGGINGS.get())).build(consumer, BloodMagic.rl(basePath + "living_leggings")); diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java index c7a56908..a8fc2c1d 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java @@ -69,7 +69,7 @@ public class AlchemyTableRecipeProvider implements ISubRecipeProvider AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.REAGENT_BLOOD_LIGHT.get()), 1000, 200, 3).addIngredient(Ingredient.fromTag(Tags.Items.DUSTS_GLOWSTONE)).addIngredient(Ingredient.fromItems(Items.TORCH)).addIngredient(Ingredient.fromTag(Tags.Items.DUSTS_REDSTONE)).addIngredient(Ingredient.fromTag(Tags.Items.DUSTS_REDSTONE)).build(consumer, BloodMagic.rl(basePath + "reagent_blood_light")); AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.REAGENT_SIGHT.get()), 500, 200, 1).addIngredient(Ingredient.fromTag(Tags.Items.DUSTS_GLOWSTONE)).addIngredient(Ingredient.fromTag(Tags.Items.GLASS)).addIngredient(Ingredient.fromTag(Tags.Items.GLASS)).addIngredient(Ingredient.fromItems(BloodMagicItems.DIVINATION_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "reagent_sight")); AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.REAGENT_BINDING.get()), 1000, 200, 3).addIngredient(Ingredient.fromTag(Tags.Items.DUSTS_GLOWSTONE)).addIngredient(Ingredient.fromTag(Tags.Items.DUSTS_REDSTONE)).addIngredient(Ingredient.fromTag(Tags.Items.GUNPOWDER)).addIngredient(Ingredient.fromTag(Tags.Items.NUGGETS_GOLD)).build(consumer, BloodMagic.rl(basePath + "reagent_binding")); - + AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.REAGENT_HOLDING.get()), 2000, 200, 2).addIngredient(Ingredient.fromTag(Tags.Items.CHESTS)).addIngredient(Ingredient.fromTag(Tags.Items.LEATHER)).addIngredient(Ingredient.fromTag(Tags.Items.STRING)).addIngredient(Ingredient.fromTag(Tags.Items.STRING)).build(consumer, BloodMagic.rl(basePath + "reagent_holding")); } } } diff --git a/src/main/java/wayoftime/bloodmagic/network/BloodMagicPacketHandler.java b/src/main/java/wayoftime/bloodmagic/network/BloodMagicPacketHandler.java index d33f0ca2..b6557df5 100644 --- a/src/main/java/wayoftime/bloodmagic/network/BloodMagicPacketHandler.java +++ b/src/main/java/wayoftime/bloodmagic/network/BloodMagicPacketHandler.java @@ -19,6 +19,7 @@ public class BloodMagicPacketHandler extends BasePacketHandler registerServerToClient(SetClientHealthPacket.class, SetClientHealthPacket::encode, SetClientHealthPacket::decode, SetClientHealthPacket::handle); registerClientToServer(KeyProcessorPacket.class, KeyProcessorPacket::encode, KeyProcessorPacket::decode, KeyProcessorPacket::handle); + registerClientToServer(SigilHoldingPacket.class, SigilHoldingPacket::encode, SigilHoldingPacket::decode, SigilHoldingPacket::handle); // INSTANCE.registerMessage(id, messageType, encoder, decoder, messageConsumer); // INSTANCE.registerMessage(ChatUtil.PacketNoSpamChat.Handler.class, ChatUtil.PacketNoSpamChat.class, 0, Side.CLIENT); // INSTANCE.registerMessage(ItemRouterButtonPacketProcessor.class, ItemRouterButtonPacketProcessor.class, 1, Side.SERVER); diff --git a/src/main/java/wayoftime/bloodmagic/network/KeyProcessorPacket.java b/src/main/java/wayoftime/bloodmagic/network/KeyProcessorPacket.java index 02f30330..7f79dc72 100644 --- a/src/main/java/wayoftime/bloodmagic/network/KeyProcessorPacket.java +++ b/src/main/java/wayoftime/bloodmagic/network/KeyProcessorPacket.java @@ -46,7 +46,6 @@ public class KeyProcessorPacket public static void sendKeyToServer(KeyProcessorPacket msg, PlayerEntity playerEntity) { - System.out.println("Hoiiiii"); if (playerEntity != null) { ItemStack heldStack = playerEntity.getHeldItemMainhand(); @@ -62,10 +61,4 @@ public class KeyProcessorPacket } } } - -// @OnlyIn(Dist.CLIENT) -// public static void updateClientHolder(DemonWillHolder holder) -// { -// ClientHandler.currentAura = holder; -// } } diff --git a/src/main/java/wayoftime/bloodmagic/network/SigilHoldingPacket.java b/src/main/java/wayoftime/bloodmagic/network/SigilHoldingPacket.java new file mode 100644 index 00000000..015827b9 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/network/SigilHoldingPacket.java @@ -0,0 +1,59 @@ +package wayoftime.bloodmagic.network; + +import java.util.function.Supplier; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.network.NetworkEvent.Context; +import wayoftime.bloodmagic.common.item.sigil.ItemSigilHolding; + +public class SigilHoldingPacket +{ + private int slot; + private int mode; + + public SigilHoldingPacket() + { + } + + public SigilHoldingPacket(int slot, int mode) + { + this.slot = slot; + this.mode = mode; + } + + public static void encode(SigilHoldingPacket pkt, PacketBuffer buf) + { + buf.writeInt(pkt.slot); + buf.writeInt(pkt.mode); + } + + public static SigilHoldingPacket decode(PacketBuffer buf) + { + SigilHoldingPacket pkt = new SigilHoldingPacket(buf.readInt(), buf.readInt()); + + return pkt; + } + + public static void handle(SigilHoldingPacket message, Supplier context) + { + context.get().enqueueWork(() -> sendKeyToServer(message, context.get().getSender())); + context.get().setPacketHandled(true); + } + + public static void sendKeyToServer(SigilHoldingPacket msg, PlayerEntity playerEntity) + { + ItemStack itemStack = ItemStack.EMPTY; + + if (msg.slot > -1 && msg.slot < 9) + { + itemStack = playerEntity.inventory.getStackInSlot(msg.slot); + } + + if (!itemStack.isEmpty()) + { + ItemSigilHolding.cycleToNextSigil(itemStack, msg.mode); + } + } +} diff --git a/src/main/java/wayoftime/bloodmagic/util/handler/event/ClientHandler.java b/src/main/java/wayoftime/bloodmagic/util/handler/event/ClientHandler.java index 4fbbf12f..c2235560 100644 --- a/src/main/java/wayoftime/bloodmagic/util/handler/event/ClientHandler.java +++ b/src/main/java/wayoftime/bloodmagic/util/handler/event/ClientHandler.java @@ -38,7 +38,6 @@ import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -60,7 +59,7 @@ import wayoftime.bloodmagic.tile.TileMasterRitualStone; import wayoftime.bloodmagic.will.DemonWillHolder; @Mod.EventBusSubscriber(modid = BloodMagic.MODID, value = Dist.CLIENT) -@OnlyIn(Dist.CLIENT) +//@OnlyIn(Dist.CLIENT) public class ClientHandler { public static final boolean SUPPRESS_ASSET_ERRORS = true;