diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java b/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java index 8a2d2a81..34bc564f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java @@ -74,7 +74,12 @@ public class ItemRitualDiviner extends Item implements IVariantProvider @Override public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { - if (trySetDisplayedRitual(stack, world, pos) && addRuneToRitual(stack, world, pos, player)) + if (player.isSneaking()) + { + trySetDisplayedRitual(stack, world, pos); + return EnumActionResult.SUCCESS; + } + else if (addRuneToRitual(stack, world, pos, player)) { if (world.isRemote) { @@ -90,7 +95,7 @@ public class ItemRitualDiviner extends Item implements IVariantProvider /** * Adds a single rune to the ritual. - * + * * @param stack * - The Ritual Diviner stack * @param world @@ -99,7 +104,7 @@ public class ItemRitualDiviner extends Item implements IVariantProvider * - Block Position of the MRS. * @param player * - The Player attempting to place the ritual - * + * * @return - True if a rune was successfully added */ public boolean addRuneToRitual(ItemStack stack, World world, BlockPos pos, EntityPlayer player) @@ -126,7 +131,7 @@ public class ItemRitualDiviner extends Item implements IVariantProvider { if (RitualHelper.isRuneType(world, newPos, component.getRuneType())) { - continue; + undisplayHologram(); } else { // Replace existing ritual stone @@ -155,7 +160,8 @@ public class ItemRitualDiviner extends Item implements IVariantProvider return false; } - public boolean trySetDisplayedRitual(ItemStack itemStack, World world, BlockPos pos) + @SideOnly(Side.CLIENT) + public void trySetDisplayedRitual(ItemStack itemStack, World world, BlockPos pos) { TileEntity tile = world.getTileEntity(pos); @@ -167,11 +173,15 @@ public class ItemRitualDiviner extends Item implements IVariantProvider if (ritual != null) { EnumFacing direction = getDirection(itemStack); - return ClientHandler.setRitualHolo(masterRitualStone, ritual, direction, true); + ClientHandler.setRitualHolo(masterRitualStone, ritual, direction, true); } } + } - return true; + @SideOnly(Side.CLIENT) + public void undisplayHologram() + { + ClientHandler.setRitualHoloToNull(); } // TODO: Make this work for any IRitualStone diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java index 832cce1b..11c9b931 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java @@ -3,7 +3,6 @@ package WayofTime.bloodmagic.tile; import java.util.ArrayList; import java.util.List; -import WayofTime.bloodmagic.util.handler.event.ClientHandler; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -132,7 +131,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt String crystalOwner = activationCrystal.getTagCompound().getString(Constants.NBT.OWNER_UUID); // crystalOwner = PlayerHelper.getUUIDFromPlayer(activator).toString(); //Temporary patch job - ClientHandler.setRitualHolo(null, null, EnumFacing.NORTH, false); if (!Strings.isNullOrEmpty(crystalOwner) && ritual != null) { if (activationCrystal.getItem() instanceof ItemActivationCrystal) 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 bb4ef43a..16d84bef 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java @@ -137,10 +137,10 @@ public class ClientHandler if (mrsHoloDisplay) renderRitualStones(mrsHoloTile, event.getPartialTicks()); else - ClientHandler.setRitualHolo(null, null, EnumFacing.NORTH, false); + ClientHandler.setRitualHoloToNull(); } else { - ClientHandler.setRitualHolo(null, null, EnumFacing.NORTH, false); + ClientHandler.setRitualHoloToNull(); } } @@ -149,7 +149,7 @@ public class ClientHandler TileEntity tileEntity = world.getTileEntity(minecraft.objectMouseOver.getBlockPos()); - if (tileEntity instanceof TileMasterRitualStone && player.getHeldItemMainhand() != null && player.getHeldItemMainhand().getItem() instanceof ItemRitualDiviner && !mrsHoloDisplay) + if (tileEntity instanceof TileMasterRitualStone && player.getHeldItemMainhand() != null && player.getHeldItemMainhand().getItem() instanceof ItemRitualDiviner) renderRitualStones(player, event.getPartialTicks()); if (tileEntity instanceof TileMasterRitualStone && player.getHeldItemMainhand() != null && player.getHeldItemMainhand().getItem() instanceof ItemRitualReader) @@ -364,18 +364,20 @@ public class ClientHandler GlStateManager.popMatrix(); } - public static boolean setRitualHolo(TileMasterRitualStone masterRitualStone, Ritual ritual, EnumFacing direction, boolean displayed) + public static void setRitualHolo(TileMasterRitualStone masterRitualStone, Ritual ritual, EnumFacing direction, boolean displayed) { mrsHoloDisplay = displayed; - if (mrsHoloTile != masterRitualStone || mrsHoloRitual != ritual || mrsHoloDirection != direction) - { - mrsHoloTile = masterRitualStone; - mrsHoloRitual = ritual; - mrsHoloDirection = direction; - return false; - } + mrsHoloTile = masterRitualStone; + mrsHoloRitual = ritual; + mrsHoloDirection = direction; + } - return true; + public static void setRitualHoloToNull() + { + mrsHoloDisplay = false; + mrsHoloTile = null; + mrsHoloRitual = null; + mrsHoloDirection = EnumFacing.NORTH; } protected void renderHotbarItem(int x, int y, float partialTicks, EntityPlayer player, @Nullable ItemStack stack)