@@ -59,7 +59,7 @@ public class CraftArrow extends AbstractProjectile implements Arrow {
|
||||
}
|
||||
|
||||
EntityArrow handle = getHandle();
|
||||
return getWorld().getBlockAt(handle.h, handle.at, handle.au); // PAIL: rename tileX, tileY, tileZ
|
||||
return getWorld().getBlockAt(handle.tileX, handle.tileY, handle.tileZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityCod;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Cod;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftCod extends CraftFish implements Cod {
|
||||
|
||||
public CraftCod(CraftServer server, EntityCod entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityCod getHandle() {
|
||||
return (EntityCod) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftCod";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.COD;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityDolphin;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Dolphin;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftDolphin extends CraftCreature implements Dolphin {
|
||||
|
||||
public CraftDolphin(CraftServer server, EntityDolphin entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityDolphin getHandle() {
|
||||
return (EntityDolphin) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftDolphin";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.DOLPHIN;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityDrowned;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Drowned;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftDrowned extends CraftZombie implements Drowned {
|
||||
|
||||
public CraftDrowned(CraftServer server, EntityDrowned entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityDrowned getHandle() {
|
||||
return (EntityDrowned) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftDrowned";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.DROWNED;
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ public class CraftEnderSignal extends CraftEntity implements EnderSignal {
|
||||
|
||||
@Override
|
||||
public Location getTargetLocation() {
|
||||
return new Location(getWorld(), getHandle().a, getHandle().b, getHandle().c, getHandle().yaw, getHandle().pitch); // PAIL rename targetX, targetY, targetZ
|
||||
return new Location(getWorld(), getHandle().targetX, getHandle().targetY, getHandle().targetZ, getHandle().yaw, getHandle().pitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -41,21 +41,21 @@ public class CraftEnderSignal extends CraftEntity implements EnderSignal {
|
||||
|
||||
@Override
|
||||
public boolean getDropItem() {
|
||||
return getHandle().e; // PAIL rename getDropItem
|
||||
return getHandle().shouldDropItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDropItem(boolean shouldDropItem) {
|
||||
getHandle().e = shouldDropItem; // PAIL rename getDropItem
|
||||
getHandle().shouldDropItem = shouldDropItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDespawnTimer() {
|
||||
return getHandle().d; // PAIL rename despawnTimer
|
||||
return getHandle().despawnTimer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDespawnTimer(int time) {
|
||||
getHandle().d = time; // PAIL rename despawnTimer
|
||||
getHandle().despawnTimer = time;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,9 @@ package org.bukkit.craftbukkit.entity;
|
||||
import net.minecraft.server.EntityEnderman;
|
||||
|
||||
import net.minecraft.server.IBlockData;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.Enderman;
|
||||
import org.bukkit.entity.EntityType;
|
||||
@@ -17,11 +18,22 @@ public class CraftEnderman extends CraftMonster implements Enderman {
|
||||
|
||||
public MaterialData getCarriedMaterial() {
|
||||
IBlockData blockData = getHandle().getCarried();
|
||||
return (blockData == null) ? Material.AIR.getNewData((byte) 0) : CraftMagicNumbers.getMaterial(blockData.getBlock()).getNewData((byte) blockData.getBlock().toLegacyData(blockData));
|
||||
return CraftMagicNumbers.getMaterial(blockData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockData getCarriedBlock() {
|
||||
IBlockData blockData = getHandle().getCarried();
|
||||
return CraftBlockData.fromData(blockData);
|
||||
}
|
||||
|
||||
public void setCarriedMaterial(MaterialData data) {
|
||||
getHandle().setCarried(CraftMagicNumbers.getBlock(data.getItemTypeId()).fromLegacyData(data.getData()));
|
||||
getHandle().setCarried(CraftMagicNumbers.getBlock(data));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCarriedBlock(BlockData blockData) {
|
||||
getHandle().setCarried(((CraftBlockData) blockData).getState());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.bukkit.World;
|
||||
import org.bukkit.block.PistonMoveReaction;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.bukkit.craftbukkit.util.CraftChatMessage;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.metadata.MetadataValue;
|
||||
@@ -52,6 +53,14 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
// Water Animals
|
||||
else if (entity instanceof EntityWaterAnimal) {
|
||||
if (entity instanceof EntitySquid) { return new CraftSquid(server, (EntitySquid) entity); }
|
||||
else if (entity instanceof EntityFish) {
|
||||
if (entity instanceof EntityCod) { return new CraftCod(server, (EntityCod) entity); }
|
||||
else if (entity instanceof EntityPufferFish) { return new CraftPufferFish(server, (EntityPufferFish) entity); }
|
||||
else if (entity instanceof EntitySalmon) { return new CraftSalmon(server, (EntitySalmon) entity); }
|
||||
else if (entity instanceof EntityTropicalFish) { return new CraftTropicalFish(server, (EntityTropicalFish) entity); }
|
||||
else { return new CraftFish(server, (EntityFish) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityDolphin) { return new CraftDolphin(server, (EntityDolphin) entity); }
|
||||
else { return new CraftWaterMob(server, (EntityWaterAnimal) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityCreature) {
|
||||
@@ -80,6 +89,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
else if (entity instanceof EntityRabbit) { return new CraftRabbit(server, (EntityRabbit) entity); }
|
||||
else if (entity instanceof EntityPolarBear) { return new CraftPolarBear(server, (EntityPolarBear) entity); }
|
||||
else if (entity instanceof EntityTurtle) { return new CraftTurtle(server, (EntityTurtle) entity); }
|
||||
else { return new CraftAnimals(server, (EntityAnimal) entity); }
|
||||
}
|
||||
// Monsters
|
||||
@@ -88,6 +98,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
if (entity instanceof EntityPigZombie) { return new CraftPigZombie(server, (EntityPigZombie) entity); }
|
||||
else if (entity instanceof EntityZombieHusk) { return new CraftHusk(server, (EntityZombieHusk) entity); }
|
||||
else if (entity instanceof EntityZombieVillager) { return new CraftVillagerZombie(server, (EntityZombieVillager) entity); }
|
||||
else if (entity instanceof EntityDrowned) { return new CraftDrowned(server, (EntityDrowned) entity); }
|
||||
else { return new CraftZombie(server, (EntityZombie) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityCreeper) { return new CraftCreeper(server, (EntityCreeper) entity); }
|
||||
@@ -140,6 +151,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
// Flying
|
||||
else if (entity instanceof EntityFlying) {
|
||||
if (entity instanceof EntityGhast) { return new CraftGhast(server, (EntityGhast) entity); }
|
||||
else if (entity instanceof EntityPhantom) { return new CraftPhantom(server, (EntityPhantom) entity); }
|
||||
else { return new CraftFlying(server, (EntityFlying) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityEnderDragon) {
|
||||
@@ -164,7 +176,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else { return new CraftArrow(server, (EntityArrow) entity); }
|
||||
}
|
||||
else if (entity instanceof EntitySpectralArrow) { return new CraftSpectralArrow(server, (EntitySpectralArrow) entity); }
|
||||
else if (entity instanceof EntityArrow) { return new CraftArrow(server, (EntityArrow) entity); }
|
||||
else if (entity instanceof EntityArrow) {
|
||||
if (entity instanceof EntityThrownTrident) { return new CraftTrident(server, (EntityThrownTrident) entity); }
|
||||
else { return new CraftArrow(server, (EntityArrow) entity); }
|
||||
}
|
||||
else if (entity instanceof EntityBoat) { return new CraftBoat(server, (EntityBoat) entity); }
|
||||
else if (entity instanceof EntityProjectile) {
|
||||
if (entity instanceof EntityEgg) { return new CraftEgg(server, (EntityEgg) entity); }
|
||||
@@ -186,7 +201,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
else if (entity instanceof EntityEnderSignal) { return new CraftEnderSignal(server, (EntityEnderSignal) entity); }
|
||||
else if (entity instanceof EntityEnderCrystal) { return new CraftEnderCrystal(server, (EntityEnderCrystal) entity); }
|
||||
else if (entity instanceof EntityFishingHook) { return new CraftFish(server, (EntityFishingHook) entity); }
|
||||
else if (entity instanceof EntityFishingHook) { return new CraftFishHook(server, (EntityFishingHook) entity); }
|
||||
else if (entity instanceof EntityItem) { return new CraftItem(server, (EntityItem) entity); }
|
||||
else if (entity instanceof EntityWeather) {
|
||||
if (entity instanceof EntityLightning) { return new CraftLightningStrike(server, (EntityLightning) entity); }
|
||||
@@ -507,7 +522,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
return null;
|
||||
}
|
||||
|
||||
return getHandle().bJ().getBukkitEntity(); // PAIL: rename getVehicle() -> getRootVehicle(), bJ() -> getVehicle()
|
||||
return getHandle().getVehicle().getBukkitEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -516,18 +531,23 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
name = "";
|
||||
}
|
||||
|
||||
getHandle().setCustomName(name);
|
||||
// sane limit for name length
|
||||
if (name.length() > 256) {
|
||||
name = name.substring(0, 256);
|
||||
}
|
||||
|
||||
getHandle().setCustomName(CraftChatMessage.fromStringOrNull(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCustomName() {
|
||||
String name = getHandle().getCustomName();
|
||||
IChatBaseComponent name = getHandle().getCustomName();
|
||||
|
||||
if (name == null || name.length() == 0) {
|
||||
if (name == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return name;
|
||||
return CraftChatMessage.fromComponent(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,9 @@ package org.bukkit.craftbukkit.entity;
|
||||
import net.minecraft.server.EntityFallingBlock;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
@@ -29,15 +31,11 @@ public class CraftFallingBlock extends CraftEntity implements FallingBlock {
|
||||
}
|
||||
|
||||
public Material getMaterial() {
|
||||
return Material.getMaterial(getBlockId());
|
||||
return CraftMagicNumbers.getMaterial(getHandle().getBlock()).getItemType();
|
||||
}
|
||||
|
||||
public int getBlockId() {
|
||||
return CraftMagicNumbers.getId(getHandle().getBlock().getBlock());
|
||||
}
|
||||
|
||||
public byte getBlockData() {
|
||||
return (byte) getHandle().getBlock().getBlock().toLegacyData(getHandle().getBlock());
|
||||
public BlockData getBlockData() {
|
||||
return CraftBlockData.fromData(getHandle().getBlock());
|
||||
}
|
||||
|
||||
public boolean getDropItem() {
|
||||
|
||||
@@ -24,15 +24,15 @@ public class CraftFirework extends CraftEntity implements Firework {
|
||||
ItemStack item = getHandle().getDataWatcher().get(EntityFireworks.FIREWORK_ITEM);
|
||||
|
||||
if (item.isEmpty()) {
|
||||
item = new ItemStack(Items.FIREWORKS);
|
||||
item = new ItemStack(Items.FIREWORK_ROCKET);
|
||||
getHandle().getDataWatcher().set(EntityFireworks.FIREWORK_ITEM, item);
|
||||
}
|
||||
|
||||
this.item = CraftItemStack.asCraftMirror(item);
|
||||
|
||||
// Ensure the item is a firework...
|
||||
if (this.item.getType() != Material.FIREWORK) {
|
||||
this.item.setType(Material.FIREWORK);
|
||||
if (this.item.getType() != Material.FIREWORK_ROCKET) {
|
||||
this.item.setType(Material.FIREWORK_ROCKET);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,65 +1,22 @@
|
||||
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;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import net.minecraft.server.EntityFish;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Fish;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
|
||||
public class CraftFish extends AbstractProjectile implements Fish {
|
||||
private double biteChance = -1;
|
||||
public class CraftFish extends CraftCreature implements Fish {
|
||||
|
||||
public CraftFish(CraftServer server, EntityFishingHook entity) {
|
||||
public CraftFish(CraftServer server, EntityFish entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
public ProjectileSource getShooter() {
|
||||
if (getHandle().owner != null) {
|
||||
return getHandle().owner.getBukkitEntity();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setShooter(ProjectileSource shooter) {
|
||||
if (shooter instanceof CraftHumanEntity) {
|
||||
getHandle().owner = (EntityHuman) ((CraftHumanEntity) shooter).entity;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityFishingHook getHandle() {
|
||||
return (EntityFishingHook) entity;
|
||||
public EntityFish getHandle() {
|
||||
return (EntityFish) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftFish";
|
||||
}
|
||||
|
||||
public EntityType getType() {
|
||||
return EntityType.FISHING_HOOK;
|
||||
}
|
||||
|
||||
public double getBiteChance() {
|
||||
EntityFishingHook hook = getHandle();
|
||||
|
||||
if (this.biteChance == -1) {
|
||||
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;
|
||||
}
|
||||
return this.biteChance;
|
||||
}
|
||||
|
||||
public void setBiteChance(double chance) {
|
||||
Validate.isTrue(chance >= 0 && chance <= 1, "The bite chance must be between 0 and 1.");
|
||||
this.biteChance = chance;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
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;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.FishHook;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
|
||||
public class CraftFishHook extends AbstractProjectile implements FishHook {
|
||||
private double biteChance = -1;
|
||||
|
||||
public CraftFishHook(CraftServer server, EntityFishingHook entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
public ProjectileSource getShooter() {
|
||||
if (getHandle().owner != null) {
|
||||
return getHandle().owner.getBukkitEntity();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setShooter(ProjectileSource shooter) {
|
||||
if (shooter instanceof CraftHumanEntity) {
|
||||
getHandle().owner = (EntityHuman) ((CraftHumanEntity) shooter).entity;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityFishingHook getHandle() {
|
||||
return (EntityFishingHook) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftFishingHook";
|
||||
}
|
||||
|
||||
public EntityType getType() {
|
||||
return EntityType.FISHING_HOOK;
|
||||
}
|
||||
|
||||
public double getBiteChance() {
|
||||
EntityFishingHook hook = getHandle();
|
||||
|
||||
if (this.biteChance == -1) {
|
||||
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;
|
||||
}
|
||||
return this.biteChance;
|
||||
}
|
||||
|
||||
public void setBiteChance(double chance) {
|
||||
Validate.isTrue(chance >= 0 && chance <= 1, "The bite chance must be between 0 and 1.");
|
||||
this.biteChance = chance;
|
||||
}
|
||||
}
|
||||
@@ -48,10 +48,6 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
enderChest = new CraftInventory(entity.getEnderChest());
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return getHandle().getName();
|
||||
}
|
||||
|
||||
public PlayerInventory getInventory() {
|
||||
return inventory;
|
||||
}
|
||||
@@ -295,7 +291,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
public InventoryView openWorkbench(Location location, boolean force) {
|
||||
if (!force) {
|
||||
Block block = location.getBlock();
|
||||
if (block.getType() != Material.WORKBENCH) {
|
||||
if (block.getType() != Material.CRAFTING_TABLE) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -312,7 +308,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
public InventoryView openEnchanting(Location location, boolean force) {
|
||||
if (!force) {
|
||||
Block block = location.getBlock();
|
||||
if (block.getType() != Material.ENCHANTMENT_TABLE) {
|
||||
if (block.getType() != Material.ENCHANTING_TABLE) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -325,7 +321,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
TileEntity container = getHandle().world.getTileEntity(pos);
|
||||
if (container == null && force) {
|
||||
container = new TileEntityEnchantTable();
|
||||
container.a(getHandle().world);
|
||||
container.setWorld(getHandle().world);
|
||||
container.setPosition(pos);
|
||||
}
|
||||
getHandle().openTileEntity((ITileEntityContainer) container);
|
||||
|
||||
@@ -27,6 +27,7 @@ import net.minecraft.server.EntitySnowball;
|
||||
import net.minecraft.server.EntityThrownExpBottle;
|
||||
import net.minecraft.server.EntityTippedArrow;
|
||||
import net.minecraft.server.EntitySpectralArrow;
|
||||
import net.minecraft.server.EntityThrownTrident;
|
||||
import net.minecraft.server.EntityWither;
|
||||
import net.minecraft.server.EntityWitherSkull;
|
||||
import net.minecraft.server.GenericAttributes;
|
||||
@@ -65,6 +66,7 @@ import org.bukkit.entity.SpectralArrow;
|
||||
import org.bukkit.entity.ThrownExpBottle;
|
||||
import org.bukkit.entity.ThrownPotion;
|
||||
import org.bukkit.entity.TippedArrow;
|
||||
import org.bukkit.entity.Trident;
|
||||
import org.bukkit.entity.WitherSkull;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
@@ -318,6 +320,8 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
((EntityTippedArrow) launch).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
|
||||
} else if (SpectralArrow.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntitySpectralArrow(world, getHandle());
|
||||
} else if (Trident.class.isAssignableFrom(projectile)) {
|
||||
launch = new EntityThrownTrident(world, getHandle(), net.minecraft.server.ItemStack.a);
|
||||
} else {
|
||||
launch = new EntityTippedArrow(world, getHandle());
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@ import net.minecraft.server.Blocks;
|
||||
import net.minecraft.server.EntityMinecartAbstract;
|
||||
|
||||
import net.minecraft.server.IBlockData;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.Minecart;
|
||||
import org.bukkit.material.MaterialData;
|
||||
@@ -64,7 +66,19 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
|
||||
|
||||
public void setDisplayBlock(MaterialData material) {
|
||||
if(material != null) {
|
||||
IBlockData block = CraftMagicNumbers.getBlock(material.getItemTypeId()).fromLegacyData(material.getData());
|
||||
IBlockData block = CraftMagicNumbers.getBlock(material);
|
||||
this.getHandle().setDisplayBlock(block);
|
||||
} else {
|
||||
// Set block to air (default) and set the flag to not have a display block.
|
||||
this.getHandle().setDisplayBlock(Blocks.AIR.getBlockData());
|
||||
this.getHandle().a(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDisplayBlockData(BlockData blockData) {
|
||||
if (blockData != null) {
|
||||
IBlockData block = ((CraftBlockData) blockData).getState();
|
||||
this.getHandle().setDisplayBlock(block);
|
||||
} else {
|
||||
// Set block to air (default) and set the flag to not have a display block.
|
||||
@@ -75,7 +89,13 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
|
||||
|
||||
public MaterialData getDisplayBlock() {
|
||||
IBlockData blockData = getHandle().getDisplayBlock();
|
||||
return CraftMagicNumbers.getMaterial(blockData.getBlock()).getNewData((byte) blockData.getBlock().toLegacyData(blockData));
|
||||
return CraftMagicNumbers.getMaterial(blockData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockData getDisplayBlockData() {
|
||||
IBlockData blockData = getHandle().getDisplayBlock();
|
||||
return CraftBlockData.fromData(blockData);
|
||||
}
|
||||
|
||||
public void setDisplayBlockOffset(int offset) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import net.minecraft.server.EntityMinecartCommandBlock;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.util.CraftChatMessage;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.minecart.CommandMinecart;
|
||||
import org.bukkit.permissions.PermissibleBase;
|
||||
@@ -40,7 +41,7 @@ public class CraftMinecartCommand extends CraftMinecart implements CommandMineca
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
getHandle().getCommandBlock().setName(name != null ? name : "@");
|
||||
getHandle().getCommandBlock().setName(CraftChatMessage.fromStringOrNull(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -63,7 +64,7 @@ public class CraftMinecartCommand extends CraftMinecart implements CommandMineca
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return getHandle().getCommandBlock().getName();
|
||||
return CraftChatMessage.fromComponent(getHandle().getCommandBlock().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityPainting;
|
||||
import net.minecraft.server.EntityPainting.EnumArt;
|
||||
import net.minecraft.server.Paintings;
|
||||
import net.minecraft.server.WorldServer;
|
||||
|
||||
import org.bukkit.Art;
|
||||
@@ -19,7 +19,7 @@ public class CraftPainting extends CraftHanging implements Painting {
|
||||
}
|
||||
|
||||
public Art getArt() {
|
||||
EnumArt art = getHandle().art;
|
||||
Paintings art = getHandle().art;
|
||||
return CraftArt.NotchToBukkit(art);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public class CraftPainting extends CraftHanging implements Painting {
|
||||
|
||||
public boolean setArt(Art art, boolean force) {
|
||||
EntityPainting painting = this.getHandle();
|
||||
EnumArt oldArt = painting.art;
|
||||
Paintings oldArt = painting.art;
|
||||
painting.art = CraftArt.BukkitToNotch(art);
|
||||
painting.setDirection(painting.direction);
|
||||
if (!force && !painting.survives()) {
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityPhantom;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Phantom;
|
||||
|
||||
public class CraftPhantom extends CraftFlying implements Phantom {
|
||||
|
||||
public CraftPhantom(CraftServer server, EntityPhantom entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPhantom getHandle() {
|
||||
return (EntityPhantom) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return getHandle().getSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSize(int sz) {
|
||||
getHandle().setSize(sz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftPhantom";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.PHANTOM;
|
||||
}
|
||||
}
|
||||
@@ -24,8 +24,46 @@ import java.util.WeakHashMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.minecraft.server.*;
|
||||
import net.minecraft.server.PacketPlayOutTitle.EnumTitleAction;
|
||||
import net.minecraft.server.AdvancementDataPlayer;
|
||||
import net.minecraft.server.AdvancementProgress;
|
||||
import net.minecraft.server.AttributeInstance;
|
||||
import net.minecraft.server.AttributeMapServer;
|
||||
import net.minecraft.server.AttributeModifiable;
|
||||
import net.minecraft.server.AttributeRanged;
|
||||
import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.Container;
|
||||
import net.minecraft.server.Entity;
|
||||
import net.minecraft.server.EntityHuman;
|
||||
import net.minecraft.server.EntityLiving;
|
||||
import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.EntityTracker;
|
||||
import net.minecraft.server.EntityTrackerEntry;
|
||||
import net.minecraft.server.EnumChatFormat;
|
||||
import net.minecraft.server.EnumGamemode;
|
||||
import net.minecraft.server.IChatBaseComponent;
|
||||
import net.minecraft.server.MapIcon;
|
||||
import net.minecraft.server.MinecraftKey;
|
||||
import net.minecraft.server.NBTTagCompound;
|
||||
import net.minecraft.server.PacketDataSerializer;
|
||||
import net.minecraft.server.PacketPlayOutBlockChange;
|
||||
import net.minecraft.server.PacketPlayOutChat;
|
||||
import net.minecraft.server.PacketPlayOutCustomPayload;
|
||||
import net.minecraft.server.PacketPlayOutCustomSoundEffect;
|
||||
import net.minecraft.server.PacketPlayOutMap;
|
||||
import net.minecraft.server.PacketPlayOutNamedSoundEffect;
|
||||
import net.minecraft.server.PacketPlayOutPlayerInfo;
|
||||
import net.minecraft.server.PacketPlayOutSpawnPosition;
|
||||
import net.minecraft.server.PacketPlayOutStopSound;
|
||||
import net.minecraft.server.PacketPlayOutTitle;
|
||||
import net.minecraft.server.PacketPlayOutUpdateAttributes;
|
||||
import net.minecraft.server.PacketPlayOutUpdateHealth;
|
||||
import net.minecraft.server.PacketPlayOutWorldEvent;
|
||||
import net.minecraft.server.PacketPlayOutWorldParticles;
|
||||
import net.minecraft.server.PlayerConnection;
|
||||
import net.minecraft.server.TileEntitySign;
|
||||
import net.minecraft.server.Vec3D;
|
||||
import net.minecraft.server.WhiteListEntry;
|
||||
import net.minecraft.server.WorldServer;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.apache.commons.lang.NotImplementedException;
|
||||
@@ -36,12 +74,14 @@ import org.bukkit.Statistic;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Statistic.Type;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.configuration.serialization.DelegateDeserialization;
|
||||
import org.bukkit.conversations.Conversation;
|
||||
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||
import org.bukkit.conversations.ManuallyAbandonedConversationCanceller;
|
||||
import org.bukkit.craftbukkit.CraftParticle;
|
||||
import org.bukkit.craftbukkit.block.CraftSign;
|
||||
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||
import org.bukkit.craftbukkit.conversations.ConversationTracker;
|
||||
import org.bukkit.craftbukkit.CraftEffect;
|
||||
import org.bukkit.craftbukkit.CraftOfflinePlayer;
|
||||
@@ -58,7 +98,6 @@ import org.bukkit.craftbukkit.util.CraftChatMessage;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||
import org.bukkit.event.player.PlayerRegisterChannelEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.player.PlayerUnregisterChannelEvent;
|
||||
@@ -66,7 +105,6 @@ 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.IllegalPluginAccessException;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.messaging.StandardMessenger;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
@@ -182,7 +220,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (name == null) {
|
||||
name = getName();
|
||||
}
|
||||
getHandle().listName = name.equals(getName()) ? null : CraftChatMessage.fromString(name)[0];
|
||||
getHandle().listName = name.equals(getName()) ? null : CraftChatMessage.fromStringOrNull(name);
|
||||
for (EntityPlayer player : (List<EntityPlayer>)server.getHandle().players) {
|
||||
if (player.getBukkitEntity().canSee(this)) {
|
||||
player.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, getHandle()));
|
||||
@@ -347,7 +385,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void playSound(Location loc, String sound, org.bukkit.SoundCategory category, float volume, float pitch) {
|
||||
if (loc == null || sound == null || category == null || getHandle().playerConnection == null) return;
|
||||
|
||||
PacketPlayOutCustomSoundEffect packet = new PacketPlayOutCustomSoundEffect(sound, net.minecraft.server.SoundCategory.valueOf(category.name()), loc.getX(), loc.getY(), loc.getZ(), volume, pitch);
|
||||
PacketPlayOutCustomSoundEffect packet = new PacketPlayOutCustomSoundEffect(new MinecraftKey(sound), net.minecraft.server.SoundCategory.valueOf(category.name()), new Vec3D(loc.getX(), loc.getY(), loc.getZ()), volume, pitch);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@@ -369,11 +407,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@Override
|
||||
public void stopSound(String sound, org.bukkit.SoundCategory category) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
PacketDataSerializer packetdataserializer = new PacketDataSerializer(Unpooled.buffer());
|
||||
|
||||
packetdataserializer.a(category == null ? "" : net.minecraft.server.SoundCategory.valueOf(category.name()).a());
|
||||
packetdataserializer.a(sound);
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload("MC|StopSound", packetdataserializer));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutStopSound(new MinecraftKey(sound), category == null ? net.minecraft.server.SoundCategory.MASTER : net.minecraft.server.SoundCategory.valueOf(category.name())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -399,16 +434,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location loc, Material material, byte data) {
|
||||
sendBlockChange(loc, material.getId(), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location loc, int material, byte data) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(((CraftWorld) loc.getWorld()).getHandle(), new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
|
||||
packet.block = CraftMagicNumbers.getBlock(material).fromLegacyData(data);
|
||||
packet.block = CraftMagicNumbers.getBlock(material, data);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location loc, BlockData block) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(((CraftWorld) loc.getWorld()).getHandle(), new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
|
||||
packet.block = ((CraftBlockData) block).getState();
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@@ -477,7 +517,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
Collection<MapIcon> icons = new ArrayList<MapIcon>();
|
||||
for (MapCursor cursor : data.cursors) {
|
||||
if (cursor.isVisible()) {
|
||||
icons.add(new MapIcon(MapIcon.Type.a(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection()));
|
||||
icons.add(new MapIcon(MapIcon.Type.a(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection(), CraftChatMessage.fromStringOrNull(cursor.getCaption())));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -783,9 +823,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@Override
|
||||
public void setWhitelisted(boolean value) {
|
||||
if (value) {
|
||||
server.getHandle().addWhitelist(getProfile());
|
||||
server.getHandle().getWhitelist().add(new WhiteListEntry(getProfile()));
|
||||
} else {
|
||||
server.getHandle().removeWhitelist(getProfile());
|
||||
server.getHandle().getWhitelist().remove(getProfile());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1129,7 +1169,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
if (channels.contains(channel)) {
|
||||
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload(channel, new PacketDataSerializer(Unpooled.wrappedBuffer(message)));
|
||||
channel = StandardMessenger.validateAndCorrectChannel(channel);
|
||||
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload(new MinecraftKey(channel), new PacketDataSerializer(Unpooled.wrappedBuffer(message)));
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
@@ -1156,12 +1197,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
public void addChannel(String channel) {
|
||||
channel = StandardMessenger.validateAndCorrectChannel(channel);
|
||||
if (channels.add(channel)) {
|
||||
server.getPluginManager().callEvent(new PlayerRegisterChannelEvent(this, channel));
|
||||
}
|
||||
}
|
||||
|
||||
public void removeChannel(String channel) {
|
||||
channel = StandardMessenger.validateAndCorrectChannel(channel);
|
||||
if (channels.remove(channel)) {
|
||||
server.getPluginManager().callEvent(new PlayerUnregisterChannelEvent(this, channel));
|
||||
}
|
||||
@@ -1188,7 +1231,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload("REGISTER", new PacketDataSerializer(Unpooled.wrappedBuffer(stream.toByteArray()))));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload(new MinecraftKey("register"), new PacketDataSerializer(Unpooled.wrappedBuffer(stream.toByteArray()))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1290,7 +1333,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public float getFlySpeed() {
|
||||
return getHandle().abilities.flySpeed * 2f;
|
||||
return (float) getHandle().abilities.flySpeed * 2f;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1436,19 +1479,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
getHandle().playerConnection.sendPacket(times);
|
||||
|
||||
if (title != null) {
|
||||
PacketPlayOutTitle packetTitle = new PacketPlayOutTitle(EnumTitleAction.TITLE, CraftChatMessage.fromString(title)[0]);
|
||||
PacketPlayOutTitle packetTitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, CraftChatMessage.fromStringOrNull(title));
|
||||
getHandle().playerConnection.sendPacket(packetTitle);
|
||||
}
|
||||
|
||||
if (subtitle != null) {
|
||||
PacketPlayOutTitle packetSubtitle = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, CraftChatMessage.fromString(subtitle)[0]);
|
||||
PacketPlayOutTitle packetSubtitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, CraftChatMessage.fromStringOrNull(subtitle));
|
||||
getHandle().playerConnection.sendPacket(packetSubtitle);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetTitle() {
|
||||
PacketPlayOutTitle packetReset = new PacketPlayOutTitle(EnumTitleAction.RESET, null);
|
||||
PacketPlayOutTitle packetReset = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.RESET, null);
|
||||
getHandle().playerConnection.sendPacket(packetReset);
|
||||
}
|
||||
|
||||
@@ -1512,7 +1555,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (data != null && !particle.getDataType().isInstance(data)) {
|
||||
throw new IllegalArgumentException("data should be " + particle.getDataType() + " got " + data.getClass());
|
||||
}
|
||||
PacketPlayOutWorldParticles packetplayoutworldparticles = new PacketPlayOutWorldParticles(CraftParticle.toNMS(particle), true, (float) x, (float) y, (float) z, (float) offsetX, (float) offsetY, (float) offsetZ, (float) extra, count, CraftParticle.toData(particle, data));
|
||||
PacketPlayOutWorldParticles packetplayoutworldparticles = new PacketPlayOutWorldParticles(CraftParticle.toNMS(particle, data), true, (float) x, (float) y, (float) z, (float) offsetX, (float) offsetY, (float) offsetZ, (float) extra, count);
|
||||
getHandle().playerConnection.sendPacket(packetplayoutworldparticles);
|
||||
|
||||
}
|
||||
|
||||
@@ -19,12 +19,10 @@ public abstract class CraftProjectile extends AbstractProjectile implements Proj
|
||||
public void setShooter(ProjectileSource shooter) {
|
||||
if (shooter instanceof CraftLivingEntity) {
|
||||
getHandle().shooter = (EntityLiving) ((CraftLivingEntity) shooter).entity;
|
||||
if (shooter instanceof CraftHumanEntity) {
|
||||
getHandle().shooterName = ((CraftHumanEntity) shooter).getName();
|
||||
}
|
||||
getHandle().shooterId = ((CraftLivingEntity) shooter).getUniqueId();
|
||||
} else {
|
||||
getHandle().shooter = null;
|
||||
getHandle().shooterName = null;
|
||||
getHandle().shooterId = null;
|
||||
}
|
||||
getHandle().projectileSource = shooter;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityPufferFish;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.PufferFish;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftPufferFish extends CraftFish implements PufferFish {
|
||||
|
||||
public CraftPufferFish(CraftServer server, EntityPufferFish entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPufferFish getHandle() {
|
||||
return (EntityPufferFish) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPuffState() {
|
||||
return getHandle().getPuffState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPuffState(int state) {
|
||||
getHandle().setPuffState(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftPufferFish";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.PUFFERFISH;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntitySalmon;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.Salmon;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftSalmon extends CraftFish implements Salmon {
|
||||
|
||||
public CraftSalmon(CraftServer server, EntitySalmon entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntitySalmon getHandle() {
|
||||
return (EntitySalmon) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftSalmon";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.SALMON;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityThrownTrident;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Trident;
|
||||
|
||||
public class CraftTrident extends CraftArrow implements Trident {
|
||||
|
||||
public CraftTrident(CraftServer server, EntityThrownTrident entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityThrownTrident getHandle() {
|
||||
return (EntityThrownTrident) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftTrident";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.TRIDENT;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import net.minecraft.server.EntityTropicalFish;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.TropicalFish;
|
||||
|
||||
public class CraftTropicalFish extends CraftFish implements TropicalFish {
|
||||
|
||||
public CraftTropicalFish(CraftServer server, EntityTropicalFish entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityTropicalFish getHandle() {
|
||||
return (EntityTropicalFish) entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftTropicalFish";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DyeColor getPatternColor() {
|
||||
return getPatternColor(getHandle().getVariant());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPatternColor(DyeColor color) {
|
||||
getHandle().setVariant(getData(color, getBodyColor(), getPattern()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public DyeColor getBodyColor() {
|
||||
return getBodyColor(getHandle().getVariant());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBodyColor(DyeColor color) {
|
||||
getHandle().setVariant(getData(getPatternColor(), color, getPattern()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pattern getPattern() {
|
||||
return getPattern(getHandle().getVariant());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPattern(Pattern pattern) {
|
||||
getHandle().setVariant(getData(getPatternColor(), getBodyColor(), pattern));
|
||||
}
|
||||
|
||||
public static enum CraftPattern {
|
||||
KOB(0, false),
|
||||
SUNSTREAK(1, false),
|
||||
SNOOPER(2, false),
|
||||
DASHER(3, false),
|
||||
BRINELY(4, false),
|
||||
SPOTTY(5, false),
|
||||
FLOPPER(0, true),
|
||||
STRIPEY(1, true),
|
||||
GLITTER(2, true),
|
||||
BLOCKFISH(3, true),
|
||||
BETTY(4, true),
|
||||
CLAYFISH(5, true);
|
||||
|
||||
private final int variant;
|
||||
private final boolean large;
|
||||
|
||||
//
|
||||
private static final Map<Integer, Pattern> BY_DATA = new HashMap<>();
|
||||
|
||||
static {
|
||||
for (CraftPattern type : values()) {
|
||||
BY_DATA.put(type.getDataValue(), Pattern.values()[type.ordinal()]);
|
||||
}
|
||||
}
|
||||
|
||||
public static Pattern fromData(int data) {
|
||||
return BY_DATA.get(data);
|
||||
}
|
||||
|
||||
private CraftPattern(int variant, boolean large) {
|
||||
this.variant = variant;
|
||||
this.large = large;
|
||||
}
|
||||
|
||||
public int getDataValue() {
|
||||
return variant << 8 | ((large) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
public static int getData(DyeColor patternColor, DyeColor bodyColor, Pattern type) {
|
||||
return patternColor.getWoolData() << 24 | bodyColor.getWoolData() << 16 | CraftPattern.values()[type.ordinal()].getDataValue();
|
||||
}
|
||||
|
||||
public static DyeColor getPatternColor(int data) {
|
||||
return DyeColor.getByWoolData((byte) ((data >> 24) & 0xFF));
|
||||
}
|
||||
|
||||
public static DyeColor getBodyColor(int data) {
|
||||
return DyeColor.getByWoolData((byte) ((data >> 16) & 0xFF));
|
||||
}
|
||||
|
||||
public static Pattern getPattern(int data) {
|
||||
return CraftPattern.fromData(data & 0xFFFF);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityTurtle;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Turtle;
|
||||
|
||||
public class CraftTurtle extends CraftAnimals implements Turtle {
|
||||
|
||||
public CraftTurtle(CraftServer server, EntityTurtle entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityTurtle getHandle() {
|
||||
return (EntityTurtle) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CraftTurtle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.TURTLE;
|
||||
}
|
||||
}
|
||||
@@ -51,7 +51,7 @@ public class CraftVillager extends CraftAgeable implements Villager, InventoryHo
|
||||
|
||||
@Override
|
||||
public Career getCareer() {
|
||||
return getCareer(getProfession(), getHandle().bK);
|
||||
return getCareer(getProfession(), getHandle().careerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -62,15 +62,15 @@ public class CraftVillager extends CraftAgeable implements Villager, InventoryHo
|
||||
@Override
|
||||
public void setCareer(Career career, boolean resetTrades) {
|
||||
if (career == null) {
|
||||
getHandle().bK = 0; // reset career
|
||||
getHandle().careerId = 0; // reset career
|
||||
} else {
|
||||
Validate.isTrue(career.getProfession() == getProfession(), "Career assignment mismatch. Found (" + getProfession() + ") Required (" + career.getProfession() + ")");
|
||||
getHandle().bK = getCareerID(career);
|
||||
getHandle().careerId = getCareerID(career);
|
||||
}
|
||||
|
||||
if (resetTrades) {
|
||||
getHandle().trades = null;
|
||||
getHandle().dx();
|
||||
getHandle().populateTrades();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user