From 96d94721c4d5b6ebf5dae0cf03e857a3d5361bd4 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 2 Dec 2015 16:02:18 -0800 Subject: [PATCH] Revamp altar to only use EnumAltarComponent - Removes internal references in API - Makes full use of the idea of the API - No more special checks --- .../bloodmagic/altar/BloodAltar.java | 58 ++--------- .../bloodmagic/api/altar/AltarComponent.java | 37 ++----- .../api/altar/EnumAltarComponent.java | 3 +- .../bloodmagic/api/altar/EnumAltarTier.java | 99 +++++++++---------- .../bloodmagic/api/altar/IBloodAltar.java | 2 + .../bloodmagic/item/ItemAltarMaker.java | 16 ++- .../item/sigil/ItemSigilDivination.java | 9 +- .../WayofTime/bloodmagic/tile/TileAltar.java | 3 +- .../java/WayofTime/bloodmagic/util/Utils.java | 17 ++++ 9 files changed, 104 insertions(+), 140 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java index c80eac69..7d492d0c 100644 --- a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java @@ -3,12 +3,7 @@ package WayofTime.bloodmagic.altar; import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.altar.*; import WayofTime.bloodmagic.block.BlockBloodRune; -import WayofTime.bloodmagic.block.BlockBloodStoneBrick; -import WayofTime.bloodmagic.block.BlockCrystal; -import WayofTime.bloodmagic.registry.ModBlocks; -import net.minecraft.block.BlockBeacon; -import net.minecraft.block.BlockGlowstone; -import net.minecraft.init.Blocks; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.util.BlockPos; import net.minecraft.world.World; @@ -42,17 +37,17 @@ public class BloodAltar { BlockPos componentPos = worldPos.add(altarComponent.getOffset()); BlockStack worldBlock = new BlockStack(world.getBlockState(componentPos).getBlock(), world.getBlockState(componentPos).getBlock().getMetaFromState(world.getBlockState(componentPos))); - if (altarComponent.isBloodRune()) { - if (!checkRune(altarComponent, worldBlock)) { + if (altarComponent.getComponent() != EnumAltarComponent.NOTAIR) { + if (worldBlock.getBlock() instanceof IAltarComponent) { + EnumAltarComponent component = ((IAltarComponent) worldBlock.getBlock()).getType(worldBlock.getMeta()); + if (component != altarComponent.getComponent()) + return false; + } else if (worldBlock.getBlock() != Utils.getBlockForComponent(altarComponent.getComponent())) { return false; } - } else if (!altarComponent.isBloodRune()) { - if (world.isAirBlock(componentPos)) return false; - if (((altarComponent.getBlockStack().getBlock() != worldBlock.getBlock()) || (altarComponent.getBlockStack().getMeta() != worldBlock.getMeta()))) { - if (!checkSpecials(altarComponent, worldBlock)) { - return false; - } - } + } else { + if (world.isAirBlock(componentPos)) + return false; } } @@ -117,37 +112,4 @@ public class BloodAltar { return upgrades; } - - private static boolean checkRune(AltarComponent altarComponent, BlockStack blockStack) { - if (altarComponent.getBlockStack().getBlock() == ModBlocks.bloodRune) { - if (blockStack.getBlock() instanceof BlockBloodRune || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.BLOODRUNE))) { - return true; - } - } - return false; - } - - private static boolean checkSpecials(AltarComponent altarComponent, BlockStack blockStack) { - if (altarComponent.getBlockStack().getBlock() == ModBlocks.bloodStoneBrick) - if (blockStack.getBlock() instanceof BlockBloodStoneBrick || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.BLOODSTONE))) - return true; - - if (altarComponent.getBlockStack().getBlock() == ModBlocks.crystal) - if (blockStack.getBlock() instanceof BlockCrystal || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.CRYSTAL))) - return true; - - if (altarComponent.getBlockStack().getBlock() == Blocks.glowstone) - if (blockStack.getBlock() instanceof BlockGlowstone || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.GLOWSTONE))) - return true; - - if (altarComponent.getBlockStack().getBlock() == Blocks.beacon) - if (blockStack.getBlock() instanceof BlockBeacon || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.BEACON))) - return true; - - if (altarComponent.getBlockStack().getBlock() == Blocks.air) - if (blockStack.getBlock() != Blocks.air) - return true; - - return false; - } } diff --git a/src/main/java/WayofTime/bloodmagic/api/altar/AltarComponent.java b/src/main/java/WayofTime/bloodmagic/api/altar/AltarComponent.java index 692eded5..bad9b03c 100644 --- a/src/main/java/WayofTime/bloodmagic/api/altar/AltarComponent.java +++ b/src/main/java/WayofTime/bloodmagic/api/altar/AltarComponent.java @@ -1,9 +1,6 @@ package WayofTime.bloodmagic.api.altar; -import WayofTime.bloodmagic.api.BlockStack; import lombok.Getter; -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; /** @@ -13,24 +10,19 @@ import net.minecraft.util.BlockPos; public class AltarComponent { private BlockPos offset; - private BlockStack blockStack; - private boolean bloodRune; private boolean upgradeSlot; - /** - * @param offset - The position in the world relative to the MasterRitualStone - * @param blockStack - The block and meta combination expected - */ - public AltarComponent(BlockPos offset, BlockStack blockStack) { - this.offset = offset; - this.blockStack = blockStack; - } + private EnumAltarComponent component; /** - * Non-meta based variant for ease of use. + * Sets a component location for the altar. + * + * @param offset - Where the block should be in relation to the Altar + * @param component - The type of Component the location should contain */ - public AltarComponent(BlockPos offset, Block block) { - this(offset, new BlockStack(block)); + public AltarComponent(BlockPos offset, EnumAltarComponent component) { + this.offset = offset; + this.component = component; } /** @@ -38,18 +30,7 @@ public class AltarComponent { * of block does not matter. */ public AltarComponent(BlockPos offset) { - this(offset, new BlockStack(Blocks.air)); - } - - /** - * Sets the location to a Blood Rune. This does not mean that the location - * can be used as an upgrade. - * - * @return the current instance for further use. - */ - public AltarComponent setBloodRune() { - this.bloodRune = true; - return this; + this(offset, EnumAltarComponent.NOTAIR); } /** diff --git a/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarComponent.java b/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarComponent.java index f6a8b176..d7b1a4f8 100644 --- a/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarComponent.java +++ b/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarComponent.java @@ -6,5 +6,6 @@ public enum EnumAltarComponent { BLOODSTONE, BEACON, BLOODRUNE, - CRYSTAL + CRYSTAL, + NOTAIR } diff --git a/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java b/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java index 87da7da5..92ed0991 100644 --- a/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java +++ b/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java @@ -1,9 +1,6 @@ package WayofTime.bloodmagic.api.altar; -import WayofTime.bloodmagic.api.BlockStack; -import WayofTime.bloodmagic.registry.ModBlocks; import lombok.Getter; -import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import java.util.ArrayList; @@ -14,28 +11,28 @@ public enum EnumAltarTier { TWO() { @Override public void buildComponents() { - altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), ModBlocks.bloodRune).setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), ModBlocks.bloodRune).setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), ModBlocks.bloodRune).setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), ModBlocks.bloodRune).setBloodRune()); + altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), EnumAltarComponent.BLOODRUNE)); + altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), EnumAltarComponent.BLOODRUNE)); + altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), EnumAltarComponent.BLOODRUNE)); + altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), EnumAltarComponent.BLOODRUNE)); } }, THREE() { @Override public void buildComponents() { altarComponents.addAll(TWO.getAltarComponents()); - altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); + altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); altarComponents.add(new AltarComponent(new BlockPos(-3, -1, -3))); altarComponents.add(new AltarComponent(new BlockPos(-3, 0, -3))); altarComponents.add(new AltarComponent(new BlockPos(3, -1, -3))); @@ -44,16 +41,16 @@ public enum EnumAltarTier { altarComponents.add(new AltarComponent(new BlockPos(-3, 0, 3))); altarComponents.add(new AltarComponent(new BlockPos(3, -1, 3))); altarComponents.add(new AltarComponent(new BlockPos(3, 0, 3))); - altarComponents.add(new AltarComponent(new BlockPos(-3, 1, -3), Blocks.glowstone)); - altarComponents.add(new AltarComponent(new BlockPos(3, 1, -3), Blocks.glowstone)); - altarComponents.add(new AltarComponent(new BlockPos(-3, 1, 3), Blocks.glowstone)); - altarComponents.add(new AltarComponent(new BlockPos(3, 1, 3), Blocks.glowstone)); + altarComponents.add(new AltarComponent(new BlockPos(-3, 1, -3), EnumAltarComponent.GLOWSTONE)); + altarComponents.add(new AltarComponent(new BlockPos(3, 1, -3), EnumAltarComponent.GLOWSTONE)); + altarComponents.add(new AltarComponent(new BlockPos(-3, 1, 3), EnumAltarComponent.GLOWSTONE)); + altarComponents.add(new AltarComponent(new BlockPos(3, 1, 3), EnumAltarComponent.GLOWSTONE)); for (int i = -2; i <= 2; i++) { - altarComponents.add(new AltarComponent(new BlockPos(3, -2, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-3, -2, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -2, 3), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -2, -3), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); + altarComponents.add(new AltarComponent(new BlockPos(3, -2, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(-3, -2, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -2, 3), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -2, -3), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); } } }, @@ -63,10 +60,10 @@ public enum EnumAltarTier { altarComponents.addAll(THREE.getAltarComponents()); for (int i = -3; i <= 3; i++) { - altarComponents.add(new AltarComponent(new BlockPos(5, -3, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-5, -3, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -3, 5), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -3, -5), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); + altarComponents.add(new AltarComponent(new BlockPos(5, -3, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(-5, -3, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -3, 5), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -3, -5), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); } for (int i = -2; i <= 1; i++) { @@ -76,26 +73,26 @@ public enum EnumAltarTier { altarComponents.add(new AltarComponent(new BlockPos(-5, i, 5))); } - altarComponents.add(new AltarComponent(new BlockPos(5, 2, 5), new BlockStack(ModBlocks.bloodStoneBrick, 1))); - altarComponents.add(new AltarComponent(new BlockPos(5, 2, -5), new BlockStack(ModBlocks.bloodStoneBrick, 1))); - altarComponents.add(new AltarComponent(new BlockPos(-5, 2, -5), new BlockStack(ModBlocks.bloodStoneBrick, 1))); - altarComponents.add(new AltarComponent(new BlockPos(-5, 2, 5), new BlockStack(ModBlocks.bloodStoneBrick, 1))); + altarComponents.add(new AltarComponent(new BlockPos(5, 2, 5), EnumAltarComponent.BLOODSTONE)); + altarComponents.add(new AltarComponent(new BlockPos(5, 2, -5), EnumAltarComponent.BLOODSTONE)); + altarComponents.add(new AltarComponent(new BlockPos(-5, 2, -5), EnumAltarComponent.BLOODSTONE)); + altarComponents.add(new AltarComponent(new BlockPos(-5, 2, 5), EnumAltarComponent.BLOODSTONE)); } }, FIVE() { @Override public void buildComponents() { altarComponents.addAll(FOUR.getAltarComponents()); - altarComponents.add(new AltarComponent(new BlockPos(-8, -3, 8), Blocks.beacon)); - altarComponents.add(new AltarComponent(new BlockPos(-8, -3, -8), Blocks.beacon)); - altarComponents.add(new AltarComponent(new BlockPos(8, -3, -8), Blocks.beacon)); - altarComponents.add(new AltarComponent(new BlockPos(8, -3, 8), Blocks.beacon)); + altarComponents.add(new AltarComponent(new BlockPos(-8, -3, 8), EnumAltarComponent.BEACON)); + altarComponents.add(new AltarComponent(new BlockPos(-8, -3, -8), EnumAltarComponent.BEACON)); + altarComponents.add(new AltarComponent(new BlockPos(8, -3, -8), EnumAltarComponent.BEACON)); + altarComponents.add(new AltarComponent(new BlockPos(8, -3, 8), EnumAltarComponent.BEACON)); for (int i = -6; i <= 6; i++) { - altarComponents.add(new AltarComponent(new BlockPos(8, -4, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-8, -4, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -4, 8), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -4, -8), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); + altarComponents.add(new AltarComponent(new BlockPos(8, -4, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(-8, -4, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -4, 8), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -4, -8), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); } } }, @@ -111,16 +108,16 @@ public enum EnumAltarTier { altarComponents.add(new AltarComponent(new BlockPos(-11, i, 11))); } - altarComponents.add(new AltarComponent(new BlockPos(11, 3, 11), ModBlocks.crystal)); - altarComponents.add(new AltarComponent(new BlockPos(-11, 3, -11), ModBlocks.crystal)); - altarComponents.add(new AltarComponent(new BlockPos(11, 3, -11), ModBlocks.crystal)); - altarComponents.add(new AltarComponent(new BlockPos(-11, 3, 11), ModBlocks.crystal)); + altarComponents.add(new AltarComponent(new BlockPos(11, 3, 11), EnumAltarComponent.CRYSTAL)); + altarComponents.add(new AltarComponent(new BlockPos(-11, 3, -11), EnumAltarComponent.CRYSTAL)); + altarComponents.add(new AltarComponent(new BlockPos(11, 3, -11), EnumAltarComponent.CRYSTAL)); + altarComponents.add(new AltarComponent(new BlockPos(-11, 3, 11), EnumAltarComponent.CRYSTAL)); for (int i = -9; i <= 9; i++) { - altarComponents.add(new AltarComponent(new BlockPos(11, -5, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(-11, -5, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -5, 11), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); - altarComponents.add(new AltarComponent(new BlockPos(i, -5, -11), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune()); + altarComponents.add(new AltarComponent(new BlockPos(11, -5, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(-11, -5, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -5, 11), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); + altarComponents.add(new AltarComponent(new BlockPos(i, -5, -11), EnumAltarComponent.BLOODRUNE).setUpgradeSlot()); } } }; diff --git a/src/main/java/WayofTime/bloodmagic/api/altar/IBloodAltar.java b/src/main/java/WayofTime/bloodmagic/api/altar/IBloodAltar.java index c4e4165a..1d08735f 100644 --- a/src/main/java/WayofTime/bloodmagic/api/altar/IBloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/api/altar/IBloodAltar.java @@ -24,6 +24,8 @@ public interface IBloodAltar { void startCycle(); + void checkTier(); + /** * Will set the altar to initiate a cooldown cycle after it crafts before starting to craft again, giving the user time to interact with the altar. * This can only be set while the altar is not active. diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java index a3713c60..d93c8223 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java @@ -6,13 +6,14 @@ import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.altar.AltarComponent; import WayofTime.bloodmagic.api.altar.EnumAltarTier; import WayofTime.bloodmagic.api.altar.IAltarManipulator; +import WayofTime.bloodmagic.api.altar.IBloodAltar; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.block.BlockAltar; import WayofTime.bloodmagic.util.ChatUtil; +import WayofTime.bloodmagic.util.Utils; import WayofTime.bloodmagic.util.helper.TextHelper; -import net.minecraft.block.state.IBlockState; +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; @@ -91,17 +92,12 @@ public class ItemAltarMaker extends Item implements IAltarManipulator { for (AltarComponent altarComponent : tierToBuild.getAltarComponents()) { BlockPos componentPos = pos.add(altarComponent.getOffset()); - IBlockState blockState = altarComponent.getBlockStack().getBlock().getStateFromMeta(altarComponent.getBlockStack().getMeta()); + Block blockForComponent = Utils.getBlockForComponent(altarComponent.getComponent()); - if (altarComponent.getBlockStack().getBlock().equals(Blocks.air)) - world.setBlockState(componentPos, Blocks.stonebrick.getStateFromMeta(0)); - else - world.setBlockState(componentPos, blockState); - - world.markBlockForUpdate(componentPos); + world.setBlockState(componentPos, blockForComponent.getDefaultState(), 3); } - world.markBlockForUpdate(pos); + ((IBloodAltar) world.getTileEntity(pos)).checkTier(); } public String destroyAltar(EntityPlayer player) { diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java index 84eb3414..329d2cd4 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java @@ -5,6 +5,8 @@ import WayofTime.bloodmagic.api.iface.IAltarReader; import WayofTime.bloodmagic.api.iface.ISigil; import WayofTime.bloodmagic.api.util.helper.BindableHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.tile.TileAltar; import WayofTime.bloodmagic.util.ChatUtil; import WayofTime.bloodmagic.util.helper.TextHelper; import net.minecraft.entity.player.EntityPlayer; @@ -22,6 +24,10 @@ public class ItemSigilDivination extends ItemSigilBase implements ISigil, IAltar @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if (PlayerHelper.isFakePlayer(player)) + return stack; + super.onItemRightClick(stack, world, player); if (!world.isRemote) { @@ -41,8 +47,9 @@ public class ItemSigilDivination extends ItemSigilBase implements ISigil, IAltar int tier = altar.getTier().ordinal() + 1; currentEssence = altar.getCurrentBlood(); int capacity = altar.getCapacity(); - + altar.checkTier(); ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentAltarTier", tier), TextHelper.localize(tooltipBase + "currentEssence", currentEssence), TextHelper.localize(tooltipBase + "currentAltarCapacity", capacity)); + } else { ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentEssence", currentEssence)); } diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java b/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java index d4e4574d..9cda838c 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java @@ -303,7 +303,8 @@ public class TileAltar extends TileInventory implements IBloodAltar, ITickable, getWorld().markBlockForUpdate(pos); } - private void checkTier() { + @Override + public void checkTier() { EnumAltarTier tier = BloodAltar.getAltarTier(getWorld(), getPos()); this.altarTier = tier; diff --git a/src/main/java/WayofTime/bloodmagic/util/Utils.java b/src/main/java/WayofTime/bloodmagic/util/Utils.java index 204ae060..929f7b19 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Utils.java +++ b/src/main/java/WayofTime/bloodmagic/util/Utils.java @@ -1,8 +1,13 @@ package WayofTime.bloodmagic.util; +import WayofTime.bloodmagic.api.altar.EnumAltarComponent; +import WayofTime.bloodmagic.registry.ModBlocks; import WayofTime.bloodmagic.tile.TileInventory; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; public class Utils { @@ -46,4 +51,16 @@ public class Utils { return false; } + + public static Block getBlockForComponent(EnumAltarComponent component) { + switch (component) { + case GLOWSTONE: return Blocks.glowstone; + case BLOODSTONE: return ModBlocks.bloodStoneBrick; + case BEACON: return Blocks.beacon; + case BLOODRUNE: return ModBlocks.bloodRune; + case CRYSTAL: return ModBlocks.crystal; + case NOTAIR: return Blocks.stonebrick; + default: return Blocks.air; + } + } }