Update to Minecraft 1.13-pre7

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2018-07-15 10:00:00 +10:00
parent d1e91a8adb
commit 7e0a66fdd5
608 changed files with 17788 additions and 9378 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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() {

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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());
}

View File

@@ -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) {

View File

@@ -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

View File

@@ -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()) {

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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();
}
}