Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/ By: Thinkofdeath <thinkofdeath@spigotmc.org>
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityArmorStand;
|
||||
import net.minecraft.server.Vector3f;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.EulerAngle;
|
||||
|
||||
public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
|
||||
|
||||
private static final int HAND = 0;
|
||||
private static final int FEET = 1;
|
||||
private static final int LEGS = 2;
|
||||
private static final int CHEST = 3;
|
||||
private static final int HEAD = 4;
|
||||
|
||||
public CraftArmorStand(CraftServer server, EntityArmorStand entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftArmorStand";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.ARMOR_STAND;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityArmorStand getHandle() {
|
||||
return (EntityArmorStand) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItemInHand() {
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getEquipment(HAND));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItemInHand(ItemStack item) {
|
||||
getHandle().setEquipment(HAND, CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getBoots() {
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getEquipment(FEET));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoots(ItemStack item) {
|
||||
getHandle().setEquipment(FEET, CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getLeggings() {
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getEquipment(LEGS));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLeggings(ItemStack item) {
|
||||
getHandle().setEquipment(LEGS, CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getChestplate() {
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getEquipment(CHEST));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChestplate(ItemStack item) {
|
||||
getHandle().setEquipment(CHEST, CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getHelmet() {
|
||||
return CraftItemStack.asBukkitCopy(getHandle().getEquipment(HEAD));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHelmet(ItemStack item) {
|
||||
getHandle().setEquipment(HEAD, CraftItemStack.asNMSCopy(item));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EulerAngle getBodyPose() {
|
||||
return fromNMS(getHandle().bodyPose);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBodyPose(EulerAngle pose) {
|
||||
getHandle().setBodyPose(toNMS(pose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EulerAngle getLeftArmPose() {
|
||||
return fromNMS(getHandle().leftArmPose);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLeftArmPose(EulerAngle pose) {
|
||||
getHandle().setLeftArmPose(toNMS(pose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EulerAngle getRightArmPose() {
|
||||
return fromNMS(getHandle().rightArmPose);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRightArmPose(EulerAngle pose) {
|
||||
getHandle().setRightArmPose(toNMS(pose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EulerAngle getLeftLegPose() {
|
||||
return fromNMS(getHandle().leftLegPose);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLeftLegPose(EulerAngle pose) {
|
||||
getHandle().setLeftLegPose(toNMS(pose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EulerAngle getRightLegPose() {
|
||||
return fromNMS(getHandle().rightLegPose);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRightLegPose(EulerAngle pose) {
|
||||
getHandle().setRightLegPose(toNMS(pose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public EulerAngle getHeadPose() {
|
||||
return fromNMS(getHandle().headPose);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHeadPose(EulerAngle pose) {
|
||||
getHandle().setHeadPose(toNMS(pose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBasePlate() {
|
||||
return !getHandle().hasBasePlate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBasePlate(boolean basePlate) {
|
||||
getHandle().setBasePlate(!basePlate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasGravity() {
|
||||
return !getHandle().hasGravity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGravity(boolean gravity) {
|
||||
getHandle().setGravity(!gravity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return !getHandle().isInvisible();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
getHandle().setInvisible(!visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasArms() {
|
||||
return getHandle().hasArms();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setArms(boolean arms) {
|
||||
getHandle().setArms(arms);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSmall() {
|
||||
return getHandle().isSmall();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSmall(boolean small) {
|
||||
getHandle().setSmall(small);
|
||||
}
|
||||
|
||||
private static EulerAngle fromNMS(Vector3f old) {
|
||||
return new EulerAngle(
|
||||
Math.toRadians(old.getX()),
|
||||
Math.toRadians(old.getY()),
|
||||
Math.toRadians(old.getZ())
|
||||
);
|
||||
}
|
||||
|
||||
private static Vector3f toNMS(EulerAngle old) {
|
||||
return new Vector3f(
|
||||
(float) Math.toDegrees(old.getX()),
|
||||
(float) Math.toDegrees(old.getY()),
|
||||
(float) Math.toDegrees(old.getZ())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,7 @@ public class CraftArrow extends AbstractProjectile implements Arrow {
|
||||
}
|
||||
|
||||
public ProjectileSource getShooter() {
|
||||
return getHandle().projectileSource;
|
||||
return getHandle().projectileSource;
|
||||
}
|
||||
|
||||
public void setShooter(ProjectileSource shooter) {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityCreature;
|
||||
import net.minecraft.server.EntityLiving;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Creature;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
@@ -14,20 +13,16 @@ public class CraftCreature extends CraftLivingEntity implements Creature {
|
||||
public void setTarget(LivingEntity target) {
|
||||
EntityCreature entity = getHandle();
|
||||
if (target == null) {
|
||||
entity.target = null;
|
||||
entity.setGoalTarget(null);
|
||||
entity.setGoalTarget(null, null, false);
|
||||
} else if (target instanceof CraftLivingEntity) {
|
||||
entity.target = ((CraftLivingEntity) target).getHandle();
|
||||
entity.pathEntity = entity.world.findPath(entity, entity.target, 16.0F, true, false, false, true);
|
||||
entity.setGoalTarget(((CraftLivingEntity) target).getHandle());
|
||||
entity.setGoalTarget(((CraftLivingEntity) target).getHandle(), null, false);
|
||||
}
|
||||
}
|
||||
|
||||
public CraftLivingEntity getTarget() {
|
||||
if (getHandle().target == null) return null;
|
||||
if (!(getHandle().target instanceof EntityLiving)) return null;
|
||||
if (getHandle().getGoalTarget() == null) return null;
|
||||
|
||||
return (CraftLivingEntity) getHandle().target.getBukkitEntity();
|
||||
return (CraftLivingEntity) getHandle().getGoalTarget().getBukkitEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityEnderman;
|
||||
|
||||
import net.minecraft.server.IBlockData;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.Enderman;
|
||||
@@ -14,12 +15,12 @@ public class CraftEnderman extends CraftMonster implements Enderman {
|
||||
}
|
||||
|
||||
public MaterialData getCarriedMaterial() {
|
||||
return CraftMagicNumbers.getMaterial(getHandle().getCarried()).getNewData((byte) getHandle().getCarriedData());
|
||||
IBlockData blockData = getHandle().getCarried();
|
||||
return CraftMagicNumbers.getMaterial(blockData.getBlock()).getNewData((byte) blockData.getBlock().toLegacyData(blockData));
|
||||
}
|
||||
|
||||
public void setCarriedMaterial(MaterialData data) {
|
||||
getHandle().setCarried(CraftMagicNumbers.getBlock(data.getItemTypeId()));
|
||||
getHandle().setCarriedData(data.getData());
|
||||
getHandle().setCarried(CraftMagicNumbers.getBlock(data.getItemTypeId()).fromLegacyData(data.getData()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityEndermite;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Endermite;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftEndermite extends CraftMonster implements Endermite {
|
||||
|
||||
public CraftEndermite(CraftServer server, EntityEndermite entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftEndermite";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.ENDERMITE;
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
if (entity instanceof EntityPlayer) { return new CraftPlayer(server, (EntityPlayer) entity); }
|
||||
else { return new CraftHumanEntity(server, (EntityHuman) entity); }
|
||||
}
|
||||
// Water Animals
|
||||
else if (entity instanceof EntityWaterAnimal) {
|
||||
if (entity instanceof EntitySquid) { return new CraftSquid(server, (EntitySquid) entity); }
|
||||
else { return new CraftWaterMob(server, (EntityWaterAnimal) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityCreature) {
|
||||
// Animals
|
||||
if (entity instanceof EntityAnimal) {
|
||||
@@ -52,6 +57,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
else if (entity instanceof EntitySheep) { return new CraftSheep(server, (EntitySheep) entity); }
|
||||
else if (entity instanceof EntityHorse) { return new CraftHorse(server, (EntityHorse) entity); }
|
||||
else if (entity instanceof EntityRabbit) { return new CraftRabbit(server, (EntityRabbit) entity); }
|
||||
else { return new CraftAnimals(server, (EntityAnimal) entity); }
|
||||
}
|
||||
// Monsters
|
||||
@@ -72,14 +78,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
if (entity instanceof EntityCaveSpider) { return new CraftCaveSpider(server, (EntityCaveSpider) entity); }
|
||||
else { return new CraftSpider(server, (EntitySpider) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityEndermite) { return new CraftEndermite(server, (EntityEndermite) entity); }
|
||||
else if (entity instanceof EntityGuardian) { return new CraftGuardian(server, (EntityGuardian) entity); }
|
||||
|
||||
else { return new CraftMonster(server, (EntityMonster) entity); }
|
||||
}
|
||||
// Water Animals
|
||||
else if (entity instanceof EntityWaterAnimal) {
|
||||
if (entity instanceof EntitySquid) { return new CraftSquid(server, (EntitySquid) entity); }
|
||||
else { return new CraftWaterMob(server, (EntityWaterAnimal) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityGolem) {
|
||||
if (entity instanceof EntitySnowman) { return new CraftSnowman(server, (EntitySnowman) entity); }
|
||||
else if (entity instanceof EntityIronGolem) { return new CraftIronGolem(server, (EntityIronGolem) entity); }
|
||||
@@ -105,6 +108,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
if (entity instanceof EntityBat) { return new CraftBat(server, (EntityBat) entity); }
|
||||
else { return new CraftAmbient(server, (EntityAmbient) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityArmorStand) { return new CraftArmorStand(server, (EntityArmorStand) entity); }
|
||||
else { return new CraftLivingEntity(server, (EntityLiving) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityComplexPart) {
|
||||
@@ -154,7 +158,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityTNTPrimed) { return new CraftTNTPrimed(server, (EntityTNTPrimed) entity); }
|
||||
else if (entity instanceof EntityFireworks) { return new CraftFirework(server, (EntityFireworks) entity); }
|
||||
|
||||
throw new AssertionError("Unknown entity " + entity == null ? null : entity.getClass());
|
||||
throw new AssertionError("Unknown entity " + (entity == null ? null : entity.getClass()));
|
||||
}
|
||||
|
||||
public Location getLocation() {
|
||||
@@ -224,7 +228,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
public List<org.bukkit.entity.Entity> getNearbyEntities(double x, double y, double z) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Entity> notchEntityList = entity.world.getEntities(entity, entity.boundingBox.grow(x, y, z));
|
||||
List<Entity> notchEntityList = entity.world.getEntities(entity, entity.getBoundingBox().grow(x, y, z));
|
||||
List<org.bukkit.entity.Entity> bukkitEntityList = new java.util.ArrayList<org.bukkit.entity.Entity>(notchEntityList.size());
|
||||
|
||||
for (Entity e : notchEntityList) {
|
||||
@@ -316,7 +320,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
|
||||
public UUID getUniqueId() {
|
||||
return getHandle().uniqueID;
|
||||
return getHandle().getUniqueID();
|
||||
}
|
||||
|
||||
public int getTicksLived() {
|
||||
@@ -402,4 +406,34 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
||||
return getHandle().vehicle.getBukkitEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCustomName(String name) {
|
||||
if (name == null) {
|
||||
name = "";
|
||||
}
|
||||
|
||||
getHandle().setCustomName(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCustomName() {
|
||||
String name = getHandle().getCustomName();
|
||||
|
||||
if (name == null || name.length() == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCustomNameVisible(boolean flag) {
|
||||
getHandle().setCustomNameVisible(flag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomNameVisible() {
|
||||
return getHandle().getCustomNameVisible();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,11 +33,11 @@ public class CraftFallingSand extends CraftEntity implements FallingSand {
|
||||
}
|
||||
|
||||
public int getBlockId() {
|
||||
return CraftMagicNumbers.getId(getHandle().id);
|
||||
return CraftMagicNumbers.getId(getHandle().getBlock().getBlock());
|
||||
}
|
||||
|
||||
public byte getBlockData() {
|
||||
return (byte) getHandle().data;
|
||||
return (byte) getHandle().getBlock().getBlock().toLegacyData(getHandle().getBlock());
|
||||
}
|
||||
|
||||
public boolean getDropItem() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.EntityFishingHook;
|
||||
import net.minecraft.server.EntityHuman;
|
||||
import net.minecraft.server.MathHelper;
|
||||
@@ -50,7 +51,7 @@ public class CraftFish extends AbstractProjectile implements Fish {
|
||||
EntityFishingHook hook = getHandle();
|
||||
|
||||
if (this.biteChance == -1) {
|
||||
if (hook.world.isRainingAt(MathHelper.floor(hook.locX), MathHelper.floor(hook.locY) + 1, MathHelper.floor(hook.locZ))) {
|
||||
if (hook.world.isRainingAt(new BlockPosition(MathHelper.floor(hook.locX), MathHelper.floor(hook.locY) + 1, MathHelper.floor(hook.locZ)))) {
|
||||
return 1/300.0;
|
||||
}
|
||||
return 1/500.0;
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityGuardian;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Guardian;
|
||||
|
||||
public class CraftGuardian extends CraftMonster implements Guardian {
|
||||
|
||||
public CraftGuardian(CraftServer server, EntityGuardian entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftGuardian";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.GUARDIAN;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.EntityHanging;
|
||||
import net.minecraft.server.EnumDirection;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
@@ -23,30 +25,27 @@ public class CraftHanging extends CraftEntity implements Hanging {
|
||||
public boolean setFacingDirection(BlockFace face, boolean force) {
|
||||
Block block = getLocation().getBlock().getRelative(getAttachedFace()).getRelative(face.getOppositeFace()).getRelative(getFacing());
|
||||
EntityHanging hanging = getHandle();
|
||||
int x = hanging.x, y = hanging.y, z = hanging.z, dir = hanging.direction;
|
||||
hanging.x = block.getX();
|
||||
hanging.y = block.getY();
|
||||
hanging.z = block.getZ();
|
||||
BlockPosition old = hanging.getBlockPosition();
|
||||
EnumDirection dir = hanging.direction;
|
||||
hanging.blockPosition = new BlockPosition(block.getX(), block.getY(), block.getZ());
|
||||
switch (face) {
|
||||
case SOUTH:
|
||||
default:
|
||||
getHandle().setDirection(0);
|
||||
getHandle().setDirection(EnumDirection.SOUTH);
|
||||
break;
|
||||
case WEST:
|
||||
getHandle().setDirection(1);
|
||||
getHandle().setDirection(EnumDirection.WEST);
|
||||
break;
|
||||
case NORTH:
|
||||
getHandle().setDirection(2);
|
||||
getHandle().setDirection(EnumDirection.NORTH);
|
||||
break;
|
||||
case EAST:
|
||||
getHandle().setDirection(3);
|
||||
getHandle().setDirection(EnumDirection.EAST);
|
||||
break;
|
||||
}
|
||||
if (!force && !hanging.survives()) {
|
||||
// Revert since it doesn't fit
|
||||
hanging.x = x;
|
||||
hanging.y = y;
|
||||
hanging.z = z;
|
||||
hanging.blockPosition = old;
|
||||
hanging.setDirection(dir);
|
||||
return false;
|
||||
}
|
||||
@@ -55,14 +54,14 @@ public class CraftHanging extends CraftEntity implements Hanging {
|
||||
|
||||
public BlockFace getFacing() {
|
||||
switch (this.getHandle().direction) {
|
||||
case 0:
|
||||
case SOUTH:
|
||||
default:
|
||||
return BlockFace.SOUTH;
|
||||
case 1:
|
||||
case WEST:
|
||||
return BlockFace.WEST;
|
||||
case 2:
|
||||
case NORTH:
|
||||
return BlockFace.NORTH;
|
||||
case 3:
|
||||
case EAST:
|
||||
return BlockFace.EAST;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ public class CraftHorse extends CraftAnimals implements Horse {
|
||||
public void setOwner(AnimalTamer owner) {
|
||||
if (owner != null) {
|
||||
setTamed(true);
|
||||
getHandle().setPathEntity(null);
|
||||
getHandle().setGoalTarget(null, null, false);
|
||||
setOwnerUUID(owner.getUniqueId());
|
||||
} else {
|
||||
setTamed(false);
|
||||
|
||||
@@ -2,16 +2,7 @@ package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraft.server.Container;
|
||||
import net.minecraft.server.EntityHuman;
|
||||
import net.minecraft.server.EntityMinecartHopper;
|
||||
import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.PacketPlayInCloseWindow;
|
||||
import net.minecraft.server.PacketPlayOutOpenWindow;
|
||||
import net.minecraft.server.TileEntityBrewingStand;
|
||||
import net.minecraft.server.TileEntityDispenser;
|
||||
import net.minecraft.server.TileEntityFurnace;
|
||||
import net.minecraft.server.TileEntityHopper;
|
||||
import net.minecraft.server.*;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
@@ -194,38 +185,38 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
break;
|
||||
case DISPENSER:
|
||||
if (craftinv.getInventory() instanceof TileEntityDispenser) {
|
||||
getHandle().openDispenser((TileEntityDispenser) craftinv.getInventory());
|
||||
getHandle().openTileEntity((TileEntityDispenser) craftinv.getInventory());
|
||||
} else {
|
||||
openCustomInventory(inventory, player, 3);
|
||||
openCustomInventory(inventory, player, "minecraft:dispenser");
|
||||
}
|
||||
break;
|
||||
case FURNACE:
|
||||
if (craftinv.getInventory() instanceof TileEntityFurnace) {
|
||||
getHandle().openFurnace((TileEntityFurnace) craftinv.getInventory());
|
||||
getHandle().openTileEntity((TileEntityFurnace) craftinv.getInventory());
|
||||
} else {
|
||||
openCustomInventory(inventory, player, 2);
|
||||
openCustomInventory(inventory, player, "minecraft:furnace");
|
||||
}
|
||||
break;
|
||||
case WORKBENCH:
|
||||
openCustomInventory(inventory, player, 1);
|
||||
openCustomInventory(inventory, player, "minecraft:crafting_table");
|
||||
break;
|
||||
case BREWING:
|
||||
if (craftinv.getInventory() instanceof TileEntityBrewingStand) {
|
||||
getHandle().openBrewingStand((TileEntityBrewingStand) craftinv.getInventory());
|
||||
getHandle().openTileEntity((TileEntityBrewingStand) craftinv.getInventory());
|
||||
} else {
|
||||
openCustomInventory(inventory, player, 5);
|
||||
openCustomInventory(inventory, player, "minecraft:brewing_stand");
|
||||
}
|
||||
break;
|
||||
case ENCHANTING:
|
||||
openCustomInventory(inventory, player, 4);
|
||||
openCustomInventory(inventory, player, "minecraft:enchanting_table");
|
||||
break;
|
||||
case HOPPER:
|
||||
if (craftinv.getInventory() instanceof TileEntityHopper) {
|
||||
getHandle().openHopper((TileEntityHopper) craftinv.getInventory());
|
||||
getHandle().openTileEntity((TileEntityHopper) craftinv.getInventory());
|
||||
} else if (craftinv.getInventory() instanceof EntityMinecartHopper) {
|
||||
getHandle().openMinecartHopper((EntityMinecartHopper) craftinv.getInventory());
|
||||
getHandle().openTileEntity((EntityMinecartHopper) craftinv.getInventory());
|
||||
} else {
|
||||
openCustomInventory(inventory, player, 9);
|
||||
openCustomInventory(inventory, player, "minecraft:hopper");
|
||||
}
|
||||
break;
|
||||
case CREATIVE:
|
||||
@@ -239,7 +230,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
return getHandle().activeContainer.getBukkitView();
|
||||
}
|
||||
|
||||
private void openCustomInventory(Inventory inventory, EntityPlayer player, int windowType) {
|
||||
private void openCustomInventory(Inventory inventory, EntityPlayer player, String windowType) {
|
||||
if (player.playerConnection == null) return;
|
||||
Container container = new CraftContainer(inventory, this, player.nextContainerCounter());
|
||||
|
||||
@@ -249,7 +240,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
String title = container.getBukkitView().getTitle();
|
||||
int size = container.getBukkitView().getTopInventory().getSize();
|
||||
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, title, size, true));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, new ChatComponentText(title), size));
|
||||
getHandle().activeContainer = container;
|
||||
getHandle().activeContainer.addSlotListener(player);
|
||||
}
|
||||
@@ -264,7 +255,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
if (location == null) {
|
||||
location = getLocation();
|
||||
}
|
||||
getHandle().startCrafting(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
getHandle().openTileEntity(new TileEntityContainerWorkbench(getHandle().world, new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ())));
|
||||
if (force) {
|
||||
getHandle().activeContainer.checkReachable = false;
|
||||
}
|
||||
@@ -281,7 +272,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
if (location == null) {
|
||||
location = getLocation();
|
||||
}
|
||||
getHandle().startEnchanting(location.getBlockX(), location.getBlockY(), location.getBlockZ(), null);
|
||||
getHandle().openTileEntity((ITileEntityContainer) getHandle().world.getTileEntity(new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ())));
|
||||
if (force) {
|
||||
getHandle().activeContainer.checkReachable = false;
|
||||
}
|
||||
@@ -311,10 +302,10 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
|
||||
// Now open the window
|
||||
InventoryType type = inventory.getType();
|
||||
int windowType = CraftContainer.getNotchInventoryType(type);
|
||||
String windowType = CraftContainer.getNotchInventoryType(type);
|
||||
String title = inventory.getTitle();
|
||||
int size = inventory.getTopInventory().getSize();
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, title, size, false));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, new ChatComponentText(title), size));
|
||||
player.activeContainer = container;
|
||||
player.activeContainer.addSlotListener(player);
|
||||
}
|
||||
|
||||
@@ -197,11 +197,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
reason = DamageSource.mobAttack(((CraftLivingEntity) source).getHandle());
|
||||
}
|
||||
|
||||
if (entity instanceof EntityEnderDragon) {
|
||||
((EntityEnderDragon) entity).dealDamage(reason, (float) amount);
|
||||
} else {
|
||||
entity.damageEntity(reason, (float) amount);
|
||||
}
|
||||
entity.damageEntity(reason, (float) amount);
|
||||
}
|
||||
|
||||
public Location getEyeLocation() {
|
||||
@@ -263,7 +259,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
}
|
||||
removePotionEffect(effect.getType());
|
||||
}
|
||||
getHandle().addEffect(new MobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient()));
|
||||
getHandle().addEffect(new MobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), true));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -384,47 +380,6 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
return super.teleport(location, cause);
|
||||
}
|
||||
|
||||
public void setCustomName(String name) {
|
||||
if (!(getHandle() instanceof EntityInsentient)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (name == null) {
|
||||
name = "";
|
||||
}
|
||||
|
||||
// Names cannot be more than 64 characters due to DataWatcher limitations
|
||||
if (name.length() > 64) {
|
||||
name = name.substring(0, 64);
|
||||
}
|
||||
|
||||
((EntityInsentient) getHandle()).setCustomName(name);
|
||||
}
|
||||
|
||||
public String getCustomName() {
|
||||
if (!(getHandle() instanceof EntityInsentient)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String name = ((EntityInsentient) getHandle()).getCustomName();
|
||||
|
||||
if (name == null || name.length() == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setCustomNameVisible(boolean flag) {
|
||||
if (getHandle() instanceof EntityInsentient) {
|
||||
((EntityInsentient) getHandle()).setCustomNameVisible(flag);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isCustomNameVisible() {
|
||||
return getHandle() instanceof EntityInsentient && ((EntityInsentient) getHandle()).getCustomNameVisible();
|
||||
}
|
||||
|
||||
public boolean isLeashed() {
|
||||
if (!(getHandle() instanceof EntityInsentient)) {
|
||||
return false;
|
||||
|
||||
@@ -54,9 +54,7 @@ public class CraftPainting extends CraftHanging implements Painting {
|
||||
private void update() {
|
||||
WorldServer world = ((CraftWorld) getWorld()).getHandle();
|
||||
EntityPainting painting = new EntityPainting(world);
|
||||
painting.x = getHandle().x;
|
||||
painting.y = getHandle().y;
|
||||
painting.z = getHandle().z;
|
||||
painting.blockPosition = getHandle().blockPosition;
|
||||
painting.art = getHandle().art;
|
||||
painting.setDirection(getHandle().direction);
|
||||
getHandle().die();
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.MapMaker;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import io.netty.buffer.Unpooled;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -19,7 +21,6 @@ import java.util.logging.Logger;
|
||||
|
||||
import net.minecraft.server.*;
|
||||
|
||||
import net.minecraft.util.com.mojang.authlib.GameProfile;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.apache.commons.lang.NotImplementedException;
|
||||
import org.bukkit.*;
|
||||
@@ -53,6 +54,7 @@ import org.bukkit.event.player.PlayerRegisterChannelEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.player.PlayerUnregisterChannelEvent;
|
||||
import org.bukkit.inventory.InventoryView.Property;
|
||||
import org.bukkit.map.MapCursor;
|
||||
import org.bukkit.map.MapView;
|
||||
import org.bukkit.metadata.MetadataValue;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
@@ -174,44 +176,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public String getPlayerListName() {
|
||||
return getHandle().listName;
|
||||
return CraftChatMessage.fromComponent(getHandle().listName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerListName(String name) {
|
||||
String oldName = getHandle().listName;
|
||||
|
||||
if (name == null) {
|
||||
name = getName();
|
||||
}
|
||||
|
||||
if (oldName.equals(name)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (name.length() > 16) {
|
||||
throw new IllegalArgumentException("Player list names can only be a maximum of 16 characters long");
|
||||
}
|
||||
|
||||
// Collisions will make for invisible people
|
||||
for (int i = 0; i < server.getHandle().players.size(); ++i) {
|
||||
if (((EntityPlayer) server.getHandle().players.get(i)).listName.equals(name)) {
|
||||
throw new IllegalArgumentException(name + " is already assigned as a player list name for someone");
|
||||
}
|
||||
}
|
||||
|
||||
getHandle().listName = name;
|
||||
|
||||
// Change the name on the client side
|
||||
PacketPlayOutPlayerInfo oldpacket = new PacketPlayOutPlayerInfo(oldName, false, 9999);
|
||||
PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(name, true, getHandle().ping);
|
||||
for (int i = 0; i < server.getHandle().players.size(); ++i) {
|
||||
EntityPlayer entityplayer = (EntityPlayer) server.getHandle().players.get(i);
|
||||
if (entityplayer.playerConnection == null) continue;
|
||||
|
||||
if (entityplayer.getBukkitEntity().canSee(this)) {
|
||||
entityplayer.playerConnection.sendPacket(oldpacket);
|
||||
entityplayer.playerConnection.sendPacket(packet);
|
||||
getHandle().listName = name.equals(getName()) ? null : CraftChatMessage.fromString(name)[0];
|
||||
for (EntityPlayer player : (List<EntityPlayer>)server.getHandle().players) {
|
||||
if (player.getBukkitEntity().canSee(this)) {
|
||||
player.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, getHandle()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -248,7 +224,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
// Do not directly assign here, from the packethandler we'll assign it.
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutSpawnPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutSpawnPosition(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -343,7 +319,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
int packetData = effect.getId();
|
||||
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(packetData, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), data, false);
|
||||
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(packetData, new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), data, false);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@@ -368,10 +344,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void sendBlockChange(Location loc, int material, byte data) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), ((CraftWorld) loc.getWorld()).getHandle());
|
||||
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(((CraftWorld) loc.getWorld()).getHandle(), new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
|
||||
packet.block = CraftMagicNumbers.getBlock(material);
|
||||
packet.data = data;
|
||||
packet.block = CraftMagicNumbers.getBlock(material).fromLegacyData(data);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@@ -390,10 +365,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
throw new IllegalArgumentException("Must have at least 4 lines");
|
||||
}
|
||||
|
||||
// Limit to 15 chars per line and set null lines to blank
|
||||
String[] astring = CraftSign.sanitizeLines(lines);
|
||||
IChatBaseComponent[] components = CraftSign.sanitizeLines(lines);
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutUpdateSign(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), astring));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutUpdateSign(getHandle().world, new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), components));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -435,15 +409,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
RenderData data = ((CraftMapView) map).render(this);
|
||||
for (int x = 0; x < 128; ++x) {
|
||||
byte[] bytes = new byte[131];
|
||||
bytes[1] = (byte) x;
|
||||
for (int y = 0; y < 128; ++y) {
|
||||
bytes[y + 3] = data.buffer[y * 128 + x];
|
||||
Collection<MapIcon> icons = new ArrayList<MapIcon>();
|
||||
for (MapCursor cursor : data.cursors) {
|
||||
if (cursor.isVisible()) {
|
||||
icons.add(new MapIcon(cursor.getRawType(), cursor.getX(), cursor.getY(), cursor.getDirection()));
|
||||
}
|
||||
PacketPlayOutMap packet = new PacketPlayOutMap(map.getId(), bytes);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
PacketPlayOutMap packet = new PacketPlayOutMap(map.getId(), map.getScale().getValue(), icons, data.buffer, 0, 0, 0, 0);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -455,7 +429,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
if (entity.playerConnection == null || entity.playerConnection.isDisconnected()) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (entity.passenger != null) {
|
||||
@@ -781,7 +755,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
getHandle().e((Entity) getHandle()); // RENAME
|
||||
getHandle().playerInteractManager.setGameMode(EnumGamemode.getById(mode.getValue()));
|
||||
getHandle().fallDistance = 0;
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutGameStateChange(3, mode.getValue()));
|
||||
@@ -793,90 +768,108 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return GameMode.getByValue(getHandle().playerInteractManager.getGameMode().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void giveExp(int exp) {
|
||||
getHandle().giveExp(exp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void giveExpLevels(int levels) {
|
||||
getHandle().levelDown(levels);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getExp() {
|
||||
return getHandle().exp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExp(float exp) {
|
||||
getHandle().exp = exp;
|
||||
getHandle().lastSentExp = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLevel() {
|
||||
return getHandle().expLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLevel(int level) {
|
||||
getHandle().expLevel = level;
|
||||
getHandle().lastSentExp = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTotalExperience() {
|
||||
return getHandle().expTotal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTotalExperience(int exp) {
|
||||
getHandle().expTotal = exp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getExhaustion() {
|
||||
return getHandle().getFoodData().exhaustionLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExhaustion(float value) {
|
||||
getHandle().getFoodData().exhaustionLevel = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getSaturation() {
|
||||
return getHandle().getFoodData().saturationLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSaturation(float value) {
|
||||
getHandle().getFoodData().saturationLevel = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFoodLevel() {
|
||||
return getHandle().getFoodData().foodLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFoodLevel(int value) {
|
||||
getHandle().getFoodData().foodLevel = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getBedSpawnLocation() {
|
||||
World world = getServer().getWorld(getHandle().spawnWorld);
|
||||
ChunkCoordinates bed = getHandle().getBed();
|
||||
BlockPosition bed = getHandle().getBed();
|
||||
|
||||
if (world != null && bed != null) {
|
||||
bed = EntityHuman.getBed(((CraftWorld) world).getHandle(), bed, getHandle().isRespawnForced());
|
||||
if (bed != null) {
|
||||
return new Location(world, bed.x, bed.y, bed.z);
|
||||
return new Location(world, bed.getX(), bed.getY(), bed.getZ());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBedSpawnLocation(Location location) {
|
||||
setBedSpawnLocation(location, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBedSpawnLocation(Location location, boolean override) {
|
||||
if (location == null) {
|
||||
getHandle().setRespawnPosition(null, override);
|
||||
} else {
|
||||
getHandle().setRespawnPosition(new ChunkCoordinates(location.getBlockX(), location.getBlockY(), location.getBlockZ()), override);
|
||||
getHandle().setRespawnPosition(new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ()), override);
|
||||
getHandle().spawnWorld = location.getWorld().getName();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hidePlayer(Player player) {
|
||||
Validate.notNull(player, "hidden player cannot be null");
|
||||
if (getHandle().playerConnection == null) return;
|
||||
@@ -893,9 +886,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
//remove the hidden player from this player user list
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(player.getPlayerListName(), false, 9999));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, other));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPlayer(Player player) {
|
||||
Validate.notNull(player, "shown player cannot be null");
|
||||
if (getHandle().playerConnection == null) return;
|
||||
@@ -910,17 +904,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
entry.updatePlayer(getHandle());
|
||||
}
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(player.getPlayerListName(), true, getHandle().ping));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, other));
|
||||
}
|
||||
|
||||
public void removeDisconnectingPlayer(Player player) {
|
||||
hiddenPlayers.remove(player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSee(Player player) {
|
||||
return !hiddenPlayers.contains(player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> serialize() {
|
||||
Map<String, Object> result = new LinkedHashMap<String, Object>();
|
||||
|
||||
@@ -929,6 +925,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Player getPlayer() {
|
||||
return this;
|
||||
}
|
||||
@@ -955,14 +952,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getFirstPlayed() {
|
||||
return firstPlayed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastPlayed() {
|
||||
return lastPlayed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayedBefore() {
|
||||
return hasPlayedBefore;
|
||||
}
|
||||
@@ -1009,36 +1009,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
data.setString("lastKnownName", handle.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean beginConversation(Conversation conversation) {
|
||||
return conversationTracker.beginConversation(conversation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abandonConversation(Conversation conversation) {
|
||||
conversationTracker.abandonConversation(conversation, new ConversationAbandonedEvent(conversation, new ManuallyAbandonedConversationCanceller()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) {
|
||||
conversationTracker.abandonConversation(conversation, details);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptConversationInput(String input) {
|
||||
conversationTracker.acceptConversationInput(input);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConversing() {
|
||||
return conversationTracker.isConversing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPluginMessage(Plugin source, String channel, byte[] message) {
|
||||
StandardMessenger.validatePluginMessage(server.getMessenger(), source, channel, message);
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
if (channels.contains(channel)) {
|
||||
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload(channel, message);
|
||||
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload(channel, new PacketDataSerializer(Unpooled.wrappedBuffer(message)));
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTexturePack(String url) {
|
||||
setResourcePack(url);
|
||||
}
|
||||
@@ -1047,7 +1054,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void setResourcePack(String url) {
|
||||
Validate.notNull(url, "Resource pack URL cannot be null");
|
||||
|
||||
getHandle().setResourcePack(url);
|
||||
getHandle().setResourcePack(url, "null");
|
||||
}
|
||||
|
||||
public void addChannel(String channel) {
|
||||
@@ -1062,6 +1069,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getListeningPluginChannels() {
|
||||
return ImmutableSet.copyOf(channels);
|
||||
}
|
||||
@@ -1082,7 +1090,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload("REGISTER", stream.toByteArray()));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload("REGISTER", new PacketDataSerializer(Unpooled.wrappedBuffer(stream.toByteArray()))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1126,10 +1134,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
perm.clearPermissions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFlying() {
|
||||
return getHandle().abilities.isFlying;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFlying(boolean value) {
|
||||
if (!getAllowFlight() && value) {
|
||||
throw new IllegalArgumentException("Cannot make player fly if getAllowFlight() is false");
|
||||
@@ -1139,10 +1149,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
getHandle().updateAbilities();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getAllowFlight() {
|
||||
return getHandle().abilities.canFly;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAllowFlight(boolean value) {
|
||||
if (isFlying() && !value) {
|
||||
getHandle().abilities.isFlying = false;
|
||||
@@ -1161,6 +1173,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFlySpeed(float value) {
|
||||
validateSpeed(value);
|
||||
EntityPlayer player = getHandle();
|
||||
@@ -1169,6 +1182,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWalkSpeed(float value) {
|
||||
validateSpeed(value);
|
||||
EntityPlayer player = getHandle();
|
||||
@@ -1176,10 +1190,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
player.updateAbilities();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFlySpeed() {
|
||||
return getHandle().abilities.flySpeed * 2f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getWalkSpeed() {
|
||||
return getHandle().abilities.walkSpeed * 2f;
|
||||
}
|
||||
@@ -1209,10 +1225,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
getHandle().triggerHealthUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CraftScoreboard getScoreboard() {
|
||||
return this.server.getScoreboardManager().getPlayerBoard(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScoreboard(Scoreboard scoreboard) {
|
||||
Validate.notNull(scoreboard, "Scoreboard cannot be null");
|
||||
PlayerConnection playerConnection = getHandle().playerConnection;
|
||||
@@ -1226,6 +1244,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
this.server.getScoreboardManager().setPlayerBoard(this, scoreboard);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHealthScale(double value) {
|
||||
Validate.isTrue((float) value > 0F, "Must be greater than 0");
|
||||
healthScale = value;
|
||||
@@ -1233,16 +1252,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
updateScaledHealth();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getHealthScale() {
|
||||
return healthScale;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHealthScaled(boolean scale) {
|
||||
if (scaledHealth != (scaledHealth = scale)) {
|
||||
updateScaledHealth();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHealthScaled() {
|
||||
return scaledHealth;
|
||||
}
|
||||
@@ -1285,6 +1307,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
break;
|
||||
}
|
||||
}
|
||||
collection.add(new AttributeModifiable(getHandle().getAttributeMap(), (new AttributeRanged("generic.maxHealth", scaledHealth ? healthScale : getMaxHealth(), 0.0D, Float.MAX_VALUE)).a("Max Health").a(true)));
|
||||
collection.add(new AttributeModifiable(getHandle().getAttributeMap(), (new AttributeRanged(null, "generic.maxHealth", scaledHealth ? healthScale : getMaxHealth(), 0.0D, Float.MAX_VALUE)).a("Max Health").a(true)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityRabbit;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Rabbit;
|
||||
|
||||
public class CraftRabbit extends CraftAnimals implements Rabbit {
|
||||
|
||||
public CraftRabbit(CraftServer server, EntityRabbit entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftRabbit";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.RABBIT;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntitySheep;
|
||||
|
||||
import net.minecraft.server.EnumColor;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
@@ -13,11 +14,11 @@ public class CraftSheep extends CraftAnimals implements Sheep {
|
||||
}
|
||||
|
||||
public DyeColor getColor() {
|
||||
return DyeColor.getByWoolData((byte) getHandle().getColor());
|
||||
return DyeColor.getByWoolData((byte) getHandle().getColor().getColorIndex());
|
||||
}
|
||||
|
||||
public void setColor(DyeColor color) {
|
||||
getHandle().setColor(color.getWoolData());
|
||||
getHandle().setColor(EnumColor.fromColorIndex(color.getWoolData()));
|
||||
}
|
||||
|
||||
public boolean isSheared() {
|
||||
|
||||
@@ -54,7 +54,7 @@ public class CraftTameableAnimal extends CraftAnimals implements Tameable, Creat
|
||||
public void setOwner(AnimalTamer tamer) {
|
||||
if (tamer != null) {
|
||||
setTamed(true);
|
||||
getHandle().setPathEntity(null);
|
||||
getHandle().setGoalTarget(null, null, false);
|
||||
setOwnerUUID(tamer.getUniqueId());
|
||||
} else {
|
||||
setTamed(false);
|
||||
|
||||
@@ -3,10 +3,13 @@ package org.bukkit.craftbukkit.entity;
|
||||
import net.minecraft.server.EntityVillager;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventory;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Villager;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
|
||||
public class CraftVillager extends CraftAgeable implements Villager {
|
||||
public class CraftVillager extends CraftAgeable implements Villager, InventoryHolder {
|
||||
public CraftVillager(CraftServer server, EntityVillager entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
@@ -33,4 +36,9 @@ public class CraftVillager extends CraftAgeable implements Villager {
|
||||
Validate.notNull(profession);
|
||||
getHandle().setProfession(profession.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return new CraftInventory(getHandle().inventory);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,10 @@ package org.bukkit.craftbukkit.entity;
|
||||
import net.minecraft.server.EntityWaterAnimal;
|
||||
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.WaterMob;
|
||||
|
||||
public class CraftWaterMob extends CraftCreature implements WaterMob {
|
||||
public class CraftWaterMob extends CraftLivingEntity implements WaterMob {
|
||||
|
||||
public CraftWaterMob(CraftServer server, EntityWaterAnimal entity) {
|
||||
super(server, entity);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityWolf;
|
||||
import net.minecraft.server.EnumColor;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
@@ -30,10 +31,10 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf {
|
||||
}
|
||||
|
||||
public DyeColor getCollarColor() {
|
||||
return DyeColor.getByWoolData((byte) getHandle().getCollarColor());
|
||||
return DyeColor.getByWoolData((byte) getHandle().getCollarColor().getColorIndex());
|
||||
}
|
||||
|
||||
public void setCollarColor(DyeColor color) {
|
||||
getHandle().setCollarColor(color.getWoolData());
|
||||
getHandle().setCollarColor(EnumColor.fromColorIndex(color.getWoolData()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user