Fixed bound tools so multiple players can actually use them... :D
This commit is contained in:
parent
dc0925c5a6
commit
81edc58769
3 changed files with 52 additions and 17 deletions
|
@ -69,6 +69,9 @@ public class Constants
|
||||||
public static final String PREVIOUS_INPUT = "previousInput";
|
public static final String PREVIOUS_INPUT = "previousInput";
|
||||||
|
|
||||||
public static final String LIVING_ARMOUR = "livingArmour";
|
public static final String LIVING_ARMOUR = "livingArmour";
|
||||||
|
|
||||||
|
public static final String CHARGE_TIME = "chargeTime";
|
||||||
|
public static final String HELD_DOWN = "heldDown";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Mod
|
public static class Mod
|
||||||
|
|
|
@ -45,7 +45,6 @@ public class ItemBoundSword extends ItemSword
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft)
|
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!playerIn.isSneaking() && getActivated(stack))
|
if (!playerIn.isSneaking() && getActivated(stack))
|
||||||
{
|
{
|
||||||
int i = this.getMaxItemUseDuration(stack) - timeLeft;
|
int i = this.getMaxItemUseDuration(stack) - timeLeft;
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
package WayofTime.bloodmagic.item;
|
package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import java.util.HashMap;
|
||||||
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
import java.util.List;
|
||||||
import WayofTime.bloodmagic.api.event.BoundToolEvent;
|
import java.util.Map;
|
||||||
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
import java.util.Set;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
|
||||||
import com.google.common.collect.Multiset;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
@ -20,9 +19,13 @@ import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
|
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
||||||
|
import WayofTime.bloodmagic.api.event.BoundToolEvent;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
||||||
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
|
|
||||||
import java.util.List;
|
import com.google.common.collect.Multiset;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class ItemBoundTool extends ItemBindable
|
public class ItemBoundTool extends ItemBindable
|
||||||
|
@ -31,8 +34,8 @@ public class ItemBoundTool extends ItemBindable
|
||||||
protected final String tooltipBase;
|
protected final String tooltipBase;
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
public boolean beingHeldDown;
|
public Map<ItemStack, Boolean> heldDownMap = new HashMap<ItemStack, Boolean>();
|
||||||
private int heldDownCount;
|
public Map<ItemStack, Integer> heldDownCountMap = new HashMap<ItemStack, Integer>();
|
||||||
|
|
||||||
public final int chargeTime = 30;
|
public final int chargeTime = 30;
|
||||||
|
|
||||||
|
@ -63,13 +66,43 @@ public class ItemBoundTool extends ItemBindable
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected)
|
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected)
|
||||||
{
|
{
|
||||||
if (entityIn instanceof EntityPlayer && getActivated(stack) && isSelected && isBeingHeldDown() && stack == ((EntityPlayer) entityIn).getCurrentEquippedItem())
|
if (entityIn instanceof EntityPlayer && getActivated(stack) && isSelected && getBeingHeldDown(stack) && stack == ((EntityPlayer) entityIn).getCurrentEquippedItem())
|
||||||
{
|
{
|
||||||
EntityPlayer player = (EntityPlayer) entityIn;
|
EntityPlayer player = (EntityPlayer) entityIn;
|
||||||
heldDownCount = Math.min(player.getItemInUseDuration(), chargeTime);
|
setHeldDownCount(stack, Math.min(player.getItemInUseDuration(), chargeTime));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected int getHeldDownCount(ItemStack stack)
|
||||||
|
{
|
||||||
|
if (!heldDownCountMap.containsKey(stack))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return heldDownCountMap.get(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setHeldDownCount(ItemStack stack, int count)
|
||||||
|
{
|
||||||
|
heldDownCountMap.put(stack, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean getBeingHeldDown(ItemStack stack)
|
||||||
|
{
|
||||||
|
if (!heldDownMap.containsKey(stack))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return heldDownMap.get(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setBeingHeldDown(ItemStack stack, boolean heldDown)
|
||||||
|
{
|
||||||
|
heldDownMap.put(stack, heldDown);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
|
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
|
||||||
{
|
{
|
||||||
|
@ -93,7 +126,7 @@ public class ItemBoundTool extends ItemBindable
|
||||||
return event.result;
|
return event.result;
|
||||||
|
|
||||||
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
|
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
|
||||||
beingHeldDown = true;
|
setBeingHeldDown(stack, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +163,7 @@ public class ItemBoundTool extends ItemBindable
|
||||||
i = event.charge;
|
i = event.charge;
|
||||||
|
|
||||||
onBoundRelease(stack, worldIn, playerIn, Math.min(i, chargeTime));
|
onBoundRelease(stack, worldIn, playerIn, Math.min(i, chargeTime));
|
||||||
beingHeldDown = false;
|
setBeingHeldDown(stack, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,13 +214,13 @@ public class ItemBoundTool extends ItemBindable
|
||||||
@Override
|
@Override
|
||||||
public boolean showDurabilityBar(ItemStack stack)
|
public boolean showDurabilityBar(ItemStack stack)
|
||||||
{
|
{
|
||||||
return getActivated(stack) && beingHeldDown;
|
return getActivated(stack) && getBeingHeldDown(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getDurabilityForDisplay(ItemStack stack)
|
public double getDurabilityForDisplay(ItemStack stack)
|
||||||
{
|
{
|
||||||
return ((double) -Math.min(getHeldDownCount(), chargeTime) / chargeTime) + 1;
|
return ((double) -Math.min(getHeldDownCount(stack), chargeTime) / chargeTime) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void dropStacks(Multiset<ItemStackWrapper> drops, World world, BlockPos posToDrop)
|
protected static void dropStacks(Multiset<ItemStackWrapper> drops, World world, BlockPos posToDrop)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue