Added bat so players can use items in hand with the leash

Changed silence method so it works :toot:
This commit is contained in:
LCastr0 2016-12-26 19:00:11 -02:00
parent c11755558e
commit 6712ad427b
4 changed files with 48 additions and 21 deletions

View File

@ -6,6 +6,25 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.server.v1_8_R3.AxisAlignedBB;
import net.minecraft.server.v1_8_R3.EntityBat;
import net.minecraft.server.v1_8_R3.EntityCreature;
import net.minecraft.server.v1_8_R3.EntityEnderDragon;
import net.minecraft.server.v1_8_R3.EntityHuman;
import net.minecraft.server.v1_8_R3.EntityInsentient;
import net.minecraft.server.v1_8_R3.EntityLiving;
import net.minecraft.server.v1_8_R3.EntityTrackerEntry;
import net.minecraft.server.v1_8_R3.NBTTagCompound;
import net.minecraft.server.v1_8_R3.NavigationAbstract;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntity;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityHeadRotation;
import net.minecraft.server.v1_8_R3.PathfinderGoal;
import net.minecraft.server.v1_8_R3.PathfinderGoalLookAtPlayer;
import net.minecraft.server.v1_8_R3.PathfinderGoalMoveTowardsRestriction;
import net.minecraft.server.v1_8_R3.PathfinderGoalRandomLookaround;
import net.minecraft.server.v1_8_R3.PathfinderGoalSelector;
import net.minecraft.server.v1_8_R3.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
@ -29,24 +48,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.util.Vector;
import net.minecraft.server.v1_8_R3.AxisAlignedBB;
import net.minecraft.server.v1_8_R3.EntityBat;
import net.minecraft.server.v1_8_R3.EntityCreature;
import net.minecraft.server.v1_8_R3.EntityEnderDragon;
import net.minecraft.server.v1_8_R3.EntityHuman;
import net.minecraft.server.v1_8_R3.EntityInsentient;
import net.minecraft.server.v1_8_R3.EntityLiving;
import net.minecraft.server.v1_8_R3.EntityTrackerEntry;
import net.minecraft.server.v1_8_R3.NavigationAbstract;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntity;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityHeadRotation;
import net.minecraft.server.v1_8_R3.PathfinderGoal;
import net.minecraft.server.v1_8_R3.PathfinderGoalLookAtPlayer;
import net.minecraft.server.v1_8_R3.PathfinderGoalMoveTowardsRestriction;
import net.minecraft.server.v1_8_R3.PathfinderGoalRandomLookaround;
import net.minecraft.server.v1_8_R3.PathfinderGoalSelector;
import net.minecraft.server.v1_8_R3.WorldServer;
public class UtilEnt
{
@ -67,7 +68,13 @@ public class UtilEnt
public static void silence(Entity entity, boolean silence)
{
((CraftEntity)entity).getHandle().setSilent(silence);
net.minecraft.server.v1_8_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
NBTTagCompound tag = new NBTTagCompound();
nmsEntity.c(tag);
tag.setByte("Silent", (byte) 1);
nmsEntity.f(tag);
// Not working right now
//((CraftEntity)entity).getHandle().setSilent(silence);
}
public static void ghost(Entity entity, boolean ghost, boolean invisible)

View File

@ -3,7 +3,6 @@ package mineplex.core.gadget.gadgets.balloons;
import org.bukkit.Material;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import mineplex.core.gadget.GadgetManager;
@ -27,7 +26,7 @@ public class BalloonItem extends BalloonGadget
Entity entity = player.getWorld().spawnEntity(player.getLocation(), _balloonType.getEntityType());
if (_balloonType.isBaby() && entity instanceof Ageable)
((Ageable) entity).setBaby();
((LivingEntity) entity).setLeashHolder(player);
//((LivingEntity) entity).setLeashHolder(player);
return entity;
}

View File

@ -5,6 +5,7 @@ import java.util.Map;
import java.util.UUID;
import org.bukkit.Material;
import org.bukkit.entity.Bat;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
@ -76,6 +77,8 @@ public abstract class BalloonGadget extends Gadget
UtilBalloons utilBalloons = PLAYER_BALLOONS.get(player.getUniqueId()).get(_balloon);
Entity entity = utilBalloons.getBalloon();
entity.remove();
Bat bat = utilBalloons.getBat();
bat.remove();
PLAYER_BALLOONS.get(player.getUniqueId()).remove(_balloon);
}
}

View File

@ -1,11 +1,16 @@
package mineplex.core.gadget.util;
import org.bukkit.Location;
import org.bukkit.entity.Bat;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.Vector;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath;
public class UtilBalloons
@ -22,6 +27,7 @@ public class UtilBalloons
private Vector _direction;
private double _speed;
private long _idleTime;
private Bat _bat;
public UtilBalloons(Player player, Entity balloon)
{
@ -32,10 +38,17 @@ public class UtilBalloons
_speed = 0.2;
_idleTime = 0;
_direction = new Vector(1, 0, 0);
_bat = player.getWorld().spawn(player.getLocation(), Bat.class);
_bat.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1, false, false));
((LivingEntity) balloon).setLeashHolder(_bat);
UtilEnt.silence(_bat, true);
}
public void update()
{
// Update bat
_bat.teleport(_player.getLocation());
//Update Target
if (UtilMath.offset(_player.getEyeLocation(), _target) > 3 || UtilMath.offset(_balloonLoc, _target) < 1)
_target = getNewTarget();
@ -88,4 +101,9 @@ public class UtilBalloons
return _balloon;
}
public Bat getBat()
{
return _bat;
}
}