Finished reimplementing the Sigil of Holding

Probably missed a few System.out messages for testing, but ah well.
This commit is contained in:
WayofTime 2021-01-20 12:50:34 -05:00
parent b7e06f23bf
commit 3d51f61915
23 changed files with 429 additions and 45 deletions

View file

@ -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());

View file

@ -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)
{

View file

@ -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));
}
}

View file

@ -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<ItemStack> 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;
// }
}

View file

@ -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();
}
}

View file

@ -32,24 +32,6 @@ public class ScreenAlchemyTable extends ScreenBase<ContainerAlchemyTable>
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<ContainerAlchemyTable>
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)
{

View file

@ -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<ContainerHolding>
{
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);
}
}
//
}

View file

@ -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");

View file

@ -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<Item> ICE_SIGIL = ITEMS.register("icesigil", () -> new ItemSigilFrost());
public static final RegistryObject<Item> AIR_SIGIL = BASICITEMS.register("airsigil", ItemSigilAir::new);
public static final RegistryObject<Item> BLOOD_LIGHT_SIGIL = BASICITEMS.register("bloodlightsigil", ItemSigilBloodLight::new);
public static final RegistryObject<Item> HOLDING_SIGIL = BASICITEMS.register("sigilofholding", ItemSigilHolding::new);
public static final RegistryObject<Item> ARCANE_ASHES = BASICITEMS.register("arcaneashes", () -> new ItemArcaneAshes());
public static final RegistryObject<Item> DAGGER_OF_SACRIFICE = BASICITEMS.register("daggerofsacrifice", () -> new ItemDaggerOfSacrifice());
@ -168,6 +170,7 @@ public class BloodMagicItems
public static final RegistryObject<Item> REAGENT_BLOOD_LIGHT = BASICITEMS.register("reagentbloodlight", () -> new ItemBase());
public static final RegistryObject<Item> REAGENT_SIGHT = BASICITEMS.register("reagentsight", () -> new ItemBase());
public static final RegistryObject<Item> REAGENT_BINDING = BASICITEMS.register("reagentbinding", () -> new ItemBase());
public static final RegistryObject<Item> REAGENT_HOLDING = BASICITEMS.register("reagentholding", () -> new ItemBase());
// Tartaric Gems
public static final RegistryObject<Item> PETTY_GEM = ITEMS.register("soulgempetty", () -> new ItemSoulGem("petty", 64));

View file

@ -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<ITextComponent> 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()));
}
}

View file

@ -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"));

View file

@ -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"));
}
}
}

View file

@ -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);

View file

@ -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;
// }
}

View file

@ -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)
{
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);
}
}
}

View file

@ -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;