From c25ddf063a808e3adb749e22017661f403c5fb7e Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 17 Nov 2016 12:41:03 +1100 Subject: Update to Minecraft 1.11 --- .../java/org/bukkit/craftbukkit/CraftServer.java | 5 -- .../java/org/bukkit/craftbukkit/CraftSound.java | 32 ++++++- .../java/org/bukkit/craftbukkit/CraftWorld.java | 51 ++++++++++-- src/main/java/org/bukkit/craftbukkit/Main.java | 17 ++++ .../org/bukkit/craftbukkit/block/CraftBanner.java | 7 +- .../org/bukkit/craftbukkit/block/CraftBeacon.java | 6 +- .../org/bukkit/craftbukkit/block/CraftBlock.java | 23 ++++- .../bukkit/craftbukkit/block/CraftBlockState.java | 2 +- .../bukkit/craftbukkit/block/CraftContainer.java | 4 +- .../craftbukkit/block/CraftCreatureSpawner.java | 17 +--- .../bukkit/craftbukkit/block/CraftFlowerPot.java | 6 +- .../bukkit/craftbukkit/block/CraftShulkerBox.java | 34 ++++++++ .../craftbukkit/command/VanillaCommandWrapper.java | 15 +++- .../craftbukkit/enchantments/CraftEnchantment.java | 2 +- .../craftbukkit/entity/CraftAbstractHorse.java | 97 ++++++++++++++++++++++ .../craftbukkit/entity/CraftChestedHorse.java | 27 ++++++ .../org/bukkit/craftbukkit/entity/CraftDonkey.java | 29 +++++++ .../craftbukkit/entity/CraftElderGuardian.java | 28 +++++++ .../org/bukkit/craftbukkit/entity/CraftEntity.java | 34 ++++++-- .../org/bukkit/craftbukkit/entity/CraftEvoker.java | 28 +++++++ .../craftbukkit/entity/CraftEvokerFangs.java | 29 +++++++ .../craftbukkit/entity/CraftFallingBlock.java | 68 +++++++++++++++ .../craftbukkit/entity/CraftFallingSand.java | 68 --------------- .../bukkit/craftbukkit/entity/CraftFirework.java | 13 +-- .../bukkit/craftbukkit/entity/CraftGuardian.java | 29 +------ .../org/bukkit/craftbukkit/entity/CraftHorse.java | 92 +++----------------- .../craftbukkit/entity/CraftHumanEntity.java | 2 +- .../org/bukkit/craftbukkit/entity/CraftHusk.java | 23 +++++ .../craftbukkit/entity/CraftLivingEntity.java | 2 +- .../org/bukkit/craftbukkit/entity/CraftLlama.java | 54 ++++++++++++ .../bukkit/craftbukkit/entity/CraftLlamaSpit.java | 50 +++++++++++ .../craftbukkit/entity/CraftMinecartChest.java | 2 +- .../craftbukkit/entity/CraftMinecartCommand.java | 2 +- .../craftbukkit/entity/CraftMinecartFurnace.java | 2 +- .../org/bukkit/craftbukkit/entity/CraftMule.java | 29 +++++++ .../org/bukkit/craftbukkit/entity/CraftPlayer.java | 2 +- .../bukkit/craftbukkit/entity/CraftSkeleton.java | 17 ++-- .../craftbukkit/entity/CraftSkeletonHorse.java | 29 +++++++ .../org/bukkit/craftbukkit/entity/CraftSlime.java | 2 +- .../bukkit/craftbukkit/entity/CraftSnowman.java | 4 +- .../org/bukkit/craftbukkit/entity/CraftStray.java | 28 +++++++ .../org/bukkit/craftbukkit/entity/CraftVex.java | 28 +++++++ .../craftbukkit/entity/CraftVillagerZombie.java | 39 +++++++++ .../bukkit/craftbukkit/entity/CraftVindicator.java | 28 +++++++ .../craftbukkit/entity/CraftWitherSkeleton.java | 28 +++++++ .../org/bukkit/craftbukkit/entity/CraftZombie.java | 11 +-- .../craftbukkit/entity/CraftZombieHorse.java | 29 +++++++ .../craftbukkit/event/CraftEventFactory.java | 6 +- .../generator/CustomChunkGenerator.java | 4 +- .../generator/NormalChunkGenerator.java | 4 +- .../craftbukkit/inventory/CraftInventory.java | 8 +- .../inventory/CraftInventoryCrafting.java | 39 ++++----- .../inventory/CraftInventoryCustom.java | 59 ++++++++----- .../inventory/CraftInventoryDoubleChest.java | 4 +- .../craftbukkit/inventory/CraftInventoryLlama.java | 22 +++++ .../inventory/CraftInventoryPlayer.java | 18 ++-- .../craftbukkit/inventory/CraftItemFactory.java | 16 ++++ .../craftbukkit/inventory/CraftItemStack.java | 36 +++++--- .../craftbukkit/inventory/CraftMetaBlockState.java | 16 ++++ .../bukkit/craftbukkit/inventory/CraftMetaMap.java | 56 ++++++++++++- .../craftbukkit/inventory/InventoryWrapper.java | 25 ++++-- .../bukkit/craftbukkit/map/CraftMapRenderer.java | 1 - .../org/bukkit/craftbukkit/map/CraftMapView.java | 9 ++ src/test/java/org/bukkit/MaterialTest.java | 1 - 64 files changed, 1157 insertions(+), 341 deletions(-) create mode 100644 src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftChestedHorse.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftDonkey.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftElderGuardian.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftEvokerFangs.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java delete mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftHusk.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftLlamaSpit.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftMule.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftStray.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftVindicator.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkeleton.java create mode 100644 src/main/java/org/bukkit/craftbukkit/entity/CraftZombieHorse.java create mode 100644 src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryLlama.java (limited to 'src') diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 53db00bf..fe677569 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -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; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftSound.java b/src/main/java/org/bukkit/craftbukkit/CraftSound.java index 8eb3945d..82ab6491 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftSound.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftSound.java @@ -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"), diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 3f62540d..ae0cc72b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -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) { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java index 4e642b77..86218a5a 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -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) { diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java index fb706206..b769af08 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java @@ -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(); diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java index d70f2616..7dc2978e 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java @@ -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; } } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java index 89b23e29..0374578f 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -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); } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java index 80ada02d..09fddf4a 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java @@ -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; diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/block/CraftContainer.java index adf15651..421bc972 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftContainer.java @@ -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 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java index 2472dc66..a5fec06b 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java @@ -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) { diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java b/src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java index cc388d21..f48dcb17 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java @@ -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())); } } } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java b/src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java new file mode 100644 index 00000000..acd9a717 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java @@ -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); + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java index d091e6d5..5f683b94 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java +++ b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java @@ -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; diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java index 78a535a9..58af14d7 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -56,7 +56,7 @@ public class CraftEnchantment extends Enchantment { @Override public boolean isTreasure() { - return target.e(); // PAIL: isTreasure + return target.isTreasure(); } @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java new file mode 100644 index 00000000..62c7d44c --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java @@ -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); + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftChestedHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftChestedHorse.java new file mode 100644 index 00000000..3e5331e4 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftChestedHorse.java @@ -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); + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftDonkey.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftDonkey.java new file mode 100644 index 00000000..b4d74414 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftDonkey.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftElderGuardian.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftElderGuardian.java new file mode 100644 index 00000000..34df49bb --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftElderGuardian.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index e1b16b45..9f5133b6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -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) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java new file mode 100644 index 00000000..a5eeee5e --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEvokerFangs.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEvokerFangs.java new file mode 100644 index 00000000..a9f086bf --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEvokerFangs.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java new file mode 100644 index 00000000..b0a7f639 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java @@ -0,0 +1,68 @@ +package org.bukkit.craftbukkit.entity; + +import net.minecraft.server.EntityFallingBlock; + +import org.bukkit.Material; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.util.CraftMagicNumbers; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.FallingBlock; + +public class CraftFallingBlock extends CraftEntity implements FallingBlock { + + public CraftFallingBlock(CraftServer server, EntityFallingBlock entity) { + super(server, entity); + } + + @Override + public EntityFallingBlock getHandle() { + return (EntityFallingBlock) entity; + } + + @Override + public String toString() { + return "CraftFallingBlock"; + } + + public EntityType getType() { + return EntityType.FALLING_BLOCK; + } + + public Material getMaterial() { + return Material.getMaterial(getBlockId()); + } + + public int getBlockId() { + return CraftMagicNumbers.getId(getHandle().getBlock().getBlock()); + } + + public byte getBlockData() { + return (byte) getHandle().getBlock().getBlock().toLegacyData(getHandle().getBlock()); + } + + public boolean getDropItem() { + return getHandle().dropItem; + } + + public void setDropItem(boolean drop) { + getHandle().dropItem = drop; + } + + @Override + public boolean canHurtEntities() { + return getHandle().hurtEntities; + } + + @Override + public void setHurtEntities(boolean hurtEntities) { + getHandle().hurtEntities = hurtEntities; + } + + @Override + public void setTicksLived(int value) { + super.setTicksLived(value); + + // Second field for EntityFallingBlock + getHandle().ticksLived = value; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java deleted file mode 100644 index ad4eb396..00000000 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.bukkit.craftbukkit.entity; - -import net.minecraft.server.EntityFallingBlock; - -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; - -public class CraftFallingSand extends CraftEntity implements FallingSand { - - public CraftFallingSand(CraftServer server, EntityFallingBlock entity) { - super(server, entity); - } - - @Override - public EntityFallingBlock getHandle() { - return (EntityFallingBlock) entity; - } - - @Override - public String toString() { - return "CraftFallingSand"; - } - - public EntityType getType() { - return EntityType.FALLING_BLOCK; - } - - public Material getMaterial() { - return Material.getMaterial(getBlockId()); - } - - public int getBlockId() { - return CraftMagicNumbers.getId(getHandle().getBlock().getBlock()); - } - - public byte getBlockData() { - return (byte) getHandle().getBlock().getBlock().toLegacyData(getHandle().getBlock()); - } - - public boolean getDropItem() { - return getHandle().dropItem; - } - - public void setDropItem(boolean drop) { - getHandle().dropItem = drop; - } - - @Override - public boolean canHurtEntities() { - return getHandle().hurtEntities; - } - - @Override - public void setHurtEntities(boolean hurtEntities) { - getHandle().hurtEntities = hurtEntities; - } - - @Override - public void setTicksLived(int value) { - super.setTicksLived(value); - - // Second field for EntityFallingBlock - getHandle().ticksLived = value; - } -} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java index b1f4d6e1..e97037f6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java @@ -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) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java index 3a0ce677..fd4f774f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java @@ -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."); } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java index 26b1814a..98ef44c3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java @@ -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); } - public boolean isCarryingChest() { - return getHandle().hasChest(); - } - - 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); - } - - @Override - public boolean isTamed() { - return getHandle().isTamed(); - } - @Override - public void setTamed(boolean tamed) { - getHandle().setTame(tamed); + public boolean isCarryingChest() { + return false; } @Override - public AnimalTamer getOwner() { - if (getOwnerUUID() == null) return null; - return getServer().getOfflinePlayer(getOwnerUUID()); + public void setCarryingChest(boolean chest) { + throw new UnsupportedOperationException("Not supported."); } @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; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java index 6b6621b2..42495128 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -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) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHusk.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHusk.java new file mode 100644 index 00000000..46425820 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHusk.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index 80aae104..4641e3d5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -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() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java new file mode 100644 index 00000000..9dde90fa --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlamaSpit.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlamaSpit.java new file mode 100644 index 00000000..c3a20cb8 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlamaSpit.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java index f5a18757..69435c45 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java @@ -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") diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java index 3e4f03a7..38176750 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java @@ -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 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java index 463b4cee..2d2d9452 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java @@ -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 { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMule.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMule.java new file mode 100644 index 00000000..cf9b3ac1 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMule.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index fd1b079e..bdd1aa0e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -426,7 +426,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { Collection icons = new ArrayList(); 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())); } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java index db256819..4ed89615 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java @@ -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."); } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java new file mode 100644 index 00000000..e822c220 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java index da3df00f..b29749fa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java @@ -17,7 +17,7 @@ public class CraftSlime extends CraftLivingEntity implements Slime { } public void setSize(int size) { - getHandle().setSize(size); + getHandle().setSize(size, true); } @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java index f1725b8d..eddd605e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java @@ -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 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftStray.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftStray.java new file mode 100644 index 00000000..0fcb05ba --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftStray.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java new file mode 100644 index 00000000..787a41e0 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java new file mode 100644 index 00000000..b649374e --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java @@ -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()); + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVindicator.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVindicator.java new file mode 100644 index 00000000..3835897c --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVindicator.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkeleton.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkeleton.java new file mode 100644 index 00000000..6fb1da7d --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkeleton.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java index 6ec924b1..d2c3dbe4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java @@ -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; } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombieHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombieHorse.java new file mode 100644 index 00000000..5b31b681 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombieHorse.java @@ -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; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index a42ecf3e..cbaf9305 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -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; } diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java index aa292e31..0acad719 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java @@ -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 diff --git a/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java index cbcca41c..1ea56024 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java @@ -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 diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java index 3297216d..2b5494c4 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java @@ -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 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) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java index dded0f02..fafc9f6b 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java @@ -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 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 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 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 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 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)); } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java index 2b396782..da8df638 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java @@ -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 items; private int maxStack = MAX_STACK; private final List 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(); 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 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; + } } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java index 24e25882..39c7d6b7 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java @@ -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)); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryLlama.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryLlama.java new file mode 100644 index 00000000..342b74ae --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryLlama.java @@ -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); + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java index 51a8b4e2..d8c5364d 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java @@ -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) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java index 4e4a46f1..79fe4181 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java @@ -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); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java index 6f5dcbd6..866e54dd 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java @@ -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()); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java index b9d4717f..91ff76d8 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java @@ -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; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java index d8af3905..83dfda52 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java @@ -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 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; } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java index 125f7e1a..5634a22b 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java @@ -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 getContents() { int size = getSize(); - ItemStack[] items = new ItemStack[size]; + List items = new ArrayList(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()); + } } diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java index d56a291c..a55915a4 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java @@ -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()); } diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java index 1a150d98..6c42708c 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java @@ -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; + } } diff --git a/src/test/java/org/bukkit/MaterialTest.java b/src/test/java/org/bukkit/MaterialTest.java index a63c0f4d..a9b4e525 100644 --- a/src/test/java/org/bukkit/MaterialTest.java +++ b/src/test/java/org/bukkit/MaterialTest.java @@ -27,7 +27,6 @@ public class MaterialTest extends AbstractTestingBase { materials.put(material.getId(), material); } - materials.remove(0); // Purge air. Iterator items = Item.REGISTRY.iterator(); -- cgit v1.2.3