Update to Minecraft 1.11

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2016-11-17 12:41:03 +11:00
parent 49bc1c57f9
commit 4e412ab4e3
279 changed files with 3722 additions and 2992 deletions

View File

@@ -1163,11 +1163,6 @@ public final class CraftServer implements Server {
return console.isHardcore();
}
@Override
public boolean useExactLoginLocation() {
return configuration.getBoolean("settings.use-exact-login-location");
}
public ChunkGenerator getGenerator(String world) {
ConfigurationSection section = configuration.getConfigurationSection("worlds");
ChunkGenerator result = null;

View File

@@ -94,6 +94,8 @@ public enum CraftSound {
BLOCK_SAND_HIT("block.sand.hit"),
BLOCK_SAND_PLACE("block.sand.place"),
BLOCK_SAND_STEP("block.sand.step"),
BLOCK_SHULKER_BOX_CLOSE("block.shulker_box.close"),
BLOCK_SHULKER_BOX_OPEN("block.shulker_box.open"),
BLOCK_SLIME_BREAK("block.slime.break"),
BLOCK_SLIME_FALL("block.slime.fall"),
BLOCK_SLIME_HIT("block.slime.hit"),
@@ -182,6 +184,7 @@ public enum CraftSound {
ENTITY_ELDER_GUARDIAN_CURSE("entity.elder_guardian.curse"),
ENTITY_ELDER_GUARDIAN_DEATH("entity.elder_guardian.death"),
ENTITY_ELDER_GUARDIAN_DEATH_LAND("entity.elder_guardian.death_land"),
ENTITY_ELDER_GUARDIAN_FLOP("entity.elder_guardian.flop"),
ENTITY_ELDER_GUARDIAN_HURT("entity.elder_guardian.hurt"),
ENTITY_ELDER_GUARDIAN_HURT_LAND("entity.elder_guardian.hurt_land"),
ENTITY_ENDERDRAGON_AMBIENT("entity.enderdragon.ambient"),
@@ -203,9 +206,16 @@ public enum CraftSound {
ENTITY_ENDERMITE_HURT("entity.endermite.hurt"),
ENTITY_ENDERMITE_STEP("entity.endermite.step"),
ENTITY_ENDERPEARL_THROW("entity.enderpearl.throw"),
ENTITY_EVOCATION_FANGS_ATTACK("entity.evocation_fangs.attack"),
ENTITY_EVOCATION_ILLAGER_AMBIENT("entity.evocation_illager.ambient"),
ENTITY_EVOCATION_ILLAGER_CAST_SPELL("entity.evocation_illager.cast_spell"),
ENTITY_EVOCATION_ILLAGER_DEATH("entity.evocation_illager.death"),
ENTITY_EVOCATION_ILLAGER_HURT("entity.evocation_illager.hurt"),
ENTITY_EVOCATION_ILLAGER_PREPARE_ATTACK("entity.evocation_illager.prepare_attack"),
ENTITY_EVOCATION_ILLAGER_PREPARE_SUMMON("entity.evocation_illager.prepare_summon"),
ENTITY_EVOCATION_ILLAGER_PREPARE_WOLOLO("entity.evocation_illager.prepare_wololo"),
ENTITY_EXPERIENCE_BOTTLE_THROW("entity.experience_bottle.throw"),
ENTITY_EXPERIENCE_ORB_PICKUP("entity.experience_orb.pickup"),
ENTITY_EXPERIENCE_ORB_TOUCH("entity.experience_orb.touch"),
ENTITY_FIREWORK_BLAST("entity.firework.blast"),
ENTITY_FIREWORK_BLAST_FAR("entity.firework.blast_far"),
ENTITY_FIREWORK_LARGE_BLAST("entity.firework.large_blast"),
@@ -278,6 +288,15 @@ public enum CraftSound {
ENTITY_LIGHTNING_IMPACT("entity.lightning.impact"),
ENTITY_LIGHTNING_THUNDER("entity.lightning.thunder"),
ENTITY_LINGERINGPOTION_THROW("entity.lingeringpotion.throw"),
ENTITY_LLAMA_AMBIENT("entity.llama.ambient"),
ENTITY_LLAMA_ANGRY("entity.llama.angry"),
ENTITY_LLAMA_CHEST("entity.llama.chest"),
ENTITY_LLAMA_DEATH("entity.llama.death"),
ENTITY_LLAMA_EAT("entity.llama.eat"),
ENTITY_LLAMA_HURT("entity.llama.hurt"),
ENTITY_LLAMA_SPIT("entity.llama.spit"),
ENTITY_LLAMA_STEP("entity.llama.step"),
ENTITY_LLAMA_SWAG("entity.llama.swag"),
ENTITY_MAGMACUBE_DEATH("entity.magmacube.death"),
ENTITY_MAGMACUBE_HURT("entity.magmacube.hurt"),
ENTITY_MAGMACUBE_JUMP("entity.magmacube.jump"),
@@ -286,6 +305,7 @@ public enum CraftSound {
ENTITY_MINECART_RIDING("entity.minecart.riding"),
ENTITY_MOOSHROOM_SHEAR("entity.mooshroom.shear"),
ENTITY_MULE_AMBIENT("entity.mule.ambient"),
ENTITY_MULE_CHEST("entity.mule.chest"),
ENTITY_MULE_DEATH("entity.mule.death"),
ENTITY_MULE_HURT("entity.mule.hurt"),
ENTITY_PAINTING_BREAK("entity.painting.break"),
@@ -379,12 +399,19 @@ public enum CraftSound {
ENTITY_STRAY_HURT("entity.stray.hurt"),
ENTITY_STRAY_STEP("entity.stray.step"),
ENTITY_TNT_PRIMED("entity.tnt.primed"),
ENTITY_VEX_AMBIENT("entity.vex.ambient"),
ENTITY_VEX_CHARGE("entity.vex.charge"),
ENTITY_VEX_DEATH("entity.vex.death"),
ENTITY_VEX_HURT("entity.vex.hurt"),
ENTITY_VILLAGER_AMBIENT("entity.villager.ambient"),
ENTITY_VILLAGER_DEATH("entity.villager.death"),
ENTITY_VILLAGER_HURT("entity.villager.hurt"),
ENTITY_VILLAGER_NO("entity.villager.no"),
ENTITY_VILLAGER_TRADING("entity.villager.trading"),
ENTITY_VILLAGER_YES("entity.villager.yes"),
ENTITY_VINDICATION_ILLAGER_AMBIENT("entity.vindication_illager.ambient"),
ENTITY_VINDICATION_ILLAGER_DEATH("entity.vindication_illager.death"),
ENTITY_VINDICATION_ILLAGER_HURT("entity.vindication_illager.hurt"),
ENTITY_WITCH_AMBIENT("entity.witch.ambient"),
ENTITY_WITCH_DEATH("entity.witch.death"),
ENTITY_WITCH_DRINK("entity.witch.drink"),
@@ -432,10 +459,12 @@ public enum CraftSound {
ENTITY_ZOMBIE_VILLAGER_STEP("entity.zombie_villager.step"),
ITEM_ARMOR_EQUIP_CHAIN("item.armor.equip_chain"),
ITEM_ARMOR_EQUIP_DIAMOND("item.armor.equip_diamond"),
ITEM_ARMOR_EQUIP_ELYTRA("item.armor.equip_elytra"),
ITEM_ARMOR_EQUIP_GENERIC("item.armor.equip_generic"),
ITEM_ARMOR_EQUIP_GOLD("item.armor.equip_gold"),
ITEM_ARMOR_EQUIP_IRON("item.armor.equip_iron"),
ITEM_ARMOR_EQUIP_LEATHER("item.armor.equip_leather"),
ITEM_BOTTLE_EMPTY("item.bottle.empty"),
ITEM_BOTTLE_FILL("item.bottle.fill"),
ITEM_BOTTLE_FILL_DRAGONBREATH("item.bottle.fill_dragonbreath"),
ITEM_BUCKET_EMPTY("item.bucket.empty"),
@@ -450,6 +479,7 @@ public enum CraftSound {
ITEM_SHIELD_BLOCK("item.shield.block"),
ITEM_SHIELD_BREAK("item.shield.break"),
ITEM_SHOVEL_FLATTEN("item.shovel.flatten"),
ITEM_TOTEM_USE("item.totem.use"),
MUSIC_CREATIVE("music.creative"),
MUSIC_CREDITS("music.credits"),
MUSIC_DRAGON("music.dragon"),

View File

@@ -930,6 +930,9 @@ public class CraftWorld implements World {
} else if (ShulkerBullet.class.isAssignableFrom(clazz)) {
entity = new EntityShulkerBullet(world);
entity.setPositionRotation(x, y, z, yaw, pitch);
} else if (LlamaSpit.class.isAssignableFrom(clazz)) {
entity = new EntityLlama(world);
entity.setPositionRotation(x, y, z, yaw, pitch);
}
} else if (Minecart.class.isAssignableFrom(clazz)) {
if (PoweredMinecart.class.isAssignableFrom(clazz)) {
@@ -979,10 +982,30 @@ public class CraftWorld implements World {
// need a net server handler for this one
} else if (Sheep.class.isAssignableFrom(clazz)) {
entity = new EntitySheep(world);
} else if (Horse.class.isAssignableFrom(clazz)) {
entity = new EntityHorse(world);
} else if (AbstractHorse.class.isAssignableFrom(clazz)) {
if (ChestedHorse.class.isAssignableFrom(clazz)) {
if (Donkey.class.isAssignableFrom(clazz)) {
entity = new EntityHorseDonkey(world);
} else if (Mule.class.isAssignableFrom(clazz)) {
entity = new EntityHorseMule(world);
} else if (Llama.class.isAssignableFrom(clazz)) {
entity = new EntityLlama(world);
}
} else if (SkeletonHorse.class.isAssignableFrom(clazz)) {
entity = new EntityHorseSkeleton(world);
} else if (ZombieHorse.class.isAssignableFrom(clazz)) {
entity = new EntityHorseZombie(world);
} else {
entity = new EntityHorse(world);
}
} else if (Skeleton.class.isAssignableFrom(clazz)) {
entity = new EntitySkeleton(world);
if (Stray.class.isAssignableFrom(clazz)){
entity = new EntitySkeletonStray(world);
} else if (WitherSkeleton.class.isAssignableFrom(clazz)) {
entity = new EntitySkeletonWither(world);
} else {
entity = new EntitySkeleton(world);
}
} else if (Slime.class.isAssignableFrom(clazz)) {
if (MagmaCube.class.isAssignableFrom(clazz)) {
entity = new EntityMagmaCube(world);
@@ -1006,7 +1029,13 @@ public class CraftWorld implements World {
} else if (PigZombie.class.isAssignableFrom(clazz)) {
entity = new EntityPigZombie(world);
} else if (Zombie.class.isAssignableFrom(clazz)) {
entity = new EntityZombie(world);
if (Husk.class.isAssignableFrom(clazz)) {
entity = new EntityZombieHusk(world);
} else if (ZombieVillager.class.isAssignableFrom(clazz)) {
entity = new EntityZombieVillager(world);
} else {
entity = new EntityZombie(world);
}
} else if (Giant.class.isAssignableFrom(clazz)) {
entity = new EntityGiantZombie(world);
} else if (Silverfish.class.isAssignableFrom(clazz)) {
@@ -1034,11 +1063,21 @@ public class CraftWorld implements World {
} else if (Endermite.class.isAssignableFrom(clazz)) {
entity = new EntityEndermite(world);
} else if (Guardian.class.isAssignableFrom(clazz)) {
entity = new EntityGuardian(world);
if (ElderGuardian.class.isAssignableFrom(clazz)){
entity = new EntityGuardianElder(world);
} else {
entity = new EntityGuardian(world);
}
} else if (ArmorStand.class.isAssignableFrom(clazz)) {
entity = new EntityArmorStand(world, x, y, z);
} else if (PolarBear.class.isAssignableFrom(clazz)) {
entity = new EntityPolarBear(world);
} else if (Evoker.class.isAssignableFrom(clazz)) {
entity = new EntityEvoker(world);
} else if (Vex.class.isAssignableFrom(clazz)) {
entity = new EntityVex(world);
} else if (Vindicator.class.isAssignableFrom(clazz)) {
entity = new EntityVindicator(world);
}
if (entity != null) {
@@ -1113,6 +1152,8 @@ public class CraftWorld implements World {
entity = new EntityFireworks(world, x, y, z, null);
} else if (AreaEffectCloud.class.isAssignableFrom(clazz)) {
entity = new EntityAreaEffectCloud(world, x, y, z);
} else if (EvokerFangs.class.isAssignableFrom(clazz)) {
entity = new EntityEvokerFangs(world);
}
if (entity != null) {

View File

@@ -4,7 +4,11 @@ import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import joptsimple.OptionParser;
@@ -165,6 +169,19 @@ public class Main {
useConsole = false;
}
if (Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) {
Date buildDate = new SimpleDateFormat("yyyyMMdd-HHmm").parse(Main.class.getPackage().getImplementationVendor());
Calendar deadline = Calendar.getInstance();
deadline.add(Calendar.DAY_OF_YEAR, -3);
if (buildDate.before(deadline.getTime())) {
System.err.println("*** Error, this build is outdated ***");
System.err.println("*** Please download a new build as per instructions from https://www.spigotmc.org/ ***");
System.err.println("*** Server will start in 30 seconds ***");
Thread.sleep(TimeUnit.SECONDS.toMillis(30));
}
}
System.out.println("Loading libraries, please wait...");
MinecraftServer.main(options);
} catch (Throwable t) {

View File

@@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.block;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.server.EnumColor;
import net.minecraft.server.NBTTagCompound;
import net.minecraft.server.NBTTagList;
import net.minecraft.server.TileEntityBanner;
@@ -25,7 +26,7 @@ public class CraftBanner extends CraftBlockState implements Banner {
CraftWorld world = (CraftWorld) block.getWorld();
banner = (TileEntityBanner) world.getTileEntityAt(getX(), getY(), getZ());
base = DyeColor.getByDyeData((byte) banner.color);
base = DyeColor.getByDyeData((byte) banner.color.getColorIndex());
if (banner.patterns != null) {
for (int i = 0; i < banner.patterns.size(); i++) {
@@ -39,7 +40,7 @@ public class CraftBanner extends CraftBlockState implements Banner {
super(material);
banner = te;
base = DyeColor.getByDyeData((byte) banner.color);
base = DyeColor.getByDyeData((byte) banner.color.getColorIndex());
if (banner.patterns != null) {
for (int i = 0; i < banner.patterns.size(); i++) {
@@ -99,7 +100,7 @@ public class CraftBanner extends CraftBlockState implements Banner {
boolean result = (isPlaced()) ? super.update(force, applyPhysics) : true;
if (result) {
banner.color = base.getDyeData();
banner.color = EnumColor.fromColorIndex(base.getDyeData());
NBTTagList newPatterns = new NBTTagList();

View File

@@ -66,7 +66,7 @@ public class CraftBeacon extends CraftContainer implements Beacon {
@Override
public int getTier() {
return beacon.k;
return beacon.levels;
}
@Override
@@ -76,7 +76,7 @@ public class CraftBeacon extends CraftContainer implements Beacon {
@Override
public void setPrimaryEffect(PotionEffectType effect) {
beacon.l = (effect != null) ? MobEffectList.fromId(effect.getId()) : null;
beacon.primaryEffect = (effect != null) ? MobEffectList.fromId(effect.getId()) : null;
}
@Override
@@ -86,6 +86,6 @@ public class CraftBeacon extends CraftContainer implements Beacon {
@Override
public void setSecondaryEffect(PotionEffectType effect) {
beacon.m = (effect != null) ? MobEffectList.fromId(effect.getId()) : null;
beacon.secondaryEffect = (effect != null) ? MobEffectList.fromId(effect.getId()) : null;
}
}

View File

@@ -145,7 +145,7 @@ public class CraftBlock implements Block {
return chunk.getHandle().getWorld().setTypeAndData(position, blockData, 3);
} else {
IBlockData old = chunk.getHandle().getBlockData(position);
boolean success = chunk.getHandle().getWorld().setTypeAndData(position, blockData, 2);
boolean success = chunk.getHandle().getWorld().setTypeAndData(position, blockData, 18); // NOTIFY | NO_OBSERVER
if (success) {
chunk.getHandle().getWorld().notify(
position,
@@ -173,11 +173,11 @@ public class CraftBlock implements Block {
}
public byte getLightFromSky() {
return (byte) chunk.getHandle().getWorld().b(EnumSkyBlock.SKY, new BlockPosition(this.x, this.y, this.z)); // PAIL: rename
return (byte) chunk.getHandle().getWorld().getBrightness(EnumSkyBlock.SKY, new BlockPosition(this.x, this.y, this.z));
}
public byte getLightFromBlocks() {
return (byte) chunk.getHandle().getWorld().b(EnumSkyBlock.BLOCK, new BlockPosition(this.x, this.y, this.z)); // PAIL: rename
return (byte) chunk.getHandle().getWorld().getBrightness(EnumSkyBlock.BLOCK, new BlockPosition(this.x, this.y, this.z));
}
@@ -306,6 +306,23 @@ public class CraftBlock implements Block {
return new CraftFlowerPot(this);
case STRUCTURE_BLOCK:
return new CraftStructureBlock(this);
case WHITE_SHULKER_BOX:
case ORANGE_SHULKER_BOX:
case MAGENTA_SHULKER_BOX:
case LIGHT_BLUE_SHULKER_BOX:
case YELLOW_SHULKER_BOX:
case LIME_SHULKER_BOX:
case PINK_SHULKER_BOX:
case GRAY_SHULKER_BOX:
case SILVER_SHULKER_BOX:
case CYAN_SHULKER_BOX:
case PURPLE_SHULKER_BOX:
case BLUE_SHULKER_BOX:
case BROWN_SHULKER_BOX:
case GREEN_SHULKER_BOX:
case RED_SHULKER_BOX:
case BLACK_SHULKER_BOX:
return new CraftShulkerBox(this);
default:
return new CraftBlockState(this);
}

View File

@@ -172,7 +172,7 @@ public class CraftBlockState implements BlockState {
// Update levers etc
if (applyPhysics && getData() instanceof Attachable) {
world.getHandle().applyPhysics(pos.shift(CraftBlock.blockFaceToNotch(((Attachable) getData()).getAttachedFace())), newBlock.getBlock());
world.getHandle().applyPhysics(pos.shift(CraftBlock.blockFaceToNotch(((Attachable) getData()).getAttachedFace())), newBlock.getBlock(), false);
}
return true;

View File

@@ -26,12 +26,12 @@ public class CraftContainer extends CraftBlockState implements Lockable {
@Override
public boolean isLocked() {
return container.x_(); // PAIL: isLocked
return container.isLocked();
}
@Override
public String getLock() {
return container.y_().b(); // PAIL: getLock, getKey
return container.getLock().b(); // PAIL: getKey
}
@Override

View File

@@ -1,5 +1,6 @@
package org.bukkit.craftbukkit.block;
import net.minecraft.server.MinecraftKey;
import net.minecraft.server.TileEntityMobSpawner;
import org.bukkit.Material;
@@ -23,7 +24,7 @@ public class CraftCreatureSpawner extends CraftBlockState implements CreatureSpa
}
public EntityType getSpawnedType() {
return EntityType.fromName(spawner.getSpawner().getMobName());
return EntityType.fromName(spawner.getSpawner().getMobName().a());
}
public void setSpawnedType(EntityType entityType) {
@@ -31,21 +32,11 @@ public class CraftCreatureSpawner extends CraftBlockState implements CreatureSpa
throw new IllegalArgumentException("Can't spawn EntityType " + entityType + " from mobspawners!");
}
spawner.getSpawner().setMobName(entityType.getName());
}
@Deprecated
public String getCreatureTypeId() {
return spawner.getSpawner().getMobName();
}
@Deprecated
public void setCreatureTypeId(String creatureName) {
setCreatureTypeByName(creatureName);
spawner.getSpawner().setMobName(new MinecraftKey(entityType.getName()));
}
public String getCreatureTypeName() {
return spawner.getSpawner().getMobName();
return spawner.getSpawner().getMobName().a();
}
public void setCreatureTypeByName(String creatureType) {

View File

@@ -1,10 +1,12 @@
package org.bukkit.craftbukkit.block;
import net.minecraft.server.ItemStack;
import net.minecraft.server.TileEntityFlowerPot;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.FlowerPot;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.material.MaterialData;
@@ -32,9 +34,9 @@ public class CraftFlowerPot extends CraftBlockState implements FlowerPot {
@Override
public void setContents(MaterialData item) {
if (item == null) {
pot.a(null, 0);
pot.setContents(ItemStack.a);
} else {
pot.a(CraftMagicNumbers.getItem(item.getItemType()), item.getData()); // PAIL: rename
pot.setContents(CraftItemStack.asNMSCopy(item.toItemStack()));
}
}
}

View File

@@ -0,0 +1,34 @@
package org.bukkit.craftbukkit.block;
import net.minecraft.server.TileEntityShulkerBox;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.ShulkerBox;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.inventory.Inventory;
public class CraftShulkerBox extends CraftContainer implements ShulkerBox {
private final CraftWorld world;
private final TileEntityShulkerBox box;
public CraftShulkerBox(final Block block) {
super(block);
world = (CraftWorld) block.getWorld();
box = (TileEntityShulkerBox) world.getTileEntityAt(getX(), getY(), getZ());
}
public CraftShulkerBox(final Material material, final TileEntityShulkerBox te) {
super(material, te);
box = te;
world = null;
}
@Override
public Inventory getInventory() {
return new CraftInventory(box);
}
}

View File

@@ -24,7 +24,7 @@ public final class VanillaCommandWrapper extends VanillaCommand {
protected final CommandAbstract vanillaCommand;
public VanillaCommandWrapper(CommandAbstract vanillaCommand, String usage) {
super(vanillaCommand.getCommand(), "A Mojang provided command.", usage, vanillaCommand.b()); // PAIL: rename
super(vanillaCommand.getCommand(), "A Mojang provided command.", usage, vanillaCommand.getAliases());
this.vanillaCommand = vanillaCommand;
this.setPermission("minecraft.command." + vanillaCommand.getCommand());
}
@@ -34,7 +34,14 @@ public final class VanillaCommandWrapper extends VanillaCommand {
if (!testPermission(sender)) return true;
ICommandListener icommandlistener = getListener(sender);
dispatchVanillaCommand(sender, icommandlistener, args);
try {
dispatchVanillaCommand(sender, icommandlistener, args);
} catch (CommandException commandexception) {
// Taken from CommandHandler
ChatMessage chatmessage = new ChatMessage(commandexception.getMessage(), commandexception.getArgs());
chatmessage.getChatModifier().setColor(EnumChatFormat.RED);
icommandlistener.sendMessage(chatmessage);
}
return true;
}
@@ -48,7 +55,7 @@ public final class VanillaCommandWrapper extends VanillaCommand {
public static CommandSender lastSender = null; // Nasty :(
public final int dispatchVanillaCommand(CommandSender bSender, ICommandListener icommandlistener, String[] as) {
public final int dispatchVanillaCommand(CommandSender bSender, ICommandListener icommandlistener, String[] as) throws CommandException {
// Copied from net.minecraft.server.CommandHandler
int i = getPlayerListSize(as);
int j = 0;
@@ -154,7 +161,7 @@ public final class VanillaCommandWrapper extends VanillaCommand {
throw new IllegalArgumentException("Cannot make " + sender + " a vanilla command listener");
}
private int getPlayerListSize(String as[]) {
private int getPlayerListSize(String as[]) throws CommandException {
for (int i = 0; i < as.length; i++) {
if (vanillaCommand.isListStart(as, i) && PlayerSelector.isList(as[i])) {
return i;

View File

@@ -56,7 +56,7 @@ public class CraftEnchantment extends Enchantment {
@Override
public boolean isTreasure() {
return target.e(); // PAIL: isTreasure
return target.isTreasure();
}
@Override

View File

@@ -0,0 +1,97 @@
package org.bukkit.craftbukkit.entity;
import java.util.UUID;
import net.minecraft.server.EntityHorse;
import net.minecraft.server.EntityHorseAbstract;
import org.apache.commons.lang.Validate;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.entity.AbstractHorse;
import org.bukkit.entity.AnimalTamer;
import org.bukkit.entity.Horse;
import org.bukkit.inventory.Inventory;
public abstract class CraftAbstractHorse extends CraftAnimals implements AbstractHorse {
public CraftAbstractHorse(CraftServer server, EntityHorseAbstract entity) {
super(server, entity);
}
@Override
public EntityHorseAbstract getHandle() {
return (EntityHorseAbstract) entity;
}
public void setVariant(Horse.Variant variant) {
throw new UnsupportedOperationException("Not supported.");
}
public int getDomestication() {
return getHandle().getTemper();
}
public void setDomestication(int value) {
Validate.isTrue(value >= 0, "Domestication cannot be less than zero");
Validate.isTrue(value <= getMaxDomestication(), "Domestication cannot be greater than the max domestication");
getHandle().setTemper(value);
}
public int getMaxDomestication() {
return getHandle().getMaxDomestication();
}
public void setMaxDomestication(int value) {
Validate.isTrue(value > 0, "Max domestication cannot be zero or less");
getHandle().maxDomestication = value;
}
public double getJumpStrength() {
return getHandle().getJumpStrength();
}
public void setJumpStrength(double strength) {
Validate.isTrue(strength >= 0, "Jump strength cannot be less than zero");
getHandle().getAttributeInstance(EntityHorse.attributeJumpStrength).setValue(strength);
}
@Override
public boolean isTamed() {
return getHandle().isTamed();
}
@Override
public void setTamed(boolean tamed) {
getHandle().setTamed(tamed);
}
@Override
public AnimalTamer getOwner() {
if (getOwnerUUID() == null) return null;
return getServer().getOfflinePlayer(getOwnerUUID());
}
@Override
public void setOwner(AnimalTamer owner) {
if (owner != null) {
setTamed(true);
getHandle().setGoalTarget(null, null, false);
setOwnerUUID(owner.getUniqueId());
} else {
setTamed(false);
setOwnerUUID(null);
}
}
public UUID getOwnerUUID() {
return getHandle().getOwnerUUID();
}
public void setOwnerUUID(UUID uuid) {
getHandle().setOwnerUUID(uuid);
}
@Override
public Inventory getInventory() {
return new CraftInventory(getHandle().inventoryChest);
}
}

View File

@@ -0,0 +1,27 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityHorseChestedAbstract;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.ChestedHorse;
public abstract class CraftChestedHorse extends CraftAbstractHorse implements ChestedHorse {
public CraftChestedHorse(CraftServer server, EntityHorseChestedAbstract entity) {
super(server, entity);
}
@Override
public EntityHorseChestedAbstract getHandle() {
return (EntityHorseChestedAbstract) super.getHandle();
}
@Override
public boolean isCarryingChest() {
return getHandle().isCarryingChest();
}
@Override
public void setCarryingChest(boolean chest) {
getHandle().setCarryingChest(chest);
}
}

View File

@@ -0,0 +1,29 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityHorseDonkey;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.Donkey;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse.Variant;
public class CraftDonkey extends CraftChestedHorse implements Donkey {
public CraftDonkey(CraftServer server, EntityHorseDonkey entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftDonkey";
}
@Override
public EntityType getType() {
return EntityType.DONKEY;
}
@Override
public Variant getVariant() {
return Variant.DONKEY;
}
}

View File

@@ -0,0 +1,28 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityGuardianElder;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.ElderGuardian;
import org.bukkit.entity.EntityType;
public class CraftElderGuardian extends CraftGuardian implements ElderGuardian {
public CraftElderGuardian(CraftServer server, EntityGuardianElder entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftElderGuardian";
}
@Override
public EntityType getType() {
return EntityType.ELDER_GUARDIAN;
}
@Override
public boolean isElder() {
return true;
}
}

View File

@@ -65,7 +65,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
else if (entity instanceof EntityOcelot) { return new CraftOcelot(server, (EntityOcelot) 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 EntityHorseAbstract) {
if (entity instanceof EntityHorseChestedAbstract){
if (entity instanceof EntityHorseDonkey) { return new CraftDonkey(server, (EntityHorseDonkey) entity); }
else if (entity instanceof EntityHorseMule) { return new CraftMule(server, (EntityHorseMule) entity); }
else if (entity instanceof EntityLlama) { return new CraftLlama(server, (EntityLlama) entity); }
} else if (entity instanceof EntityHorse) { return new CraftHorse(server, (EntityHorse) entity); }
else if (entity instanceof EntityHorseSkeleton) { return new CraftSkeletonHorse(server, (EntityHorseSkeleton) entity); }
else if (entity instanceof EntityHorseZombie) { return new CraftZombieHorse(server, (EntityHorseZombie) entity); }
}
else if (entity instanceof EntityRabbit) { return new CraftRabbit(server, (EntityRabbit) entity); }
else if (entity instanceof EntityPolarBear) { return new CraftPolarBear(server, (EntityPolarBear) entity); }
else { return new CraftAnimals(server, (EntityAnimal) entity); }
@@ -74,13 +82,19 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
else if (entity instanceof EntityMonster) {
if (entity instanceof EntityZombie) {
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 { return new CraftZombie(server, (EntityZombie) entity); }
}
else if (entity instanceof EntityCreeper) { return new CraftCreeper(server, (EntityCreeper) entity); }
else if (entity instanceof EntityEnderman) { return new CraftEnderman(server, (EntityEnderman) entity); }
else if (entity instanceof EntitySilverfish) { return new CraftSilverfish(server, (EntitySilverfish) entity); }
else if (entity instanceof EntityGiantZombie) { return new CraftGiant(server, (EntityGiantZombie) entity); }
else if (entity instanceof EntitySkeleton) { return new CraftSkeleton(server, (EntitySkeleton) entity); }
else if (entity instanceof EntitySkeletonAbstract) {
if (entity instanceof EntitySkeletonStray) { return new CraftStray(server, (EntitySkeletonStray) entity); }
else if (entity instanceof EntitySkeletonWither) { return new CraftWitherSkeleton(server, (EntitySkeletonWither) entity); }
else { return new CraftSkeleton(server, (EntitySkeletonAbstract) entity); }
}
else if (entity instanceof EntityBlaze) { return new CraftBlaze(server, (EntityBlaze) entity); }
else if (entity instanceof EntityWitch) { return new CraftWitch(server, (EntityWitch) entity); }
else if (entity instanceof EntityWither) { return new CraftWither(server, (EntityWither) entity); }
@@ -89,7 +103,13 @@ public abstract class CraftEntity implements org.bukkit.entity.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 if (entity instanceof EntityGuardian) {
if (entity instanceof EntityGuardianElder) { return new CraftElderGuardian(server, (EntityGuardianElder) entity); }
else { return new CraftGuardian(server, (EntityGuardian) entity); }
}
else if (entity instanceof EntityEvoker) { return new CraftEvoker(server, (EntityEvoker) entity); }
else if (entity instanceof EntityVex) { return new CraftVex(server, (EntityVex) entity); }
else if (entity instanceof EntityVindicator) { return new CraftVindicator(server, (EntityVindicator) entity); }
else { return new CraftMonster(server, (EntityMonster) entity); }
}
@@ -145,7 +165,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
else if (entity instanceof EntityEnderPearl) { return new CraftEnderPearl(server, (EntityEnderPearl) entity); }
else if (entity instanceof EntityThrownExpBottle) { return new CraftThrownExpBottle(server, (EntityThrownExpBottle) entity); }
}
else if (entity instanceof EntityFallingBlock) { return new CraftFallingSand(server, (EntityFallingBlock) entity); }
else if (entity instanceof EntityFallingBlock) { return new CraftFallingBlock(server, (EntityFallingBlock) entity); }
else if (entity instanceof EntityFireball) {
if (entity instanceof EntitySmallFireball) { return new CraftSmallFireball(server, (EntitySmallFireball) entity); }
else if (entity instanceof EntityLargeFireball) { return new CraftLargeFireball(server, (EntityLargeFireball) entity); }
@@ -179,6 +199,8 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
else if (entity instanceof EntityFireworks) { return new CraftFirework(server, (EntityFireworks) entity); }
else if (entity instanceof EntityShulkerBullet) { return new CraftShulkerBullet(server, (EntityShulkerBullet) entity); }
else if (entity instanceof EntityAreaEffectCloud) { return new CraftAreaEffectCloud(server, (EntityAreaEffectCloud) entity); }
else if (entity instanceof EntityEvokerFangs) { return new CraftEvokerFangs(server, (EntityEvokerFangs) entity); }
else if (entity instanceof EntityLlamaSpit) { return new CraftLlamaSpit(server, (EntityLlamaSpit) entity); }
throw new AssertionError("Unknown entity " + (entity == null ? null : entity.getClass()));
}
@@ -213,7 +235,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
public boolean isOnGround() {
if (entity instanceof EntityArrow) {
return ((EntityArrow) entity).isInGround();
return ((EntityArrow) entity).inGround;
}
return entity.onGround;
}
@@ -267,7 +289,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
}
public int getMaxFireTicks() {
return entity.maxFireTicks;
return entity.getMaxFireTicks();
}
public void setFireTicks(int ticks) {

View File

@@ -0,0 +1,28 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityEvoker;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Evoker;
public class CraftEvoker extends CraftMonster implements Evoker {
public CraftEvoker(CraftServer server, EntityEvoker entity) {
super(server, entity);
}
@Override
public EntityEvoker getHandle() {
return (EntityEvoker) super.getHandle();
}
@Override
public String toString() {
return "CraftEvoker";
}
@Override
public EntityType getType() {
return EntityType.EVOKER;
}
}

View File

@@ -0,0 +1,29 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.Entity;
import net.minecraft.server.EntityEvokerFangs;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.EvokerFangs;
public class CraftEvokerFangs extends CraftEntity implements EvokerFangs {
public CraftEvokerFangs(CraftServer server, EntityEvokerFangs entity) {
super(server, entity);
}
@Override
public EntityEvokerFangs getHandle() {
return (EntityEvokerFangs) super.getHandle();
}
@Override
public String toString() {
return "CraftEvokerFangs";
}
@Override
public EntityType getType() {
return EntityType.EVOKER_FANGS;
}
}

View File

@@ -6,11 +6,11 @@ import org.bukkit.Material;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.FallingSand;
import org.bukkit.entity.FallingBlock;
public class CraftFallingSand extends CraftEntity implements FallingSand {
public class CraftFallingBlock extends CraftEntity implements FallingBlock {
public CraftFallingSand(CraftServer server, EntityFallingBlock entity) {
public CraftFallingBlock(CraftServer server, EntityFallingBlock entity) {
super(server, entity);
}
@@ -21,7 +21,7 @@ public class CraftFallingSand extends CraftEntity implements FallingSand {
@Override
public String toString() {
return "CraftFallingSand";
return "CraftFallingBlock";
}
public EntityType getType() {

View File

@@ -1,9 +1,6 @@
package org.bukkit.craftbukkit.entity;
import com.google.common.base.Optional;
import net.minecraft.server.EntityFireworks;
import net.minecraft.server.ItemStack;
import net.minecraft.server.Items;
import org.bukkit.Material;
import org.bukkit.craftbukkit.CraftServer;
@@ -21,15 +18,7 @@ public class CraftFirework extends CraftEntity implements Firework {
public CraftFirework(CraftServer server, EntityFireworks entity) {
super(server, entity);
ItemStack item = getHandle().getDataWatcher().get(EntityFireworks.FIREWORK_ITEM).orNull();
if (item == null) {
item = new ItemStack(Items.FIREWORKS);
getHandle().getDataWatcher().set(EntityFireworks.FIREWORK_ITEM, Optional.of(item));
}
this.item = CraftItemStack.asCraftMirror(item);
this.item = CraftItemStack.asCraftMirror(getHandle().getDataWatcher().get(EntityFireworks.FIREWORK_ITEM));
// Ensure the item is a firework...
if (this.item.getType() != Material.FIREWORK) {

View File

@@ -1,7 +1,6 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityGuardian;
import net.minecraft.server.GenericAttributes;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Guardian;
@@ -24,33 +23,11 @@ public class CraftGuardian extends CraftMonster implements Guardian {
@Override
public boolean isElder() {
return ((EntityGuardian)entity).isElder();
return false;
}
@Override
public void setElder( boolean shouldBeElder ) {
EntityGuardian entityGuardian = (EntityGuardian) entity;
if (!isElder() && shouldBeElder) {
entityGuardian.setElder(true);
} else if (isElder() && !shouldBeElder) {
entityGuardian.setElder(false);
// Since minecraft does not reset the elder Guardian to a guardian we have to do that
entity.setSize(0.85F, 0.85F);
// Since aW() calls its supers it will try to re register attributes which is invalid
// check these on update
entityGuardian.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(6.0D);
entityGuardian.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.5D);
entityGuardian.getAttributeInstance(GenericAttributes.FOLLOW_RANGE).setValue(16.0D);
entityGuardian.getAttributeInstance(GenericAttributes.maxHealth).setValue(30.0D);
// Update pathfinding (random stroll back to 80)
entityGuardian.goalRandomStroll.setTimeBetweenMovement(80);
// Tell minecraft that we need persistence since the guardian changed
entityGuardian.initAttributes();
}
public void setElder(boolean shouldBeElder) {
throw new UnsupportedOperationException("Not supported.");
}
}

View File

@@ -1,18 +1,14 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityHorse;
import net.minecraft.server.EnumHorseType;
import org.apache.commons.lang.Validate;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.inventory.CraftInventoryHorse;
import org.bukkit.entity.AnimalTamer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse;
import org.bukkit.inventory.HorseInventory;
import java.util.UUID;
public class CraftHorse extends CraftAnimals implements Horse {
public class CraftHorse extends CraftAbstractHorse implements Horse {
public CraftHorse(CraftServer server, EntityHorse entity) {
super(server, entity);
@@ -20,110 +16,47 @@ public class CraftHorse extends CraftAnimals implements Horse {
@Override
public EntityHorse getHandle() {
return (EntityHorse) entity;
return (EntityHorse) super.getHandle();
}
@Override
public Variant getVariant() {
return Variant.values()[getHandle().getType().ordinal()];
}
public void setVariant(Variant variant) {
Validate.notNull(variant, "Variant cannot be null");
getHandle().setType(EnumHorseType.values()[variant.ordinal()]);
return Variant.HORSE;
}
@Override
public Color getColor() {
return Color.values()[getHandle().getVariant() & 0xFF];
}
@Override
public void setColor(Color color) {
Validate.notNull(color, "Color cannot be null");
getHandle().setVariant(color.ordinal() & 0xFF | getStyle().ordinal() << 8);
}
@Override
public Style getStyle() {
return Style.values()[getHandle().getVariant() >>> 8];
}
@Override
public void setStyle(Style style) {
Validate.notNull(style, "Style cannot be null");
getHandle().setVariant(getColor().ordinal() & 0xFF | style.ordinal() << 8);
}
@Override
public boolean isCarryingChest() {
return getHandle().hasChest();
return false;
}
@Override
public void setCarryingChest(boolean chest) {
if (chest == isCarryingChest()) return;
getHandle().setHasChest(chest);
getHandle().loadChest();
}
public int getDomestication() {
return getHandle().getTemper();
}
public void setDomestication(int value) {
Validate.isTrue(value >= 0, "Domestication cannot be less than zero");
Validate.isTrue(value <= getMaxDomestication(), "Domestication cannot be greater than the max domestication");
getHandle().setTemper(value);
}
public int getMaxDomestication() {
return getHandle().getMaxDomestication();
}
public void setMaxDomestication(int value) {
Validate.isTrue(value > 0, "Max domestication cannot be zero or less");
getHandle().maxDomestication = value;
}
public double getJumpStrength() {
return getHandle().getJumpStrength();
}
public void setJumpStrength(double strength) {
Validate.isTrue(strength >= 0, "Jump strength cannot be less than zero");
getHandle().getAttributeInstance(EntityHorse.attributeJumpStrength).setValue(strength);
throw new UnsupportedOperationException("Not supported.");
}
@Override
public boolean isTamed() {
return getHandle().isTamed();
}
@Override
public void setTamed(boolean tamed) {
getHandle().setTame(tamed);
}
@Override
public AnimalTamer getOwner() {
if (getOwnerUUID() == null) return null;
return getServer().getOfflinePlayer(getOwnerUUID());
}
@Override
public void setOwner(AnimalTamer owner) {
if (owner != null) {
setTamed(true);
getHandle().setGoalTarget(null, null, false);
setOwnerUUID(owner.getUniqueId());
} else {
setTamed(false);
setOwnerUUID(null);
}
}
public UUID getOwnerUUID() {
return getHandle().getOwnerUUID();
}
public void setOwnerUUID(UUID uuid) {
getHandle().setOwnerUUID(uuid);
}
public HorseInventory getInventory() {
return new CraftInventoryHorse(getHandle().inventoryChest);
}
@@ -133,6 +66,7 @@ public class CraftHorse extends CraftAnimals implements Horse {
return "CraftHorse{variant=" + getVariant() + ", owner=" + getOwner() + '}';
}
@Override
public EntityType getType() {
return EntityType.HORSE;
}

View File

@@ -381,7 +381,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
@Override
public boolean isHandRaised() {
return getHandle().cx(); // PAIL: rename
return getHandle().isHandRaised();
}
public boolean setWindowProperty(InventoryView.Property prop, int value) {

View File

@@ -0,0 +1,23 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityZombieHusk;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Husk;
public class CraftHusk extends CraftZombie implements Husk {
public CraftHusk(CraftServer server, EntityZombieHusk entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftHusk";
}
@Override
public EntityType getType() {
return EntityType.HUSK;
}
}

View File

@@ -117,7 +117,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
public void resetMaxHealth() {
setMaxHealth(getHandle().getAttributeInstance(GenericAttributes.maxHealth).getAttribute().b()); // PAIL: getDefault
setMaxHealth(getHandle().getAttributeInstance(GenericAttributes.maxHealth).getAttribute().getDefault());
}
public double getEyeHeight() {

View File

@@ -0,0 +1,54 @@
package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import net.minecraft.server.EntityLlama;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.inventory.CraftInventoryLlama;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse;
import org.bukkit.entity.Llama;
import org.bukkit.inventory.LlamaInventory;
public class CraftLlama extends CraftChestedHorse implements Llama {
public CraftLlama(CraftServer server, EntityLlama entity) {
super(server, entity);
}
@Override
public EntityLlama getHandle() {
return (EntityLlama) super.getHandle();
}
@Override
public Color getColor() {
return Color.values()[getHandle().getVariant()];
}
@Override
public void setColor(Color color) {
Preconditions.checkArgument(color != null, "color");
getHandle().setVariant(color.ordinal());
}
@Override
public LlamaInventory getInventory() {
return new CraftInventoryLlama(getHandle().inventoryChest);
}
@Override
public Horse.Variant getVariant() {
return Horse.Variant.LLAMA;
}
@Override
public String toString() {
return "CraftLlama";
}
@Override
public EntityType getType() {
return EntityType.LLAMA;
}
}

View File

@@ -0,0 +1,50 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityLlamaSpit;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.LlamaSpit;
import org.bukkit.projectiles.ProjectileSource;
public class CraftLlamaSpit extends AbstractProjectile implements LlamaSpit {
public CraftLlamaSpit(CraftServer server, EntityLlamaSpit entity) {
super(server, entity);
}
@Override
public EntityLlamaSpit getHandle() {
return (EntityLlamaSpit) super.getHandle();
}
@Override
public String toString() {
return "CraftLlamaSpit";
}
@Override
public EntityType getType() {
return EntityType.LLAMA_SPIT;
}
@Override
public LivingEntity _INVALID_getShooter() {
return (getHandle().shooter != null) ? (LivingEntity) getHandle().shooter.getBukkitEntity() : null;
}
@Override
public ProjectileSource getShooter() {
return (getHandle().shooter != null) ? (ProjectileSource) getHandle().shooter.getBukkitEntity() : null;
}
@Override
public void _INVALID_setShooter(LivingEntity shooter) {
getHandle().shooter = (shooter != null) ? ((CraftLivingEntity) shooter).getHandle() : null;
}
@Override
public void setShooter(ProjectileSource source) {
getHandle().shooter = (source != null) ? ((CraftLivingEntity) source).getHandle() : null;
}
}

View File

@@ -5,7 +5,7 @@ import net.minecraft.server.EntityMinecartChest;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.StorageMinecart;
import org.bukkit.entity.minecart.StorageMinecart;
import org.bukkit.inventory.Inventory;
@SuppressWarnings("deprecation")

View File

@@ -35,7 +35,7 @@ public class CraftMinecartCommand extends CraftMinecart implements CommandMineca
@Override
public void setCommand(String command) {
getHandle().getCommandBlock().setCommand(command != null ? command : "");
getHandle().getDataWatcher().set(EntityMinecartCommandBlock.a, getHandle().getCommandBlock().getCommand()); // PAIL: rename
getHandle().getDataWatcher().set(EntityMinecartCommandBlock.COMMAND, getHandle().getCommandBlock().getCommand());
}
@Override

View File

@@ -4,7 +4,7 @@ import net.minecraft.server.EntityMinecartFurnace;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.PoweredMinecart;
import org.bukkit.entity.minecart.PoweredMinecart;
@SuppressWarnings("deprecation")
public class CraftMinecartFurnace extends CraftMinecart implements PoweredMinecart {

View File

@@ -0,0 +1,29 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityHorseMule;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse.Variant;
import org.bukkit.entity.Mule;
public class CraftMule extends CraftChestedHorse implements Mule {
public CraftMule(CraftServer server, EntityHorseMule entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftMule";
}
@Override
public EntityType getType() {
return EntityType.MULE;
}
@Override
public Variant getVariant() {
return Variant.MULE;
}
}

View File

@@ -426,7 +426,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(cursor.getRawType(), cursor.getX(), cursor.getY(), cursor.getDirection()));
icons.add(new MapIcon(MapIcon.Type.a(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection()));
}
}

View File

@@ -1,22 +1,20 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntitySkeleton;
import net.minecraft.server.EnumSkeletonType;
import net.minecraft.server.EntitySkeletonAbstract;
import org.apache.commons.lang.Validate;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Skeleton;
public class CraftSkeleton extends CraftMonster implements Skeleton {
public CraftSkeleton(CraftServer server, EntitySkeleton entity) {
public CraftSkeleton(CraftServer server, EntitySkeletonAbstract entity) {
super(server, entity);
}
@Override
public EntitySkeleton getHandle() {
return (EntitySkeleton) entity;
public EntitySkeletonAbstract getHandle() {
return (EntitySkeletonAbstract) entity;
}
@Override
@@ -28,12 +26,13 @@ public class CraftSkeleton extends CraftMonster implements Skeleton {
return EntityType.SKELETON;
}
@Override
public SkeletonType getSkeletonType() {
return SkeletonType.values()[getHandle().getSkeletonType().ordinal()];
return SkeletonType.NORMAL;
}
@Override
public void setSkeletonType(SkeletonType type) {
Validate.notNull(type);
getHandle().setSkeletonType(EnumSkeletonType.a(type.ordinal())); // PAIL: rename
throw new UnsupportedOperationException("Not supported.");
}
}

View File

@@ -0,0 +1,29 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityHorseSkeleton;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse.Variant;
import org.bukkit.entity.SkeletonHorse;
public class CraftSkeletonHorse extends CraftAbstractHorse implements SkeletonHorse {
public CraftSkeletonHorse(CraftServer server, EntityHorseSkeleton entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftSkeletonHorse";
}
@Override
public EntityType getType() {
return EntityType.SKELETON_HORSE;
}
@Override
public Variant getVariant() {
return Variant.SKELETON_HORSE;
}
}

View File

@@ -17,7 +17,7 @@ public class CraftSlime extends CraftLivingEntity implements Slime {
}
public void setSize(int size) {
getHandle().setSize(size);
getHandle().setSize(size, true);
}
@Override

View File

@@ -12,12 +12,12 @@ public class CraftSnowman extends CraftGolem implements Snowman {
@Override
public boolean isDerp() {
return getHandle().isDerp();
return getHandle().hasPumpkin();
}
@Override
public void setDerp(boolean derpMode) {
getHandle().setDerp(derpMode);
getHandle().setHasPumpkin(derpMode);
}
@Override

View File

@@ -0,0 +1,28 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntitySkeletonStray;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Stray;
public class CraftStray extends CraftSkeleton implements Stray {
public CraftStray(CraftServer server, EntitySkeletonStray entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftStray";
}
@Override
public EntityType getType() {
return EntityType.STRAY;
}
@Override
public SkeletonType getSkeletonType() {
return SkeletonType.STRAY;
}
}

View File

@@ -0,0 +1,28 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityVex;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Vex;
public class CraftVex extends CraftMonster implements Vex {
public CraftVex(CraftServer server, EntityVex entity) {
super(server, entity);
}
@Override
public EntityVex getHandle() {
return (EntityVex) super.getHandle();
}
@Override
public String toString() {
return "CraftVex";
}
@Override
public EntityType getType() {
return EntityType.VEX;
}
}

View File

@@ -0,0 +1,39 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityZombieVillager;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Villager;
import org.bukkit.entity.ZombieVillager;
public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
public CraftVillagerZombie(CraftServer server, EntityZombieVillager entity) {
super(server, entity);
}
@Override
public EntityZombieVillager getHandle() {
return (EntityZombieVillager) super.getHandle();
}
@Override
public String toString() {
return "CraftVillagerZombie";
}
@Override
public EntityType getType() {
return EntityType.ZOMBIE_VILLAGER;
}
@Override
public Villager.Profession getVillagerProfession() {
return Villager.Profession.values()[getHandle().getProfession()];
}
@Override
public void setVillagerProfession(Villager.Profession profession) {
getHandle().setProfession(profession == null ? 0 : profession.ordinal());
}
}

View File

@@ -0,0 +1,28 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityVindicator;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Vindicator;
public class CraftVindicator extends CraftMonster implements Vindicator {
public CraftVindicator(CraftServer server, EntityVindicator entity) {
super(server, entity);
}
@Override
public EntityVindicator getHandle() {
return (EntityVindicator) super.getHandle();
}
@Override
public String toString() {
return "CraftVindicator";
}
@Override
public EntityType getType() {
return EntityType.VINDICATOR;
}
}

View File

@@ -0,0 +1,28 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntitySkeletonWither;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.WitherSkeleton;
public class CraftWitherSkeleton extends CraftSkeleton implements WitherSkeleton {
public CraftWitherSkeleton(CraftServer server, EntitySkeletonWither entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftWitherSkeleton";
}
@Override
public EntityType getType() {
return EntityType.WITHER_SKELETON;
}
@Override
public SkeletonType getSkeletonType() {
return SkeletonType.WITHER;
}
}

View File

@@ -1,7 +1,7 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityZombie;
import net.minecraft.server.EnumZombieType;
import net.minecraft.server.EntityZombieVillager;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
@@ -37,20 +37,21 @@ public class CraftZombie extends CraftMonster implements Zombie {
}
public boolean isVillager() {
return getHandle().isVillager();
return getHandle() instanceof EntityZombieVillager;
}
@Override
public void setVillager(boolean flag) {
getHandle().setVillagerType(flag ? EnumZombieType.VILLAGER_FARMER : EnumZombieType.NORMAL);
throw new UnsupportedOperationException("Not supported.");
}
@Override
public void setVillagerProfession(Villager.Profession profession) {
getHandle().setVillagerType(profession == null ? EnumZombieType.NORMAL : EnumZombieType.a(profession.ordinal()));
throw new UnsupportedOperationException("Not supported.");
}
@Override
public Villager.Profession getVillagerProfession() {
return Villager.Profession.values()[getHandle().getVillagerType().ordinal()];
return null;
}
}

View File

@@ -0,0 +1,29 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityHorseZombie;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse.Variant;
import org.bukkit.entity.ZombieHorse;
public class CraftZombieHorse extends CraftAbstractHorse implements ZombieHorse {
public CraftZombieHorse(CraftServer server, EntityHorseZombie entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftZombieHorse";
}
@Override
public EntityType getType() {
return EntityType.ZOMBIE_HORSE;
}
@Override
public Variant getVariant() {
return Variant.UNDEAD_HORSE;
}
}

View File

@@ -36,7 +36,6 @@ import org.bukkit.entity.Arrow;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Horse;
import org.bukkit.entity.LightningStrike;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Pig;
@@ -62,6 +61,7 @@ import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.meta.BookMeta;
import org.bukkit.entity.AbstractHorse;
public class CraftEventFactory {
public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.BURN);
@@ -550,6 +550,8 @@ public class CraftEventFactory {
cause = DamageCause.FALL;
} else if (source == DamageSource.FLY_INTO_WALL) {
cause = DamageCause.FLY_INTO_WALL;
} else if (source == DamageSource.CRAMMING) {
cause = DamageCause.CRAMMING;
} else if (source == DamageSource.GENERIC) {
cause = DamageCause.CUSTOM;
}
@@ -669,7 +671,7 @@ public class CraftEventFactory {
}
public static HorseJumpEvent callHorseJumpEvent(Entity horse, float power) {
HorseJumpEvent event = new HorseJumpEvent((Horse) horse.getBukkitEntity(), power);
HorseJumpEvent event = new HorseJumpEvent((AbstractHorse) horse.getBukkitEntity(), power);
horse.getBukkitEntity().getServer().getPluginManager().callEvent(event);
return event;
}

View File

@@ -221,8 +221,8 @@ public class CustomChunkGenerator extends InternalChunkGenerator {
}
@Override
public BlockPosition findNearestMapFeature(World world, String type, BlockPosition position) {
return "Stronghold".equals(type) && this.strongholdGen != null ? this.strongholdGen.getNearestGeneratedFeature(world, position) : null;
public BlockPosition findNearestMapFeature(World world, String type, BlockPosition position, boolean flag) {
return "Stronghold".equals(type) && this.strongholdGen != null ? this.strongholdGen.getNearestGeneratedFeature(world, position, flag) : null;
}
@Override

View File

@@ -52,8 +52,8 @@ public class NormalChunkGenerator extends InternalChunkGenerator {
}
@Override
public BlockPosition findNearestMapFeature(World world, String s, BlockPosition blockPosition) {
return generator.findNearestMapFeature(world, s, blockPosition);
public BlockPosition findNearestMapFeature(World world, String s, BlockPosition blockPosition, boolean flag) {
return generator.findNearestMapFeature(world, s, blockPosition, flag);
}
@Override

View File

@@ -61,11 +61,11 @@ public class CraftInventory implements Inventory {
public ItemStack[] getContents() {
ItemStack[] items = new ItemStack[getSize()];
net.minecraft.server.ItemStack[] mcItems = getInventory().getContents();
List<net.minecraft.server.ItemStack> mcItems = getInventory().getContents();
int size = Math.min(items.length, mcItems.length);
int size = Math.min(items.length, mcItems.size());
for (int i = 0; i < size; i++) {
items[i] = mcItems[i] == null ? null : CraftItemStack.asCraftMirror(mcItems[i]);
items[i] = (mcItems.get(i) == net.minecraft.server.ItemStack.a) ? null : CraftItemStack.asCraftMirror(mcItems.get(i));
}
return items;
}
@@ -85,7 +85,7 @@ public class CraftInventory implements Inventory {
}
public void setItem(int index, ItemStack item) {
getInventory().setItem(index, ((item == null || item.getTypeId() == 0) ? null : CraftItemStack.asNMSCopy(item)));
getInventory().setItem(index, ((item == null || item.getTypeId() == 0) ? net.minecraft.server.ItemStack.a : CraftItemStack.asNMSCopy(item)));
}
public boolean contains(int materialId) {

View File

@@ -1,6 +1,7 @@
package org.bukkit.craftbukkit.inventory;
import java.util.Arrays;
import java.util.List;
import net.minecraft.server.IRecipe;
import net.minecraft.server.IInventory;
@@ -33,8 +34,8 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
@Override
public void setContents(ItemStack[] items) {
int resultLen = getResultInventory().getContents().length;
int len = getMatrixInventory().getContents().length + resultLen;
int resultLen = getResultInventory().getContents().size();
int len = getMatrixInventory().getContents().size() + resultLen;
if (len > items.length) {
throw new IllegalArgumentException("Invalid inventory size; expected " + len + " or less");
}
@@ -44,17 +45,17 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
@Override
public ItemStack[] getContents() {
ItemStack[] items = new ItemStack[getSize()];
net.minecraft.server.ItemStack[] mcResultItems = getResultInventory().getContents();
List<net.minecraft.server.ItemStack> mcResultItems = getResultInventory().getContents();
int i = 0;
for (i = 0; i < mcResultItems.length; i++ ) {
items[i] = CraftItemStack.asCraftMirror(mcResultItems[i]);
for (i = 0; i < mcResultItems.size(); i++ ) {
items[i] = CraftItemStack.asCraftMirror(mcResultItems.get(i));
}
net.minecraft.server.ItemStack[] mcItems = getMatrixInventory().getContents();
List<net.minecraft.server.ItemStack> mcItems = getMatrixInventory().getContents();
for (int j = 0; j < mcItems.length; j++) {
items[i + j] = CraftItemStack.asCraftMirror(mcItems[j]);
for (int j = 0; j < mcItems.size(); j++) {
items[i + j] = CraftItemStack.asCraftMirror(mcItems.get(j));
}
return items;
@@ -86,11 +87,11 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
public ItemStack[] getMatrix() {
net.minecraft.server.ItemStack[] matrix = getMatrixInventory().getContents();
ItemStack[] items = new ItemStack[matrix.length];
List<net.minecraft.server.ItemStack> matrix = getMatrixInventory().getContents();
ItemStack[] items = new ItemStack[matrix.size()];
for (int i = 0; i < matrix.length; i++) {
items[i] = CraftItemStack.asCraftMirror(matrix[i]);
for (int i = 0; i < matrix.size(); i++) {
items[i] = CraftItemStack.asCraftMirror(matrix.get(i));
}
return items;
@@ -103,13 +104,13 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
public void setMatrix(ItemStack[] contents) {
if (getMatrixInventory().getContents().length > contents.length) {
throw new IllegalArgumentException("Invalid inventory size; expected " + getMatrixInventory().getContents().length + " or less");
if (getMatrixInventory().getContents().size() > contents.length) {
throw new IllegalArgumentException("Invalid inventory size; expected " + getMatrixInventory().getContents().size() + " or less");
}
net.minecraft.server.ItemStack[] mcItems = getMatrixInventory().getContents();
List<net.minecraft.server.ItemStack> mcItems = getMatrixInventory().getContents();
for (int i = 0; i < mcItems.length; i++) {
for (int i = 0; i < mcItems.size(); i++) {
if (i < contents.length) {
ItemStack item = contents[i];
if (item == null || item.getTypeId() <= 0) {
@@ -124,11 +125,11 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
public void setResult(ItemStack item) {
net.minecraft.server.ItemStack[] contents = getResultInventory().getContents();
List<net.minecraft.server.ItemStack> contents = getResultInventory().getContents();
if (item == null || item.getTypeId() <= 0) {
contents[0] = null;
contents.set(0, net.minecraft.server.ItemStack.a);
} else {
contents[0] = CraftItemStack.asNMSCopy(item);
contents.set(0, CraftItemStack.asNMSCopy(item));
}
}

View File

@@ -1,11 +1,13 @@
package org.bukkit.craftbukkit.inventory;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraft.server.ChatComponentText;
import net.minecraft.server.IChatBaseComponent;
import org.apache.commons.lang.Validate;
import org.bukkit.Location;
import org.bukkit.craftbukkit.entity.CraftHumanEntity;
import org.bukkit.entity.HumanEntity;
import org.bukkit.event.inventory.InventoryType;
@@ -14,7 +16,7 @@ import org.bukkit.inventory.InventoryHolder;
import net.minecraft.server.EntityHuman;
import net.minecraft.server.IInventory;
import net.minecraft.server.ItemStack;
import org.bukkit.Location;
import net.minecraft.server.NonNullList;
public class CraftInventoryCustom extends CraftInventory {
public CraftInventoryCustom(InventoryHolder owner, InventoryType type) {
@@ -34,7 +36,7 @@ public class CraftInventoryCustom extends CraftInventory {
}
static class MinecraftInventory implements IInventory {
private final ItemStack[] items;
private final NonNullList<ItemStack> items;
private int maxStack = MAX_STACK;
private final List<HumanEntity> viewers;
private final String title;
@@ -57,7 +59,7 @@ public class CraftInventoryCustom extends CraftInventory {
public MinecraftInventory(InventoryHolder owner, int size, String title) {
Validate.notNull(title, "Title cannot be null");
this.items = new ItemStack[size];
this.items = NonNullList.a(size, ItemStack.a);
this.title = title;
this.viewers = new ArrayList<HumanEntity>();
this.owner = owner;
@@ -65,23 +67,23 @@ public class CraftInventoryCustom extends CraftInventory {
}
public int getSize() {
return items.length;
return items.size();
}
public ItemStack getItem(int i) {
return items[i];
return items.get(i);
}
public ItemStack splitStack(int i, int j) {
ItemStack stack = this.getItem(i);
ItemStack result;
if (stack == null) return null;
if (stack.count <= j) {
this.setItem(i, null);
if (stack == ItemStack.a) return stack;
if (stack.getCount() <= j) {
this.setItem(i, ItemStack.a);
result = stack;
} else {
result = CraftItemStack.copyNMSStack(stack, j);
stack.count -= j;
stack.subtract(j);
}
this.update();
return result;
@@ -90,21 +92,21 @@ public class CraftInventoryCustom extends CraftInventory {
public ItemStack splitWithoutUpdate(int i) {
ItemStack stack = this.getItem(i);
ItemStack result;
if (stack == null) return null;
if (stack.count <= 1) {
if (stack == ItemStack.a) return stack;
if (stack.getCount() <= 1) {
this.setItem(i, null);
result = stack;
} else {
result = CraftItemStack.copyNMSStack(stack, 1);
stack.count -= 1;
stack.subtract(1);
}
return result;
}
public void setItem(int i, ItemStack itemstack) {
items[i] = itemstack;
if (itemstack != null && this.getMaxStackSize() > 0 && itemstack.count > this.getMaxStackSize()) {
itemstack.count = this.getMaxStackSize();
items.set(i, itemstack);
if (itemstack != ItemStack.a && this.getMaxStackSize() > 0 && itemstack.getCount() > this.getMaxStackSize()) {
itemstack.setCount(this.getMaxStackSize());
}
}
@@ -122,7 +124,7 @@ public class CraftInventoryCustom extends CraftInventory {
return true;
}
public ItemStack[] getContents() {
public List<ItemStack> getContents() {
return items;
}
@@ -141,7 +143,7 @@ public class CraftInventoryCustom extends CraftInventory {
public InventoryType getType() {
return type;
}
public InventoryHolder getOwner() {
return owner;
}
@@ -170,13 +172,13 @@ public class CraftInventoryCustom extends CraftInventory {
}
@Override
public int g() {
public int h() {
return 0;
}
@Override
public void l() {
public void clear() {
items.clear();
}
@Override
@@ -198,5 +200,22 @@ public class CraftInventoryCustom extends CraftInventory {
public Location getLocation() {
return null;
}
@Override
public boolean w_() {
Iterator iterator = this.items.iterator();
ItemStack itemstack;
do {
if (!iterator.hasNext()) {
return true;
}
itemstack = (ItemStack) iterator.next();
} while (itemstack.isEmpty());
return false;
}
}
}

View File

@@ -44,8 +44,8 @@ public class CraftInventoryDoubleChest extends CraftInventory implements DoubleC
@Override
public void setContents(ItemStack[] items) {
if (getInventory().getContents().length < items.length) {
throw new IllegalArgumentException("Invalid inventory size; expected " + getInventory().getContents().length + " or less");
if (getInventory().getContents().size() < items.length) {
throw new IllegalArgumentException("Invalid inventory size; expected " + getInventory().getContents().size() + " or less");
}
ItemStack[] leftItems = new ItemStack[left.getSize()], rightItems = new ItemStack[right.getSize()];
System.arraycopy(items, 0, leftItems, 0, Math.min(left.getSize(),items.length));

View File

@@ -0,0 +1,22 @@
package org.bukkit.craftbukkit.inventory;
import net.minecraft.server.IInventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.LlamaInventory;
public class CraftInventoryLlama extends CraftInventory implements LlamaInventory {
public CraftInventoryLlama(IInventory inventory) {
super(inventory);
}
@Override
public ItemStack getDecor() {
return getItem(1);
}
@Override
public void setDecor(ItemStack stack) {
setItem(1, stack);
}
}

View File

@@ -25,7 +25,7 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
@Override
public ItemStack[] getStorageContents() {
return Arrays.copyOfRange(getContents(), 0, getInventory().items.length);
return Arrays.copyOfRange(getContents(), 0, getInventory().items.size());
}
@@ -41,7 +41,7 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
@Override
public ItemStack getItemInOffHand() {
return CraftItemStack.asCraftMirror(getInventory().extraSlots[0]);
return CraftItemStack.asCraftMirror(getInventory().extraSlots.get(0));
}
@Override
@@ -148,8 +148,8 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
}
public ItemStack[] getArmorContents() {
int start = getInventory().items.length;
return Arrays.copyOfRange(getContents(), start, start + getInventory().armor.length);
int start = getInventory().items.size();
return Arrays.copyOfRange(getContents(), start, start + getInventory().armor.size());
}
private void setSlots(ItemStack[] items, int baseSlot, int length) {
@@ -169,23 +169,23 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
@Override
public void setStorageContents(ItemStack[] items) throws IllegalArgumentException {
setSlots(items, 0, getInventory().items.length);
setSlots(items, 0, getInventory().items.size());
}
@Override
public void setArmorContents(ItemStack[] items) {
setSlots(items, getInventory().items.length, getInventory().armor.length);
setSlots(items, getInventory().items.size(), getInventory().armor.size());
}
@Override
public ItemStack[] getExtraContents() {
int start = getInventory().items.length + getInventory().armor.length;
return Arrays.copyOfRange(getContents(), start, start + getInventory().extraSlots.length);
int start = getInventory().items.size() + getInventory().armor.size();
return Arrays.copyOfRange(getContents(), start, start + getInventory().extraSlots.size());
}
@Override
public void setExtraContents(ItemStack[] items) {
setSlots(items, getInventory().items.length + getInventory().armor.length, getInventory().extraSlots.length);
setSlots(items, getInventory().items.size() + getInventory().armor.size(), getInventory().extraSlots.size());
}
public int clear(int id, int data) {

View File

@@ -114,6 +114,22 @@ public final class CraftItemFactory implements ItemFactory {
case FLOWER_POT_ITEM:
case SHIELD:
case STRUCTURE_BLOCK:
case WHITE_SHULKER_BOX:
case ORANGE_SHULKER_BOX:
case MAGENTA_SHULKER_BOX:
case LIGHT_BLUE_SHULKER_BOX:
case YELLOW_SHULKER_BOX:
case LIME_SHULKER_BOX:
case PINK_SHULKER_BOX:
case GRAY_SHULKER_BOX:
case SILVER_SHULKER_BOX:
case CYAN_SHULKER_BOX:
case PURPLE_SHULKER_BOX:
case BLUE_SHULKER_BOX:
case BROWN_SHULKER_BOX:
case GREEN_SHULKER_BOX:
case RED_SHULKER_BOX:
case BLACK_SHULKER_BOX:
return new CraftMetaBlockState(meta, material);
default:
return new CraftMetaItem(meta);

View File

@@ -20,11 +20,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import com.google.common.collect.ImmutableMap;
import net.minecraft.server.IChatBaseComponent.ChatSerializer;
import net.minecraft.server.Items;
import net.minecraft.server.NBTTagString;
import org.bukkit.craftbukkit.enchantments.CraftEnchantment;
import org.bukkit.craftbukkit.util.CraftChatMessage;
@DelegateDeserialization(ItemStack.class)
public final class CraftItemStack extends ItemStack {
@@ -32,16 +28,16 @@ public final class CraftItemStack extends ItemStack {
public static net.minecraft.server.ItemStack asNMSCopy(ItemStack original) {
if (original instanceof CraftItemStack) {
CraftItemStack stack = (CraftItemStack) original;
return stack.handle == null ? null : stack.handle.cloneItemStack();
return stack.handle == null ? net.minecraft.server.ItemStack.a : stack.handle.cloneItemStack();
}
if (original == null || original.getTypeId() <= 0) {
return null;
return net.minecraft.server.ItemStack.a;
}
Item item = CraftMagicNumbers.getItem(original.getType());
if (item == null) {
return null;
return net.minecraft.server.ItemStack.a;
}
net.minecraft.server.ItemStack stack = new net.minecraft.server.ItemStack(item, original.getAmount(), original.getDurability());
@@ -53,7 +49,7 @@ public final class CraftItemStack extends ItemStack {
public static net.minecraft.server.ItemStack copyNMSStack(net.minecraft.server.ItemStack original, int amount) {
net.minecraft.server.ItemStack stack = original.cloneItemStack();
stack.count = amount;
stack.setCount(amount);
return stack;
}
@@ -61,10 +57,10 @@ public final class CraftItemStack extends ItemStack {
* Copies the NMS stack to return as a strictly-Bukkit stack
*/
public static ItemStack asBukkitCopy(net.minecraft.server.ItemStack original) {
if (original == null) {
if (original == net.minecraft.server.ItemStack.a) {
return new ItemStack(Material.AIR);
}
ItemStack stack = new ItemStack(CraftMagicNumbers.getMaterial(original.getItem()), original.count, (short) original.getData());
ItemStack stack = new ItemStack(CraftMagicNumbers.getMaterial(original.getItem()), original.getCount(), (short) original.getData());
if (hasItemMeta(original)) {
stack.setItemMeta(getItemMeta(original));
}
@@ -143,7 +139,7 @@ public final class CraftItemStack extends ItemStack {
@Override
public int getAmount() {
return handle != null ? handle.count : 0;
return handle != null ? handle.getCount() : 0;
}
@Override
@@ -154,7 +150,7 @@ public final class CraftItemStack extends ItemStack {
if (amount == 0) {
handle = null;
} else {
handle.count = amount;
handle.setCount(amount);
}
}
@@ -375,6 +371,22 @@ public final class CraftItemStack extends ItemStack {
case FLOWER_POT_ITEM:
case SHIELD:
case STRUCTURE_BLOCK:
case WHITE_SHULKER_BOX:
case ORANGE_SHULKER_BOX:
case MAGENTA_SHULKER_BOX:
case LIGHT_BLUE_SHULKER_BOX:
case YELLOW_SHULKER_BOX:
case LIME_SHULKER_BOX:
case PINK_SHULKER_BOX:
case GRAY_SHULKER_BOX:
case SILVER_SHULKER_BOX:
case CYAN_SHULKER_BOX:
case PURPLE_SHULKER_BOX:
case BLUE_SHULKER_BOX:
case BROWN_SHULKER_BOX:
case GREEN_SHULKER_BOX:
case RED_SHULKER_BOX:
case BLACK_SHULKER_BOX:
return new CraftMetaBlockState(item.getTag(), CraftMagicNumbers.getMaterial(item.getItem()));
default:
return new CraftMetaItem(item.getTag());

View File

@@ -181,6 +181,22 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta
case FLOWER_POT_ITEM:
case SHIELD:
case STRUCTURE_BLOCK:
case WHITE_SHULKER_BOX:
case ORANGE_SHULKER_BOX:
case MAGENTA_SHULKER_BOX:
case LIGHT_BLUE_SHULKER_BOX:
case YELLOW_SHULKER_BOX:
case LIME_SHULKER_BOX:
case PINK_SHULKER_BOX:
case GRAY_SHULKER_BOX:
case SILVER_SHULKER_BOX:
case CYAN_SHULKER_BOX:
case PURPLE_SHULKER_BOX:
case BLUE_SHULKER_BOX:
case BROWN_SHULKER_BOX:
case GREEN_SHULKER_BOX:
case RED_SHULKER_BOX:
case BLACK_SHULKER_BOX:
return true;
}
return false;

View File

@@ -3,6 +3,7 @@ package org.bukkit.craftbukkit.inventory;
import java.util.Map;
import net.minecraft.server.NBTTagCompound;
import net.minecraft.server.NBTTagString;
import org.bukkit.Material;
import org.bukkit.configuration.serialization.DelegateDeserialization;
@@ -14,11 +15,15 @@ import com.google.common.collect.ImmutableMap;
@DelegateDeserialization(SerializableMeta.class)
class CraftMetaMap extends CraftMetaItem implements MapMeta {
static final ItemMetaKey MAP_SCALING = new ItemMetaKey("map_is_scaling", "scaling");
static final ItemMetaKey MAP_LOC_NAME = new ItemMetaKey("LocName", "display-loc-name");
static final ItemMetaKey MAP_COLOR = new ItemMetaKey("Mapcolor", "display-map-color");
static final byte SCALING_EMPTY = (byte) 0;
static final byte SCALING_TRUE = (byte) 1;
static final byte SCALING_FALSE = (byte) 2;
private byte scaling = SCALING_EMPTY;
private String locName;
private String mapColor;
CraftMetaMap(CraftMetaItem meta) {
super(meta);
@@ -37,6 +42,18 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
if (tag.hasKey(MAP_SCALING.NBT)) {
this.scaling = tag.getBoolean(MAP_SCALING.NBT) ? SCALING_TRUE : SCALING_FALSE;
}
if (tag.hasKey(DISPLAY.NBT)) {
NBTTagCompound display = tag.getCompound(DISPLAY.NBT);
if (display.hasKey(MAP_LOC_NAME.NBT)) {
locName = display.getString(MAP_LOC_NAME.NBT);
}
if (display.hasKey(MAP_COLOR.NBT)) {
mapColor = display.getString(MAP_COLOR.NBT);
}
}
}
CraftMetaMap(Map<String, Object> map) {
@@ -55,6 +72,14 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
if (hasScaling()) {
tag.setBoolean(MAP_SCALING.NBT, isScaling());
}
if (hasLocationName()) {
setDisplayTag(tag, MAP_LOC_NAME.NBT, new NBTTagString(getLocationName()));
}
if (hasMapColor()) {
setDisplayTag(tag, MAP_COLOR.NBT, new NBTTagString(mapColor));
}
}
@Override
@@ -88,6 +113,25 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
this.scaling = scaling ? SCALING_TRUE : SCALING_FALSE;
}
@Override
public boolean hasLocationName() {
return this.locName != null;
}
@Override
public String getLocationName() {
return this.locName;
}
@Override
public void setLocationName(String name) {
this.locName = name;
}
public boolean hasMapColor() {
return this.mapColor != null;
}
@Override
boolean equalsCommon(CraftMetaItem meta) {
if (!super.equalsCommon(meta)) {
@@ -96,7 +140,9 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
if (meta instanceof CraftMetaMap) {
CraftMetaMap that = (CraftMetaMap) meta;
return (this.scaling == that.scaling);
return (this.scaling == that.scaling)
&& (hasLocationName() ? that.hasLocationName() && this.getLocationName().equals(that.getLocationName()) : !that.hasLocationName())
&& (hasMapColor() ? that.hasMapColor() && this.mapColor.equals(that.mapColor) : !that.hasMapColor());
}
return true;
}
@@ -130,6 +176,14 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
builder.put(MAP_SCALING.BUKKIT, isScaling());
}
if (hasLocationName()) {
builder.put(MAP_LOC_NAME.BUKKIT, getLocationName());
}
if (hasMapColor()) {
builder.put(MAP_COLOR.BUKKIT, mapColor);
}
return builder;
}
}

View File

@@ -1,5 +1,7 @@
package org.bukkit.craftbukkit.inventory;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.server.EntityHuman;
@@ -40,12 +42,12 @@ public class InventoryWrapper implements IInventory {
if (stack == null) {
return null;
}
if (stack.count <= j) {
if (stack.getCount() <= j) {
this.setItem(i, null);
result = stack;
} else {
result = CraftItemStack.copyNMSStack(stack, j);
stack.count -= j;
stack.subtract(j);
}
this.update();
return result;
@@ -59,12 +61,12 @@ public class InventoryWrapper implements IInventory {
if (stack == null) {
return null;
}
if (stack.count <= 1) {
if (stack.getCount() <= 1) {
this.setItem(i, null);
result = stack;
} else {
result = CraftItemStack.copyNMSStack(stack, 1);
stack.count -= 1;
stack.subtract(1);
}
return result;
}
@@ -111,22 +113,22 @@ public class InventoryWrapper implements IInventory {
}
@Override
public int g() {
public int h() {
return 0;
}
@Override
public void l() {
public void clear() {
inventory.clear();
}
@Override
public ItemStack[] getContents() {
public List<ItemStack> getContents() {
int size = getSize();
ItemStack[] items = new ItemStack[size];
List<ItemStack> items = new ArrayList<ItemStack>(size);
for (int i = 0; i < size; i++) {
items[i] = getItem(i);
items.set(i, getItem(i));
}
return items;
@@ -176,4 +178,9 @@ public class InventoryWrapper implements IInventory {
public Location getLocation() {
return inventory.getLocation();
}
@Override
public boolean w_() {
return Iterables.any(inventory, Predicates.notNull());
}
}

View File

@@ -41,7 +41,6 @@ public class CraftMapRenderer extends MapRenderer {
continue;
}
MapIcon decoration = (MapIcon) worldMap.decorations.get(key);
cursors.addCursor(decoration.getX(), decoration.getY(), (byte) (decoration.getRotation() & 15), decoration.getType());
}

View File

@@ -160,4 +160,13 @@ public final class CraftMapView implements MapView {
return render;
}
@Override
public boolean isUnlimitedTracking() {
return worldMap.unlimitedTracking;
}
@Override
public void setUnlimitedTracking(boolean unlimited) {
worldMap.unlimitedTracking = unlimited;
}
}