Move some base classes into the API

Add Javadocs for API classes that didn't already have them

Redo

'nother redo

Another redo

Update ItemSigil.java

Last one, I swear

Fix
This commit is contained in:
Arcaratus 2016-03-22 21:10:05 -04:00
parent 6a40dbab0a
commit 0383f0fb31
41 changed files with 331 additions and 343 deletions

View file

@ -1,5 +1,9 @@
package WayofTime.bloodmagic.api.altar;
/**
* List of different components used to construct
* different tiers of altars.
*/
public enum EnumAltarComponent
{
GLOWSTONE,

View file

@ -14,10 +14,16 @@ public class BoundToolEvent extends Event
this.player = player;
}
/**
* This event is called when a {@link WayofTime.bloodmagic.item.ItemBoundTool}
* is being charged.
*
* If canceled, will result in the charging being canceled.
*/
@Cancelable
public static class Charge extends BoundToolEvent
{
public ItemStack result;
public Charge(EntityPlayer player, ItemStack result)
@ -27,10 +33,16 @@ public class BoundToolEvent extends Event
}
}
/**
* This event is called when a {@link WayofTime.bloodmagic.item.ItemBoundTool}'s
* charge is released.
*
* If canceled, will result in the charge not being released.
*/
@Cancelable
public static class Release extends BoundToolEvent
{
public final ItemStack boundTool;
public int charge;

View file

@ -12,6 +12,18 @@ public class ItemBindEvent extends Event
public String key;
public ItemStack itemStack;
/**
* This event is called whenever a player attempts to bind a {@link WayofTime.bloodmagic.api.iface.IBindable} item.
*
* @param player
* The player doing the binding
* @param key
* The UUID of the player doing the binding
* @param itemStack
* The {@link ItemStack} that the player is binding
*
* This event is {@link Cancelable}.<br>
*/
public ItemBindEvent(EntityPlayer player, String key, ItemStack itemStack)
{
super();

View file

@ -55,7 +55,6 @@ public class RitualEvent extends Event
@Cancelable
public static class RitualRunEvent extends RitualEvent
{
public RitualRunEvent(IMasterRitualStone mrs, String owner, Ritual ritual)
{
super(mrs, owner, ritual);

View file

@ -1,6 +1,7 @@
package WayofTime.bloodmagic.api.event;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.eventhandler.Cancelable;
import net.minecraftforge.fml.common.eventhandler.Event;
@ -13,6 +14,23 @@ public class SacrificeKnifeUsedEvent extends Event
public boolean shouldDrainHealth;
public boolean shouldFillAltar;
/**
* This event is called whenever a player attempts to use a {@link WayofTime.bloodmagic.item.ItemSacrificialDagger}
* to self-sacrifice near an altar.
*
* @param player
* The player doing the sacrificing
* @param shouldDrainHealth
* Determines whether or not health is lost
* @param shouldFillAltar
* Determines whether or not an altar should be filled
* @param hp
* Amount of health lost
* @param lpAdded
* Amount of LP added to the altar
*
* This event is {@link Cancelable}.<br>
*/
public SacrificeKnifeUsedEvent(EntityPlayer player, boolean shouldDrainHealth, boolean shouldFillAltar, int hp, int lpAdded)
{
this.player = player;

View file

@ -5,21 +5,32 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.eventhandler.Cancelable;
import net.minecraftforge.fml.common.eventhandler.Event;
/**
* Base event class for Soul Network related events.
*
* {@link #ownerUUID} contains the owner's UUID
* {@link #syphon} contains the amount of LP to be drained
*/
public class SoulNetworkEvent extends Event
{
public final String ownerName;
public final String ownerUUID;
public int syphon;
public SoulNetworkEvent(String ownerName, int syphon)
public SoulNetworkEvent(String ownerUUID, int syphon)
{
this.ownerName = ownerName;
this.ownerUUID = ownerUUID;
this.syphon = syphon;
}
/**
* This event is called when an {@link WayofTime.bloodmagic.api.impl.ItemBindable}
* is being drained inside of a {@link net.minecraft.tileentity.TileEntity}.
*
* If canceled, the drain will not be executed.
*/
@Cancelable
public static class ItemDrainInContainerEvent extends SoulNetworkEvent
{
public ItemStack stack;
public ItemDrainInContainerEvent(ItemStack stack, String ownerName, int syphon)
@ -29,10 +40,15 @@ public class SoulNetworkEvent extends Event
}
}
/**
* This event is called when a {@link EntityPlayer}
* drains the Soul Network
*
* If canceled, the drain will not be executed.
*/
@Cancelable
public static class PlayerDrainNetworkEvent extends SoulNetworkEvent
{
public final EntityPlayer player;
// If true, will damage regardless of if the network had enough inside it
public boolean shouldDamage;
@ -48,7 +64,6 @@ public class SoulNetworkEvent extends Event
@Cancelable
public static class ItemDrainNetworkEvent extends PlayerDrainNetworkEvent
{
public final ItemStack itemStack;
/**
* Amount of damage that would incur if the network could not drain

View file

@ -1,5 +1,9 @@
package WayofTime.bloodmagic.api.iface;
/**
* Any item that implements this interface will not be pulled into the Altar on
* right click.
*/
public interface IAltarReader
{

View file

@ -1,5 +1,9 @@
package WayofTime.bloodmagic.api.iface;
/**
* Used for all {@link WayofTime.bloodmagic.api.impl.ItemSigil}
* <b>EXCEPT</b> Sigils of Holdings.
*/
public interface ISigil
{
}

View file

@ -0,0 +1,41 @@
package WayofTime.bloodmagic.api.impl;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.iface.IBindable;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
/**
* Base class for all bindable items.
*/
public class ItemBindable extends Item implements IBindable
{
public ItemBindable()
{
super();
setMaxStackSize(1);
}
// IBindable
@Override
public boolean onBind(EntityPlayer player, ItemStack stack)
{
return true;
}
@Override
public String getOwnerName(ItemStack stack)
{
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getString(Constants.NBT.OWNER_NAME) : null;
}
@Override
public String getOwnerUUID(ItemStack stack)
{
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getString(Constants.NBT.OWNER_UUID) : null;
}
}

View file

@ -0,0 +1,38 @@
package WayofTime.bloodmagic.api.impl;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.iface.ISigil;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
import lombok.Getter;
import net.minecraft.item.ItemStack;
/**
* Base class for all (static) sigils.
*/
public class ItemSigil extends ItemBindable implements ISigil
{
@Getter
private int lpUsed;
public ItemSigil(int lpUsed)
{
super();
this.lpUsed = lpUsed;
}
public boolean isUnusable(ItemStack stack)
{
NBTHelper.checkNBT(stack);
return stack.getTagCompound().getBoolean(Constants.NBT.UNUSABLE);
}
public ItemStack setUnusable(ItemStack stack, boolean unusable)
{
NBTHelper.checkNBT(stack);
stack.getTagCompound().setBoolean(Constants.NBT.UNUSABLE, unusable);
return stack;
}
}

View file

@ -1,8 +1,7 @@
package WayofTime.bloodmagic.item.sigil;
import java.util.ArrayList;
import java.util.List;
package WayofTime.bloodmagic.api.impl;
import WayofTime.bloodmagic.api.iface.IActivatable;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
@ -13,32 +12,36 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import WayofTime.bloodmagic.item.ItemBindable;
import WayofTime.bloodmagic.util.helper.TextHelper;
public class ItemSigilToggleable extends ItemSigilBase
/**
* Base class for all toggleable sigils.
*/
public class ItemSigilToggleable extends ItemSigil implements IActivatable
{
public ItemSigilToggleable(String name, int lpUsed)
private boolean toggleable;
public ItemSigilToggleable(int lpUsed)
{
super(name, lpUsed);
super(lpUsed);
setToggleable();
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
public void setToggleable()
{
super.addInformation(stack, player, tooltip, advanced);
if (getActivated(stack))
tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated"));
else
tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated"));
this.toggleable = true;
}
public boolean getActivated(ItemStack stack)
{
return stack.getItemDamage() > 0;
}
public ItemStack setActivatedState(ItemStack stack, boolean activated)
{
if (this.toggleable)
stack.setItemDamage(activated ? 1 : 0);
return stack;
}
@Override
@ -47,8 +50,8 @@ public class ItemSigilToggleable extends ItemSigilBase
if (!world.isRemote && !isUnusable(stack))
{
if (player.isSneaking())
setActivated(stack, !getActivated(stack));
if (getActivated(stack) && ItemBindable.syphonNetwork(stack, player, getLPUsed()))
setActivatedState(stack, !getActivated(stack));
if (getActivated(stack) && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
return super.onItemRightClick(stack, world, player, hand);
}
@ -58,7 +61,7 @@ public class ItemSigilToggleable extends ItemSigilBase
@Override
public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ)
{
return (ItemBindable.syphonNetwork(stack, player, getLPUsed()) && onSigilUse(stack, player, world, pos, side, hitX, hitY, hitZ)) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
return (NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()) && onSigilUse(stack, player, world, pos, side, hitX, hitY, hitZ)) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
}
public boolean onSigilUse(ItemStack itemStack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
@ -73,9 +76,9 @@ public class ItemSigilToggleable extends ItemSigilBase
{
if (worldIn.getWorldTime() % 100 == 0)
{
if (!ItemBindable.syphonNetwork(stack, (EntityPlayer) entityIn, getLPUsed()))
if (!NetworkHelper.getSoulNetwork((EntityPlayerMP) entityIn).syphonAndDamage((EntityPlayer) entityIn, getLpUsed()))
{
setActivated(stack, false);
setActivatedState(stack, false);
}
}
@ -86,13 +89,4 @@ public class ItemSigilToggleable extends ItemSigilBase
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
}
@Override
public List<Pair<Integer, String>> getVariants()
{
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "active=false"));
ret.add(new ImmutablePair<Integer, String>(1, "active=true"));
return ret;
}
}

View file

@ -10,7 +10,6 @@ import WayofTime.bloodmagic.api.registry.OrbRegistry;
import com.google.common.base.Strings;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.MinecraftForge;
@ -223,7 +222,7 @@ public class NetworkHelper
if (MinecraftForge.EVENT_BUS.post(event))
return false;
int drainAmount = syphonFromNetwork(event.ownerName, event.syphon);
int drainAmount = syphonFromNetwork(event.ownerUUID, event.syphon);
if (drainAmount == 0 || event.shouldDamage)
hurtPlayer(player, event.syphon);
@ -254,7 +253,7 @@ public class NetworkHelper
if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY)
return false;
return syphonFromNetwork(event.ownerName, event.syphon) >= syphon;
return syphonFromNetwork(event.ownerUUID, event.syphon) >= syphon;
}
@Deprecated

View file

@ -6,6 +6,5 @@ import java.util.List;
public interface IVariantProvider
{
List<Pair<Integer, String>> getVariants();
}

View file

@ -15,7 +15,7 @@ import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.List;
public class ItemActivationCrystal extends ItemBindable implements IVariantProvider
public class ItemActivationCrystal extends ItemBindableBase implements IVariantProvider
{
public static String[] names = { "weak", "awakened", "creative" };
@ -26,7 +26,6 @@ public class ItemActivationCrystal extends ItemBindable implements IVariantProvi
setUnlocalizedName(Constants.Mod.MODID + ".activationCrystal.");
setRegistryName(Constants.BloodMagicItem.ACTIVATION_CRYSTAL.getRegName());
setHasSubtypes(true);
setLPUsed(100);
}
@Override

View file

@ -1,190 +0,0 @@
package WayofTime.bloodmagic.item;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.SoundCategory;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.iface.IBindable;
import WayofTime.bloodmagic.api.network.SoulNetwork;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.util.helper.TextHelper;
import com.google.common.base.Strings;
public class ItemBindable extends Item implements IBindable
{
private int lpUsed;
public ItemBindable()
{
super();
setCreativeTab(BloodMagic.tabBloodMagic);
setMaxStackSize(1);
}
/**
* Syphons from the owner's network if possible - if not enough LP is found,
* it will instead take the LP from the holder of the item.
*
* @param stack
* - The ItemStack to syphon from
* @param player
* - The Player using the item
* @param lpUsed
* - The amount of LP to syphon
*
* @return Whether syphoning was successful or not
*/
public static boolean syphonNetwork(ItemStack stack, EntityPlayer player, int lpUsed)
{
if (player == null)
return false;
if (!player.worldObj.isRemote)
{
if (stack != null && stack.getItem() instanceof IBindable)
{
IBindable itemBindable = (IBindable) stack.getItem();
String owner = itemBindable.getOwnerUUID(stack);
if (Strings.isNullOrEmpty(owner))
return false;
SoulNetwork network = NetworkHelper.getSoulNetwork(owner);
return NetworkHelper.syphonAndDamage(network, player, lpUsed);
}
} else
{
// SpellHelper.sendIndexedParticleToAllAround(player.worldObj, posX,posY, posZ, 20, player.worldObj.provider.getDimensionId(), 4, posX, posY, posZ);
player.worldObj.playSound((EntityPlayer) null, player.posX, player.posY, player.posZ, SoundEvents.block_fire_extinguish, SoundCategory.BLOCKS, 0.5F, 2.6F + (player.worldObj.rand.nextFloat() - player.worldObj.rand.nextFloat()) * 0.8F);
}
return true;
}
/**
* This method is to be used for when you want to drain from a network
* without an online player. This will not take health from the owner if it
* fails to find sufficient LP.
*
* @param stack
* - The ItemStack to syphon from.
* @param lpUsed
* - The amount of LP to syphon
*
* @return - If syphoning was successful or not
*/
public static boolean syphonNetwork(ItemStack stack, int lpUsed)
{
if (stack.getItem() instanceof IBindable)
{
IBindable bindable = (IBindable) stack.getItem();
return !Strings.isNullOrEmpty(bindable.getOwnerUUID(stack)) && NetworkHelper.syphonFromContainer(stack, lpUsed);
}
return false;
}
public static boolean canSyphonFromNetwork(ItemStack stack, int lpRequested)
{
if (stack.getItem() instanceof IBindable)
{
IBindable bindable = (IBindable) stack.getItem();
return !Strings.isNullOrEmpty(bindable.getOwnerUUID(stack)) && NetworkHelper.canSyphonFromContainer(stack, lpRequested);
}
return false;
}
public static void hurtPlayer(EntityPlayer user, int lpSyphoned)
{
if (user != null)
{
if (lpSyphoned < 100 && lpSyphoned > 0)
{
if (!user.capabilities.isCreativeMode)
{
user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate an attack
user.setHealth(user.getHealth() - 1);
if (user.getHealth() <= 0.0005f)
user.onDeath(BloodMagicAPI.getDamageSource());
}
} else if (lpSyphoned >= 100)
{
if (!user.capabilities.isCreativeMode)
{
for (int i = 0; i < ((lpSyphoned + 99) / 100); i++)
{
user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate an attack
user.setHealth(user.getHealth() - 1);
if (user.getHealth() <= 0.0005f)
{
user.onDeath(BloodMagicAPI.getDamageSource());
break;
}
}
}
}
}
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
NBTHelper.checkNBT(stack);
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
}
public int getLPUsed()
{
return this.lpUsed;
}
protected void setLPUsed(int lpUsed)
{
this.lpUsed = lpUsed;
}
public String getBindableOwner(ItemStack stack)
{
stack = NBTHelper.checkNBT(stack);
return stack.getTagCompound().getString(Constants.NBT.OWNER_UUID);
}
// IBindable
@Override
public boolean onBind(EntityPlayer player, ItemStack stack)
{
return true;
}
@Override
public String getOwnerName(ItemStack stack)
{
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getString(Constants.NBT.OWNER_NAME) : null;
}
@Override
public String getOwnerUUID(ItemStack stack)
{
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getString(Constants.NBT.OWNER_UUID) : null;
}
}

View file

@ -0,0 +1,35 @@
package WayofTime.bloodmagic.item;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.impl.ItemBindable;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.util.helper.TextHelper;
import com.google.common.base.Strings;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemBindableBase extends ItemBindable
{
public ItemBindableBase()
{
super();
setCreativeTab(BloodMagic.tabBloodMagic);
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
NBTHelper.checkNBT(stack);
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
}
}

View file

@ -24,7 +24,7 @@ import WayofTime.bloodmagic.util.helper.TextHelper;
import com.google.common.base.Strings;
public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable
public class ItemBloodOrb extends ItemBindableBase implements IBloodOrb, IBindable
{
public ItemBloodOrb()
{
@ -51,12 +51,9 @@ public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand)
{
if (world == null)
return super.onItemRightClick(stack, world, player, hand);
return super.onItemRightClick(stack, null, player, hand);
double posX = player.posX;
double posY = player.posY;
double posZ = player.posZ;
world.playSound((EntityPlayer) 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);
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);
// SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ,
// 20, world.provider.getDimensionId(), 4, posX, posY, posZ);
@ -78,7 +75,7 @@ public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable
NetworkHelper.setMaxOrb(NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)), getOrbLevel(stack.getItemDamage()));
NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)).addLifeEssence(200, getMaxEssence(stack.getItemDamage()));
hurtPlayer(player, 200);
NetworkHelper.getSoulNetwork(player).hurtPlayer(player, 200);
return super.onItemRightClick(stack, world, player, hand);
}

View file

@ -60,10 +60,7 @@ public class ItemDaggerOfSacrifice extends Item implements IVariantProvider
if (findAndFillAltar(attacker.worldObj, target, lifeEssence))
{
double posX = target.posX;
double posY = target.posY;
double posZ = target.posZ;
target.worldObj.playSound((EntityPlayer) null, target.posX, target.posY, target.posZ, SoundEvents.block_fire_extinguish, SoundCategory.BLOCKS, 0.5F, 2.6F + (target.worldObj.rand.nextFloat() - target.worldObj.rand.nextFloat()) * 0.8F);
target.worldObj.playSound(null, target.posX, target.posY, target.posZ, SoundEvents.block_fire_extinguish, SoundCategory.BLOCKS, 0.5F, 2.6F + (target.worldObj.rand.nextFloat() - target.worldObj.rand.nextFloat()) * 0.8F);
target.setHealth(-1);
target.onDeath(new DamageSourceBloodMagic());
}

View file

@ -27,7 +27,7 @@ import WayofTime.bloodmagic.block.BlockRitualStone;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.util.helper.TextHelper;
public class ItemInscriptionTool extends ItemBindable implements IVariantProvider
public class ItemInscriptionTool extends ItemBindableBase implements IVariantProvider
{
public ItemInscriptionTool()
{
@ -36,7 +36,6 @@ public class ItemInscriptionTool extends ItemBindable implements IVariantProvide
setUnlocalizedName(Constants.Mod.MODID + ".scribe.");
setRegistryName(Constants.BloodMagicItem.INSCRIPTION_TOOL.getRegName());
setHasSubtypes(true);
setLPUsed(100);
}
@Override

View file

@ -3,6 +3,7 @@ package WayofTime.bloodmagic.item;
import java.util.ArrayList;
import java.util.List;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.item.Item;
@ -19,20 +20,19 @@ import WayofTime.bloodmagic.client.IVariantProvider;
import com.google.common.base.Strings;
public class ItemLavaCrystal extends ItemBindable implements IFuelHandler, IVariantProvider
public class ItemLavaCrystal extends ItemBindableBase implements IFuelHandler, IVariantProvider
{
public ItemLavaCrystal()
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".lavaCrystal");
setRegistryName(Constants.BloodMagicItem.LAVA_CRYSTAL.getRegName());
setLPUsed(25);
}
@Override
public ItemStack getContainerItem(ItemStack itemStack)
{
syphonNetwork(itemStack, getLPUsed());
NetworkHelper.getSoulNetwork(this.getOwnerName(itemStack)).syphon(25);
ItemStack copiedStack = itemStack.copy();
copiedStack.setItemDamage(copiedStack.getItemDamage());
copiedStack.stackSize = 1;
@ -63,14 +63,14 @@ public class ItemLavaCrystal extends ItemBindable implements IFuelHandler, IVari
// return 200;
// }
if (canSyphonFromNetwork(fuel, getLPUsed()))
if (NetworkHelper.canSyphonFromContainer(fuel, 25))
{
return 200;
} else
{
if (!Strings.isNullOrEmpty(getBindableOwner(fuel)))
if (!Strings.isNullOrEmpty(this.getOwnerUUID(fuel)))
{
EntityPlayer player = PlayerHelper.getPlayerFromUUID(getBindableOwner(fuel));
EntityPlayer player = PlayerHelper.getPlayerFromUUID(this.getOwnerUUID(fuel));
if (player != null)
{
player.addPotionEffect(new PotionEffect(MobEffects.confusion, 99));

View file

@ -146,7 +146,7 @@ public class ItemSacrificialDagger extends Item implements IVariantProvider
double posX = player.posX;
double posY = player.posY;
double posZ = player.posZ;
world.playSound((EntityPlayer) 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);
world.playSound(null, posX, posY, posZ, SoundEvents.block_fire_extinguish, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F);
for (int l = 0; l < 8; ++l)
world.spawnParticle(EnumParticleTypes.REDSTONE, posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), 0, 0, 0);

View file

@ -26,7 +26,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ItemTelepositionFocus extends ItemBindable implements IVariantProvider
public class ItemTelepositionFocus extends ItemBindableBase implements IVariantProvider
{
public static String[] names = { "weak", "enhanced", "reinforced", "demonic" };

View file

@ -1,5 +1,6 @@
package WayofTime.bloodmagic.item.sigil;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack;
@ -37,12 +38,12 @@ public class ItemSigilAir extends ItemSigilBase
player.motionY = vec.yCoord * wantedVelocity;
player.motionZ = vec.zCoord * wantedVelocity;
player.velocityChanged = true;
world.playSound((EntityPlayer) 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);
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 (!player.capabilities.isCreativeMode)
this.setUnusable(stack, !syphonNetwork(stack, player, getLPUsed()));
this.setUnusable(stack, !NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()));
}
return super.onItemRightClick(stack, world, player, hand);

View file

@ -4,12 +4,10 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import WayofTime.bloodmagic.api.impl.ItemSigil;
import lombok.Getter;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@ -17,25 +15,20 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.iface.ISigil;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.item.ItemBindable;
import WayofTime.bloodmagic.util.helper.TextHelper;
@Getter
public class ItemSigilBase extends ItemBindable implements ISigil, IVariantProvider
public class ItemSigilBase extends ItemSigil implements IVariantProvider
{
protected final String tooltipBase;
private final String name;
private boolean toggleable;
public ItemSigilBase(String name, int lpUsed)
{
super();
super(lpUsed);
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
setLPUsed(lpUsed);
this.name = name;
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
@ -46,12 +39,6 @@ public class ItemSigilBase extends ItemBindable implements ISigil, IVariantProvi
this(name, 0);
}
@Override
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand)
{
return super.onItemRightClick(stack, world, player, hand);
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
@ -69,37 +56,4 @@ public class ItemSigilBase extends ItemBindable implements ISigil, IVariantProvi
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
return ret;
}
public void setToggleable()
{
this.toggleable = true;
}
public boolean isUnusable(ItemStack stack)
{
NBTHelper.checkNBT(stack);
return stack.getTagCompound().getBoolean(Constants.NBT.UNUSABLE);
}
public ItemStack setUnusable(ItemStack stack, boolean unusable)
{
NBTHelper.checkNBT(stack);
stack.getTagCompound().setBoolean(Constants.NBT.UNUSABLE, unusable);
return stack;
}
public boolean getActivated(ItemStack stack)
{
return stack.getItemDamage() > 0;
}
public ItemStack setActivated(ItemStack stack, boolean activated)
{
if (this.toggleable)
stack.setItemDamage(activated ? 1 : 0);
return stack;
}
}

View file

@ -45,7 +45,7 @@ public class ItemSigilBloodLight extends ItemSigilBase
{
world.setBlockState(blockPos, ModBlocks.bloodLight.getDefaultState());
if (!world.isRemote)
NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player), player, getLPUsed());
NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player), player, getLpUsed());
resetCooldown(stack);
player.swingArm(hand);
return super.onItemRightClick(stack, world, player, hand);
@ -55,7 +55,7 @@ public class ItemSigilBloodLight extends ItemSigilBase
if (!world.isRemote)
{
world.spawnEntityInWorld(new EntityBloodLight(world, player));
NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player), player, getLPUsed());
NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player), player, getLpUsed());
}
resetCooldown(stack);
}

View file

@ -7,7 +7,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class ItemSigilCompression extends ItemSigilToggleable
public class ItemSigilCompression extends ItemSigilToggleableBase
{
public ItemSigilCompression()
{

View file

@ -7,7 +7,7 @@ import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
import WayofTime.bloodmagic.api.Constants;
public class ItemSigilElementalAffinity extends ItemSigilToggleable
public class ItemSigilElementalAffinity extends ItemSigilToggleableBase
{
public ItemSigilElementalAffinity()
{

View file

@ -11,7 +11,7 @@ import net.minecraft.world.World;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.registry.ModPotions;
public class ItemSigilEnderSeverance extends ItemSigilToggleable
public class ItemSigilEnderSeverance extends ItemSigilToggleableBase
{
public ItemSigilEnderSeverance()
{

View file

@ -7,7 +7,7 @@ import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
import WayofTime.bloodmagic.api.Constants;
public class ItemSigilFastMiner extends ItemSigilToggleable
public class ItemSigilFastMiner extends ItemSigilToggleableBase
{
public ItemSigilFastMiner()
{

View file

@ -12,7 +12,7 @@ import net.minecraftforge.common.IPlantable;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.Constants;
public class ItemSigilGreenGrove extends ItemSigilToggleable
public class ItemSigilGreenGrove extends ItemSigilToggleableBase
{
public ItemSigilGreenGrove()
{

View file

@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
public class ItemSigilHaste extends ItemSigilToggleable
public class ItemSigilHaste extends ItemSigilToggleableBase
{
public ItemSigilHaste()
{

View file

@ -1,5 +1,6 @@
package WayofTime.bloodmagic.item.sigil;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
@ -60,7 +61,7 @@ public class ItemSigilLava extends ItemSigilBase
return super.onItemRightClick(stack, world, player, hand);
}
if (this.canPlaceLava(world, blockpos1) && syphonNetwork(stack, player, getLPUsed()) && this.tryPlaceLava(world, blockpos1))
if (this.canPlaceLava(world, blockpos1) && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()) && this.tryPlaceLava(world, blockpos1))
{
return super.onItemRightClick(stack, world, player, hand);
}
@ -89,7 +90,7 @@ public class ItemSigilLava extends ItemSigilBase
FluidStack fluid = new FluidStack(FluidRegistry.LAVA, 1000);
int amount = ((IFluidHandler) tile).fill(side, fluid, false);
if (amount > 0 && syphonNetwork(stack, player, getLPUsed()))
if (amount > 0 && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
{
((IFluidHandler) tile).fill(side, fluid, true);
}
@ -107,7 +108,7 @@ public class ItemSigilLava extends ItemSigilBase
return EnumActionResult.FAIL;
}
if (this.canPlaceLava(world, newPos) && syphonNetwork(stack, player, getLPUsed()))
if (this.canPlaceLava(world, newPos) && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
{
return this.tryPlaceLava(world, newPos) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
}

View file

@ -10,7 +10,7 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World;
import WayofTime.bloodmagic.api.Constants;
public class ItemSigilMagnetism extends ItemSigilToggleable
public class ItemSigilMagnetism extends ItemSigilToggleableBase
{
public ItemSigilMagnetism()
{

View file

@ -7,7 +7,7 @@ import net.minecraft.world.World;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.registry.ModBlocks;
public class ItemSigilPhantomBridge extends ItemSigilToggleable
public class ItemSigilPhantomBridge extends ItemSigilToggleableBase
{
public ItemSigilPhantomBridge()
{

View file

@ -10,7 +10,7 @@ import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.tile.TileSpectralBlock;
import WayofTime.bloodmagic.util.Utils;
public class ItemSigilSuppression extends ItemSigilToggleable
public class ItemSigilSuppression extends ItemSigilToggleableBase
{
public ItemSigilSuppression()
{

View file

@ -0,0 +1,54 @@
package WayofTime.bloodmagic.item.sigil;
import java.util.ArrayList;
import java.util.List;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.impl.ItemSigilToggleable;
import WayofTime.bloodmagic.client.IVariantProvider;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import WayofTime.bloodmagic.util.helper.TextHelper;
public class ItemSigilToggleableBase extends ItemSigilToggleable implements IVariantProvider
{
protected final String tooltipBase;
private final String name;
public ItemSigilToggleableBase(String name, int lpUsed)
{
super(lpUsed);
setToggleable();
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
this.name = name;
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
super.addInformation(stack, player, tooltip, advanced);
if (getActivated(stack))
tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated"));
else
tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated"));
}
@Override
public List<Pair<Integer, String>> getVariants()
{
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "active=false"));
ret.add(new ImmutablePair<Integer, String>(1, "active=true"));
return ret;
}
}

View file

@ -2,6 +2,7 @@ package WayofTime.bloodmagic.item.sigil;
import java.util.List;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.effect.EntityLightningBolt;
@ -73,7 +74,7 @@ public class ItemSigilTransposition extends ItemSigilBase
{
if (rightClickedBlock.getBlock().getPlayerRelativeBlockHardness(state, player, world, blockPos) >= 0 && rightClickedBlock.getBlock().getBlockHardness(state, world, blockPos) >= 0)
{
int cost = getLPUsed();
int cost = getLpUsed();
NBTTagCompound tileNBTTag = new NBTTagCompound();
String blockName = rightClickedBlock.getBlock().getRegistryName();
@ -94,7 +95,7 @@ public class ItemSigilTransposition extends ItemSigilBase
stack.getTagCompound().setByte(Constants.NBT.CONTAINED_BLOCK_META, metadata);
stack.getTagCompound().setTag(Constants.NBT.CONTAINED_TILE_ENTITY, tileNBTTag);
syphonNetwork(stack, player, cost);
NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, cost);
lightning(world, blockPos);
world.removeTileEntity(blockPos);

View file

@ -1,5 +1,6 @@
package WayofTime.bloodmagic.item.sigil;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@ -56,7 +57,7 @@ public class ItemSigilVoid extends ItemSigilBase
return super.onItemRightClick(stack, world, player, hand);
}
if (world.getBlockState(blockpos).getBlock().getMaterial(world.getBlockState(blockpos)).isLiquid() && syphonNetwork(stack, player, getLPUsed()))
if (world.getBlockState(blockpos).getBlock().getMaterial(world.getBlockState(blockpos)).isLiquid() && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
{
world.setBlockToAir(blockpos);
return super.onItemRightClick(stack, world, player, hand);
@ -68,7 +69,7 @@ public class ItemSigilVoid extends ItemSigilBase
}
if (!player.capabilities.isCreativeMode)
this.setUnusable(stack, !syphonNetwork(stack, player, getLPUsed()));
this.setUnusable(stack, !NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()));
}
return super.onItemRightClick(stack, world, player, hand);
@ -92,7 +93,7 @@ public class ItemSigilVoid extends ItemSigilBase
{
FluidStack amount = ((IFluidHandler) tile).drain(side, 1000, false);
if (amount != null && amount.amount > 0 && syphonNetwork(stack, player, getLPUsed()))
if (amount != null && amount.amount > 0 && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
{
((IFluidHandler) tile).drain(side, 1000, true);
return EnumActionResult.SUCCESS;
@ -108,7 +109,7 @@ public class ItemSigilVoid extends ItemSigilBase
return EnumActionResult.FAIL;
}
if (world.getBlockState(newPos).getBlock() instanceof IFluidBlock && syphonNetwork(stack, player, getLPUsed()))
if (world.getBlockState(newPos).getBlock() instanceof IFluidBlock && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
{
world.setBlockToAir(newPos);
return EnumActionResult.SUCCESS;

View file

@ -1,5 +1,6 @@
package WayofTime.bloodmagic.item.sigil;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.block.BlockCauldron;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
@ -57,7 +58,7 @@ public class ItemSigilWater extends ItemSigilBase
if (!player.canPlayerEdit(blockpos1, movingobjectposition.sideHit, stack))
return super.onItemRightClick(stack, world, player, hand);
if (this.canPlaceWater(world, blockpos1) && syphonNetwork(stack, player, getLPUsed()) && this.tryPlaceWater(world, blockpos1))
if (this.canPlaceWater(world, blockpos1) && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()) && this.tryPlaceWater(world, blockpos1))
return super.onItemRightClick(stack, world, player, hand);
}
}
@ -81,19 +82,19 @@ public class ItemSigilWater extends ItemSigilBase
FluidStack fluid = new FluidStack(FluidRegistry.WATER, 1000);
int amount = ((IFluidHandler) tile).fill(side, fluid, false);
if (amount > 0 && syphonNetwork(stack, player, getLPUsed()))
if (amount > 0 && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
((IFluidHandler) tile).fill(side, fluid, true);
return EnumActionResult.FAIL;
}
if (world.getBlockState(blockPos).getBlock() == Blocks.cauldron && syphonNetwork(stack, player, getLPUsed()))
if (world.getBlockState(blockPos).getBlock() == Blocks.cauldron && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()))
{
world.setBlockState(blockPos, Blocks.cauldron.getDefaultState().withProperty(BlockCauldron.LEVEL, 3));
return EnumActionResult.SUCCESS;
}
BlockPos newPos = blockPos.offset(side);
return (player.canPlayerEdit(newPos, side, stack) && this.canPlaceWater(world, newPos) && syphonNetwork(stack, player, getLPUsed()) && this.tryPlaceWater(world, newPos)) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
return (player.canPlayerEdit(newPos, side, stack) && this.canPlaceWater(world, newPos) && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed()) && this.tryPlaceWater(world, newPos)) ? EnumActionResult.SUCCESS : EnumActionResult.FAIL;
}
public boolean canPlaceWater(World world, BlockPos blockPos)

View file

@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
public class ItemSigilWhirlwind extends ItemSigilToggleable
public class ItemSigilWhirlwind extends ItemSigilToggleableBase
{
public ItemSigilWhirlwind()
{

View file

@ -6,8 +6,8 @@ import WayofTime.bloodmagic.api.event.TeleposeEvent;
import WayofTime.bloodmagic.api.teleport.TeleportQueue;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.block.BlockTeleposer;
import WayofTime.bloodmagic.item.ItemBindable;
import WayofTime.bloodmagic.item.ItemTelepositionFocus;
import WayofTime.bloodmagic.ritual.portal.Teleports;
import com.google.common.base.Strings;
@ -86,8 +86,7 @@ public class TileTeleposer extends TileInventory implements ITickable
final int focusLevel = (teleposer.getStackInSlot(0).getItemDamage() + 1);
final int lpToBeDrained = (int) (0.5F * Math.sqrt((pos.getX() - focusPos.getX()) * (pos.getX() - focusPos.getX()) + (pos.getY() - focusPos.getY() + 1) * (pos.getY() - focusPos.getY() + 1) + (pos.getZ() - focusPos.getZ()) * (pos.getZ() - focusPos.getZ())));
//TODO MAKE THIS SYPHON LP BETTER
if (ItemBindable.syphonNetwork(teleposer.getStackInSlot(0), lpToBeDrained * (focusLevel * 2 - 1) * (focusLevel * 2 - 1) * (focusLevel * 2 - 1)))
if (NetworkHelper.getSoulNetwork(focus.getOwnerUUID(focusStack)).syphonAndDamage(PlayerHelper.getPlayerFromUUID(focus.getOwnerUUID(focusStack)), lpToBeDrained * (focusLevel * 2 - 1) * (focusLevel * 2 - 1) * (focusLevel * 2 - 1)))
{
int blocksTransported = 0;
@ -156,7 +155,7 @@ public class TileTeleposer extends TileInventory implements ITickable
private boolean canInitiateTeleport(TileTeleposer teleposer)
{
return teleposer.getStackInSlot(0) != null && teleposer.getStackInSlot(0).getItem() instanceof ItemTelepositionFocus && !Strings.isNullOrEmpty(((ItemTelepositionFocus) teleposer.getStackInSlot(0).getItem()).getBindableOwner(teleposer.getStackInSlot(0)));
return teleposer.getStackInSlot(0) != null && teleposer.getStackInSlot(0).getItem() instanceof ItemTelepositionFocus && !Strings.isNullOrEmpty(((ItemTelepositionFocus) teleposer.getStackInSlot(0).getItem()).getOwnerName(teleposer.getStackInSlot(0)));
}
public static boolean teleportBlocks(Object caller, World initialWorld, BlockPos initialPos, World finalWorld, BlockPos finalPos)