Temporary workaround for binding
Also fixes lots of things that went wonky when #684 was merged I have no clue how much is still broken. Guess we'll find out :D
This commit is contained in:
parent
1aaa817e65
commit
c2fe583496
|
@ -0,0 +1,75 @@
|
||||||
|
package WayofTime.bloodmagic.api;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.api.event.ItemBindEvent;
|
||||||
|
import WayofTime.bloodmagic.api.iface.IBindable;
|
||||||
|
import WayofTime.bloodmagic.api.network.SoulNetwork;
|
||||||
|
import WayofTime.bloodmagic.api.orb.IBloodOrb;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
|
import com.google.common.base.Strings;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public class DinnerBeforeDessert
|
||||||
|
{
|
||||||
|
// Temporary binding method until PlayerInteractEvent is re-implemented in Forge 1.9.
|
||||||
|
// Returns false if binding fails.
|
||||||
|
public static boolean bindMe(World world, EntityPlayer player, ItemStack stack)
|
||||||
|
{
|
||||||
|
if (stack == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (PlayerHelper.isFakePlayer(player))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!(stack.getItem() instanceof IBindable))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
IBindable bindable = (IBindable) stack.getItem();
|
||||||
|
|
||||||
|
if (Strings.isNullOrEmpty(bindable.getOwnerUUID(stack)))
|
||||||
|
{
|
||||||
|
if (bindable.onBind(player, stack))
|
||||||
|
{
|
||||||
|
String uuid = PlayerHelper.getUUIDFromPlayer(player).toString();
|
||||||
|
ItemBindEvent toPost = new ItemBindEvent(player, uuid, stack);
|
||||||
|
if (MinecraftForge.EVENT_BUS.post(toPost) || toPost.getResult() == Event.Result.DENY)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
BindableHelper.setItemOwnerUUID(stack, uuid);
|
||||||
|
BindableHelper.setItemOwnerName(stack, player.getDisplayNameString());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (bindable.getOwnerUUID(stack).equals(PlayerHelper.getUUIDFromPlayer(player).toString()) && !bindable.getOwnerName(stack).equals(player.getDisplayNameString()))
|
||||||
|
{
|
||||||
|
BindableHelper.setItemOwnerName(stack, player.getDisplayNameString());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Temporary Orb tier setting until PlayerInteractEvent is re-implemented in Forge 1.9.
|
||||||
|
public static void setOrbTier(EntityPlayer player, ItemStack stack)
|
||||||
|
{
|
||||||
|
if (stack == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!(stack.getItem() instanceof IBloodOrb))
|
||||||
|
return;
|
||||||
|
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
IBloodOrb bloodOrb = (IBloodOrb) stack.getItem();
|
||||||
|
SoulNetwork network = NetworkHelper.getSoulNetwork(player);
|
||||||
|
|
||||||
|
if (bloodOrb.getOrbLevel(stack.getItemDamage()) > network.getOrbTier())
|
||||||
|
network.setOrbTier(bloodOrb.getOrbLevel(stack.getItemDamage()));
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,11 +1,15 @@
|
||||||
package WayofTime.bloodmagic.api.impl;
|
package WayofTime.bloodmagic.api.impl;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.api.DinnerBeforeDessert;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.iface.IBindable;
|
import WayofTime.bloodmagic.api.iface.IBindable;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
|
import net.minecraft.util.ActionResult;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for all bindable items.
|
* Base class for all bindable items.
|
||||||
|
@ -19,6 +23,12 @@ public class ItemBindable extends Item implements IBindable
|
||||||
setMaxStackSize(1);
|
setMaxStackSize(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult<ItemStack> onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) {
|
||||||
|
DinnerBeforeDessert.bindMe(worldIn, playerIn, itemStackIn);
|
||||||
|
return super.onItemRightClick(itemStackIn, worldIn, playerIn, hand);
|
||||||
|
}
|
||||||
|
|
||||||
// IBindable
|
// IBindable
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,6 +2,7 @@ package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.api.DinnerBeforeDessert;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.SoundEvents;
|
import net.minecraft.init.SoundEvents;
|
||||||
|
@ -53,6 +54,9 @@ public class ItemBloodOrb extends ItemBindableBase implements IBloodOrb, IBindab
|
||||||
if (world == null)
|
if (world == null)
|
||||||
return super.onItemRightClick(stack, null, player, hand);
|
return super.onItemRightClick(stack, null, player, hand);
|
||||||
|
|
||||||
|
super.onItemRightClick(stack, null, player, hand);
|
||||||
|
DinnerBeforeDessert.setOrbTier(player, stack);
|
||||||
|
|
||||||
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);
|
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,
|
// SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ,
|
||||||
// 20, world.provider.getDimensionId(), 4, posX, posY, posZ);
|
// 20, world.provider.getDimensionId(), 4, posX, posY, posZ);
|
||||||
|
|
|
@ -3,6 +3,7 @@ package WayofTime.bloodmagic.item;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.api.DinnerBeforeDessert;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.renderer.ItemMeshDefinition;
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
@ -41,8 +42,6 @@ import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class ItemBoundSword extends ItemSword implements IBindable, IActivatable, IMeshProvider
|
public class ItemBoundSword extends ItemSword implements IBindable, IActivatable, IMeshProvider
|
||||||
{
|
{
|
||||||
private float attackDamage;
|
|
||||||
|
|
||||||
public ItemBoundSword()
|
public ItemBoundSword()
|
||||||
{
|
{
|
||||||
super(ModItems.boundToolMaterial);
|
super(ModItems.boundToolMaterial);
|
||||||
|
@ -55,6 +54,8 @@ public class ItemBoundSword extends ItemSword implements IBindable, IActivatable
|
||||||
@Override
|
@Override
|
||||||
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand)
|
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand)
|
||||||
{
|
{
|
||||||
|
DinnerBeforeDessert.bindMe(world, player, stack);
|
||||||
|
|
||||||
if (player.isSneaking())
|
if (player.isSneaking())
|
||||||
setActivatedState(stack, !getActivated(stack));
|
setActivatedState(stack, !getActivated(stack));
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,10 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
|
import WayofTime.bloodmagic.api.DinnerBeforeDessert;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@ -40,7 +44,6 @@ public class ItemBoundTool extends ItemTool implements IBindable, IActivatable
|
||||||
{
|
{
|
||||||
protected final String tooltipBase;
|
protected final String tooltipBase;
|
||||||
private final String name;
|
private final String name;
|
||||||
private final float damage;
|
|
||||||
|
|
||||||
public Map<ItemStack, Boolean> heldDownMap = new HashMap<ItemStack, Boolean>();
|
public Map<ItemStack, Boolean> heldDownMap = new HashMap<ItemStack, Boolean>();
|
||||||
public Map<ItemStack, Integer> heldDownCountMap = new HashMap<ItemStack, Integer>();
|
public Map<ItemStack, Integer> heldDownCountMap = new HashMap<ItemStack, Integer>();
|
||||||
|
@ -51,10 +54,10 @@ public class ItemBoundTool extends ItemTool implements IBindable, IActivatable
|
||||||
{
|
{
|
||||||
super(damage, 1, ModItems.boundToolMaterial, effectiveBlocks);
|
super(damage, 1, ModItems.boundToolMaterial, effectiveBlocks);
|
||||||
setUnlocalizedName(Constants.Mod.MODID + ".bound." + name);
|
setUnlocalizedName(Constants.Mod.MODID + ".bound." + name);
|
||||||
|
setCreativeTab(BloodMagic.tabBloodMagic);
|
||||||
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.tooltipBase = "tooltip.BloodMagic.bound." + name + ".";
|
this.tooltipBase = "tooltip.BloodMagic.bound." + name + ".";
|
||||||
this.damage = damage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -111,6 +114,8 @@ public class ItemBoundTool extends ItemTool implements IBindable, IActivatable
|
||||||
@Override
|
@Override
|
||||||
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand)
|
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand)
|
||||||
{
|
{
|
||||||
|
DinnerBeforeDessert.bindMe(world, player, stack);
|
||||||
|
|
||||||
if (player.isSneaking())
|
if (player.isSneaking())
|
||||||
setActivatedState(stack, !getActivated(stack));
|
setActivatedState(stack, !getActivated(stack));
|
||||||
|
|
||||||
|
@ -182,10 +187,15 @@ public class ItemBoundTool extends ItemTool implements IBindable, IActivatable
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
||||||
{
|
{
|
||||||
if (TextHelper.canTranslate(tooltipBase + "desc"))
|
if (TextHelper.canTranslate(tooltipBase + "desc"))
|
||||||
tooltip.add(TextHelper.localizeEffect(tooltipBase + "desc"));
|
tooltip.add(TextHelper.localizeEffect(tooltipBase + "desc"));
|
||||||
|
|
||||||
tooltip.add(TextHelper.localize("tooltip.BloodMagic." + (getActivated(stack) ? "activated" : "deactivated")));
|
tooltip.add(TextHelper.localize("tooltip.BloodMagic." + (getActivated(stack) ? "activated" : "deactivated")));
|
||||||
|
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
||||||
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
|
|
||||||
super.addInformation(stack, player, tooltip, advanced);
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.EnumActionResult;
|
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
|
@ -68,7 +67,7 @@ public class ItemTelepositionFocus extends ItemBindableBase implements IVariantP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ActionResult.newResult(EnumActionResult.FAIL, stack);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -4,7 +4,11 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.impl.ItemSigil;
|
import WayofTime.bloodmagic.api.impl.ItemSigil;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -29,6 +33,7 @@ public class ItemSigilBase extends ItemSigil implements IVariantProvider
|
||||||
super(lpUsed);
|
super(lpUsed);
|
||||||
|
|
||||||
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
|
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
|
||||||
|
setCreativeTab(BloodMagic.tabBloodMagic);
|
||||||
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
|
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
|
||||||
|
@ -44,7 +49,12 @@ public class ItemSigilBase extends ItemSigil implements IVariantProvider
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
||||||
{
|
{
|
||||||
if (TextHelper.canTranslate(tooltipBase + "desc"))
|
if (TextHelper.canTranslate(tooltipBase + "desc"))
|
||||||
tooltip.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect(tooltipBase + "desc"))));
|
tooltip.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect(tooltipBase + "desc"))));
|
||||||
|
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
||||||
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
|
|
||||||
super.addInformation(stack, player, tooltip, advanced);
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,13 @@ package WayofTime.bloodmagic.item.sigil;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.impl.ItemSigilToggleable;
|
import WayofTime.bloodmagic.api.impl.ItemSigilToggleable;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
@ -27,6 +31,7 @@ public class ItemSigilToggleableBase extends ItemSigilToggleable implements IVar
|
||||||
setToggleable();
|
setToggleable();
|
||||||
|
|
||||||
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
|
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
|
||||||
|
setCreativeTab(BloodMagic.tabBloodMagic);
|
||||||
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
|
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
|
||||||
|
@ -36,11 +41,12 @@ public class ItemSigilToggleableBase extends ItemSigilToggleable implements IVar
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
||||||
{
|
{
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
super.addInformation(stack, player, tooltip, advanced);
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
if (getActivated(stack))
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic." + (getActivated(stack) ? "activated" : "deactivated")));
|
||||||
tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated"));
|
|
||||||
else
|
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
||||||
tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated"));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue