Fix enderman disguise

This commit is contained in:
libraryaddict 2016-06-28 15:01:17 +12:00
parent 11a26a36c0
commit dedc043558
2 changed files with 29 additions and 11 deletions

View File

@ -13,6 +13,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import com.comphenix.protocol.wrappers.BlockPosition;
import com.comphenix.protocol.wrappers.WrappedBlockData;
import com.google.common.base.Optional;
import me.libraryaddict.disguise.disguisetypes.watchers.AgeableWatcher;
@ -128,8 +129,8 @@ public class FlagType<Y>
public static FlagType<Boolean> ENDERMAN_AGRESSIVE = new FlagType<Boolean>(EndermanWatcher.class, 1, false);
public static FlagType<Optional<Integer>> ENDERMAN_ITEM = new FlagType<Optional<Integer>>(EndermanWatcher.class, 0,
Optional.of(1));
public static FlagType<Optional<WrappedBlockData>> ENDERMAN_ITEM = new FlagType<Optional<WrappedBlockData>>(
EndermanWatcher.class, 0, Optional.<WrappedBlockData> absent());
public static FlagType<Integer> ENTITY_AIR_TICKS = new FlagType<Integer>(FlagWatcher.class, 1, 0);

View File

@ -1,13 +1,13 @@
package me.libraryaddict.disguise.disguisetypes.watchers;
import org.apache.commons.lang3.tuple.Pair;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import com.comphenix.protocol.wrappers.WrappedBlockData;
import com.google.common.base.Optional;
import me.libraryaddict.disguise.disguisetypes.Disguise;
import me.libraryaddict.disguise.disguisetypes.FlagType;
import me.libraryaddict.disguise.utilities.ReflectionManager;
public class EndermanWatcher extends InsentientWatcher
{
@ -20,13 +20,13 @@ public class EndermanWatcher extends InsentientWatcher
@Override
public ItemStack getItemInMainHand()
{
Optional<Integer> value = getValue(FlagType.ENDERMAN_ITEM);
Optional<WrappedBlockData> value = getValue(FlagType.ENDERMAN_ITEM);
if (value.isPresent())
{
Pair<Integer, Integer> pair = ReflectionManager.getFromCombinedId(value.get());
int id = pair.getLeft();
int data = pair.getRight();
WrappedBlockData pair = value.get();
Material id = pair.getType();
int data = pair.getData();
return new ItemStack(id, 1, (short) data);
}
@ -42,16 +42,33 @@ public class EndermanWatcher extends InsentientWatcher
setItemInMainHand(itemstack.getTypeId(), itemstack.getDurability());
}
@Deprecated
public void setItemInMainHand(int typeId)
{
setItemInMainHand(typeId, 0);
}
public void setItemInMainHand(Material type)
{
setItemInMainHand(type, 0);
}
public void setItemInMainHand(Material type, int data)
{
Optional<WrappedBlockData> optional;
if (type == null)
optional = Optional.<WrappedBlockData> absent();
else
optional = Optional.<WrappedBlockData> of(WrappedBlockData.createData(type, data));
setValue(FlagType.ENDERMAN_ITEM, optional);
}
@Deprecated
public void setItemInMainHand(int typeId, int data)
{
int combined = ReflectionManager.getCombinedId(typeId, data);
setValue(FlagType.ENDERMAN_ITEM, Optional.of(combined));
setItemInMainHand(Material.getMaterial(typeId), data);
}
public boolean isAggressive()