diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java index d7bf3dac..49a9a091 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java @@ -85,7 +85,6 @@ public class ItemSacrificialDagger extends Item @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if (PlayerHelper.isFakePlayer(player)) return stack; diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java b/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java index 95356c5c..299b2eb2 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java @@ -11,6 +11,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.BlockPos; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; @@ -22,7 +23,6 @@ import java.util.List; public class ItemTelepositionFocus extends ItemBindable { - public static String[] names = { "weak", "enhanced", "reinforced", "demonic" }; public ItemTelepositionFocus() @@ -53,8 +53,17 @@ public class ItemTelepositionFocus extends ItemBindable public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if (BindableHelper.checkAndSetItemOwner(stack, player)) + { if (player.isSneaking()) - return stack; + { + MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, false); + + if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) + { + setBlockPos(stack, world, mop.getBlockPos()); + } + } + } return stack; } @@ -67,11 +76,15 @@ public class ItemTelepositionFocus extends ItemBindable super.addInformation(stack, player, tooltip, advanced); + stack = NBTHelper.checkNBT(stack); NBTTagCompound tag = stack.getTagCompound(); BlockPos coords = getBlockPos(stack); - tooltip.add(String.format(StatCollector.translateToLocal("tooltip.alchemy.coords"), coords.getX(), coords.getY(), coords.getZ())); - tooltip.add(String.format(StatCollector.translateToLocal("tooltip.alchemy.dimension"), tag.getInteger(Constants.NBT.DIMENSION_ID))); + if (coords != null && tag != null) + { + tooltip.add(String.format(StatCollector.translateToLocal("tooltip.BloodMagic.telepositionFocus.coords"), coords.getX(), coords.getY(), coords.getZ())); + tooltip.add(String.format(StatCollector.translateToLocal("tooltip.BloodMagic.telepositionFocus.dimension"), tag.getInteger(Constants.NBT.DIMENSION_ID))); + } } public World getWorld(ItemStack stack) diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index 7d989a2c..b6489ac2 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -63,6 +63,7 @@ public class ModItems public static Item sigilCompression; public static Item itemComponent; + public static Item telepositionFocus; public static Item bloodShard; @@ -131,6 +132,7 @@ public class ModItems sigilEnderSeverance = registerItem(new ItemSigilEnderSeverance()); itemComponent = registerItem(new ItemComponent()); + telepositionFocus = registerItem(new ItemTelepositionFocus()); bloodShard = registerItem(new ItemBloodShard()); @@ -222,6 +224,8 @@ public class ModItems for (int i = 0; i < ItemComponent.getNames().size(); i++) renderHelper.itemRender(itemComponent, i); + for (int i = 0; i < ItemTelepositionFocus.names.length; i++) + renderHelper.itemRender(telepositionFocus, i); renderHelper.itemRender(bloodShard, 0); renderHelper.itemRender(bloodShard, 1); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java index 12471c16..d9f5ed32 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java @@ -4,10 +4,7 @@ import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry; import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; -import WayofTime.bloodmagic.ritual.RitualGreenGrove; -import WayofTime.bloodmagic.ritual.RitualLava; -import WayofTime.bloodmagic.ritual.RitualTest; -import WayofTime.bloodmagic.ritual.RitualWater; +import WayofTime.bloodmagic.ritual.*; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualNight; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualRain; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualResistance; @@ -15,11 +12,11 @@ import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualZombie; public class ModRituals { - public static Ritual testRitual; public static Ritual waterRitual; public static Ritual lavaRitual; public static Ritual greenGroveRitual; + public static Ritual jumpRitual; public static ImperfectRitual imperfectNight; public static ImperfectRitual imperfectRain; @@ -32,11 +29,13 @@ public class ModRituals waterRitual = new RitualWater(); lavaRitual = new RitualLava(); greenGroveRitual = new RitualGreenGrove(); + jumpRitual = new RitualJumping(); RitualRegistry.registerRitual(testRitual, testRitual.getName()); RitualRegistry.registerRitual(waterRitual, waterRitual.getName()); RitualRegistry.registerRitual(lavaRitual, lavaRitual.getName()); RitualRegistry.registerRitual(greenGroveRitual, greenGroveRitual.getName()); + RitualRegistry.registerRitual(jumpRitual, jumpRitual.getName()); } public static void initImperfectRituals() diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualJumping.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualJumping.java new file mode 100644 index 00000000..6021aaa7 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualJumping.java @@ -0,0 +1,88 @@ +package WayofTime.bloodmagic.ritual; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.network.SoulNetwork; +import WayofTime.bloodmagic.api.ritual.*; +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.network.BloodMagicPacketHandler; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.List; + +public class RitualJumping extends Ritual +{ + public static final String JUMP_RANGE = "jumpRange"; + + public RitualJumping() + { + super("ritualJump", 0, 1000, "ritual." + Constants.Mod.MODID + ".jumpRitual"); + addBlockRange(JUMP_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-1, 1, -1), new BlockPos(1, 2, 1))); + } + + @Override + public void performRitual(IMasterRitualStone masterRitualStone) + { + World world = masterRitualStone.getWorld(); + SoulNetwork network = NetworkHelper.getSoulNetwork(masterRitualStone.getOwner(), world); + int currentEssence = network.getCurrentEssence(); + + if (currentEssence < getRefreshCost()) + return; + + AreaDescriptor jumpRange = getBlockRange(JUMP_RANGE); + List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, jumpRange.getAABB(masterRitualStone.getPos())); + if (entities != null) + { + for (EntityLivingBase entity : entities) + { + if (entity.isSneaking()) + continue; + + double motionY = 1.5; + + if (entity instanceof EntityPlayer && entity instanceof EntityPlayerMP) + { + //TODO Packet handlers if needed +// BloodMagicPacketHandler.INSTANCE.sendTo(); + ((EntityPlayerMP) entity).motionY = motionY; + ((EntityPlayerMP) entity).fallDistance = 0; + } + else + { + entity.motionY = motionY; + entity.fallDistance = 0; + } + } + } + } + + @Override + public int getRefreshTime() + { + return 20; + } + + @Override + public int getRefreshCost() + { + return 5; + } + + @Override + public ArrayList getComponents() + { + ArrayList components = new ArrayList(); + + for (int i = -1; i <= 1; i++) + this.addCornerRunes(components, 1, i, EnumRuneType.AIR); + + return components; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileTeleposer.java b/src/main/java/WayofTime/bloodmagic/tile/TileTeleposer.java new file mode 100644 index 00000000..7cd7ae5a --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/tile/TileTeleposer.java @@ -0,0 +1,5 @@ +package WayofTime.bloodmagic.tile; + +public class TileTeleposer +{ +} diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 6963bf25..2759e18a 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -200,9 +200,15 @@ tooltip.BloodMagic.diviner.totalRune=Total Runes: %d tooltip.BloodMagic.diviner.extraInfo=Press shift for extra info tooltip.BloodMagic.diviner.currentDirection=Current Direction: %s +tooltip.BloodMagic.telepositionFocus.coords=Current coordinates: (%d, %d, %d) +tooltip.BloodMagic.telepositionFocus.dimension=Dimension ID: %d + # Ritual ritual.BloodMagic.testRitual=Test Ritual ritual.BloodMagic.waterRitual=Ritual of the Full Spring +ritual.BloodMagic.lavaRitual=Serenade of the Nether +ritual.BloodMagic.greenGrove=Ritual of the Green Grove +ritual.BloodMagic.jumpRitual=Ritual of the High Jump # Chat chat.BloodMagic.altarMaker.setTier=Set Tier to: %d