From 6a937c20477dbafe22603a9c34e41a48eedda972 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Thu, 21 Jul 2016 16:49:12 -0400 Subject: [PATCH] Eliminated some of the "wonkiness" from the Air Sigil by moving its effects to the client side.. Also worked a bit more on the PageAlchemyArray. --- changelog.txt | 5 +++ .../DualAlchemyCircleRenderer.java | 3 +- .../bloodmagic/compat/guideapi/BookUtils.java | 24 +++++++++++-- .../compat/guideapi/book/CategoryAlchemy.java | 10 ++++++ .../guideapi/page/PageAlchemyArray.java | 35 ++++++++++++++----- .../bloodmagic/item/sigil/ItemSigilAir.java | 23 +++++++----- 6 files changed, 78 insertions(+), 22 deletions(-) diff --git a/changelog.txt b/changelog.txt index cb249da9..9e67a7de 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,8 @@ +------------------------------------------------------ +Version 2.0.3-54 +------------------------------------------------------ +- Eliminated some of the "wonkiness" from the Air Sigil + ------------------------------------------------------ Version 2.0.3-53 ------------------------------------------------------ diff --git a/src/main/java/WayofTime/bloodmagic/client/render/alchemyArray/DualAlchemyCircleRenderer.java b/src/main/java/WayofTime/bloodmagic/client/render/alchemyArray/DualAlchemyCircleRenderer.java index 655e4e40..bb7248da 100644 --- a/src/main/java/WayofTime/bloodmagic/client/render/alchemyArray/DualAlchemyCircleRenderer.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/alchemyArray/DualAlchemyCircleRenderer.java @@ -14,7 +14,6 @@ import WayofTime.bloodmagic.tile.TileAlchemyArray; public class DualAlchemyCircleRenderer extends AlchemyCircleRenderer { public float offsetFromFace = -0.9f; - public final ResourceLocation arrayResource; public final ResourceLocation secondaryArrayResource; public DualAlchemyCircleRenderer() @@ -24,7 +23,7 @@ public class DualAlchemyCircleRenderer extends AlchemyCircleRenderer public DualAlchemyCircleRenderer(ResourceLocation arrayResource, ResourceLocation secondaryArrayResource) { - this.arrayResource = arrayResource; + super(arrayResource); this.secondaryArrayResource = secondaryArrayResource; } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java index ea329ab9..ac727c6c 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java @@ -1,11 +1,16 @@ package WayofTime.bloodmagic.compat.guideapi; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; +import net.minecraft.util.ResourceLocation; import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyCircleRenderer; import WayofTime.bloodmagic.api.recipe.ShapedBloodOrbRecipe; import WayofTime.bloodmagic.api.recipe.ShapelessBloodOrbRecipe; import WayofTime.bloodmagic.api.registry.AlchemyArrayRecipeRegistry; +import WayofTime.bloodmagic.client.render.alchemyArray.DualAlchemyCircleRenderer; import WayofTime.bloodmagic.compat.guideapi.page.PageAlchemyArray; import WayofTime.bloodmagic.compat.guideapi.page.recipeRenderer.ShapedBloodOrbRecipeRenderer; import WayofTime.bloodmagic.compat.guideapi.page.recipeRenderer.ShapelessBloodOrbRecipeRenderer; @@ -23,7 +28,13 @@ public class BookUtils ItemStack catalystStack = recipe[1]; AlchemyCircleRenderer renderer = AlchemyArrayRecipeRegistry.getAlchemyCircleRenderer(inputStack, catalystStack); - if (renderer != null) + if (renderer instanceof DualAlchemyCircleRenderer) + { + List resources = new ArrayList(); + resources.add(((DualAlchemyCircleRenderer) renderer).arrayResource); + resources.add(((DualAlchemyCircleRenderer) renderer).secondaryArrayResource); + return new PageAlchemyArray(resources, inputStack, catalystStack); + } else { return new PageAlchemyArray(renderer.arrayResource, inputStack, catalystStack); } @@ -43,7 +54,16 @@ public class BookUtils AlchemyCircleRenderer renderer = AlchemyArrayRecipeRegistry.getAlchemyCircleRenderer(inputStack, catalystStack); if (renderer != null) { - return new PageAlchemyArray(renderer.arrayResource, inputStack, catalystStack, outputStack); + if (renderer instanceof DualAlchemyCircleRenderer) + { + List resources = new ArrayList(); + resources.add(((DualAlchemyCircleRenderer) renderer).arrayResource); + resources.add(((DualAlchemyCircleRenderer) renderer).secondaryArrayResource); + return new PageAlchemyArray(resources, inputStack, catalystStack, outputStack); + } else + { + return new PageAlchemyArray(renderer.arrayResource, inputStack, catalystStack, outputStack); + } } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java index 5748eabd..ae02ff9c 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java @@ -53,6 +53,16 @@ public class CategoryAlchemy speedPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "speed" + ".info"), 370)); entries.put(new ResourceLocation(keyBase + "speed"), new EntryText(speedPages, TextHelper.localize(keyBase + "speed"), true)); + List turretPages = new ArrayList(); + + PageAlchemyArray turretRecipePage = BookUtils.getAlchemyPage("skeletonTurret"); + if (turretRecipePage != null) + { + turretPages.add(turretRecipePage); + } + turretPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "turret" + ".info"), 370)); + entries.put(new ResourceLocation(keyBase + "turret"), new EntryText(turretPages, TextHelper.localize(keyBase + "turret"), true)); + for (Entry entry : entries.entrySet()) { for (IPage page : entry.getValue().pageList) diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAlchemyArray.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAlchemyArray.java index 77f03cca..0c2defc9 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAlchemyArray.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAlchemyArray.java @@ -1,5 +1,9 @@ package WayofTime.bloodmagic.compat.guideapi.page; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import lombok.AllArgsConstructor; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -20,15 +24,25 @@ import amerifrance.guideapi.gui.GuiBase; public class PageAlchemyArray extends Page { public static final double scale = 58d / 256d; - public ResourceLocation arrayResource; + public List arrayResources = new ArrayList(); public final ItemStack inputStack; public final ItemStack catalystStack; public final ItemStack outputStack; - public PageAlchemyArray(ResourceLocation resource, ItemStack inputStack, ItemStack outputStack) + public PageAlchemyArray(List resources, ItemStack inputStack, ItemStack catalystStack) { - this(resource, inputStack, outputStack, null); + this(resources, inputStack, catalystStack, null); + } + + public PageAlchemyArray(ResourceLocation resource, ItemStack inputStack, ItemStack catalystStack, ItemStack outputStack) + { + this(Arrays.asList(resource), inputStack, catalystStack, outputStack); + } + + public PageAlchemyArray(ResourceLocation resource, ItemStack inputStack, ItemStack catalystStack) + { + this(Arrays.asList(resource), inputStack, catalystStack); } @Override @@ -42,13 +56,16 @@ public class PageAlchemyArray extends Page guiBase.drawTexturedModalRect(x, y, 0, 0, 62, 88 + (outputStack == null ? 0 : 26)); guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.BloodMagic.page.alchemyArray"), guiLeft + guiBase.xSize / 2, guiTop + 12, 0); - Minecraft.getMinecraft().getTextureManager().bindTexture(arrayResource); - GlStateManager.pushMatrix(); - GlStateManager.translate(x + 2, y + 28, 0); - GlStateManager.scale(scale, scale, scale); - guiBase.drawTexturedModalRect(0, 0, 0, 0, 256, 256); - GlStateManager.popMatrix(); + for (ResourceLocation arrayResource : arrayResources) + { + Minecraft.getMinecraft().getTextureManager().bindTexture(arrayResource); + GlStateManager.pushMatrix(); + GlStateManager.translate(x + 2, y + 28, 0); + GlStateManager.scale(scale, scale, scale); + guiBase.drawTexturedModalRect(0, 0, 0, 0, 256, 256); + GlStateManager.popMatrix(); + } int inputX = x + 3; int inputY = y + 3; diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java index bfabd1cb..ebe15e3c 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java @@ -14,6 +14,7 @@ import net.minecraft.world.World; import WayofTime.bloodmagic.api.iface.ISentientSwordEffectProvider; import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.registry.ModPotions; public class ItemSigilAir extends ItemSigilBase implements ISentientSwordEffectProvider { @@ -25,28 +26,32 @@ public class ItemSigilAir extends ItemSigilBase implements ISentientSwordEffectP @Override public ActionResult onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) { - if (!world.isRemote && !isUnusable(stack)) + boolean unusable = isUnusable(stack); + if (world.isRemote && !unusable) { Vec3d vec = player.getLookVec(); double wantedVelocity = 1.7; // TODO - Revisit after potions - // if (player.isPotionActive(ModPotions.customPotionBoost)) { - // int amplifier = - // player.getActivePotionEffect(ModPotions.customPotionBoost).getAmplifier(); - // wantedVelocity += (1 + amplifier) * (0.35); - // } + if (player.isPotionActive(ModPotions.boost)) + { + int amplifier = player.getActivePotionEffect(ModPotions.boost).getAmplifier(); + wantedVelocity += (1 + amplifier) * (0.35); + } player.motionX = vec.xCoord * wantedVelocity; player.motionY = vec.yCoord * wantedVelocity; player.motionZ = vec.zCoord * wantedVelocity; - player.velocityChanged = true; world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); + } - player.fallDistance = 0; - + if (!world.isRemote) + { if (!player.capabilities.isCreativeMode) this.setUnusable(stack, !NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed())); + + if (!unusable) + player.fallDistance = 0; } return super.onItemRightClick(stack, world, player, hand);