summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authormd_5 <git@md-5.net>2016-11-17 12:41:03 +1100
committermd_5 <git@md-5.net>2016-11-17 12:41:03 +1100
commitc25ddf063a808e3adb749e22017661f403c5fb7e (patch)
treeb2efcff512be12fd3e38cf8c36386148ce6ab4ae /src
parent51263e97187a84338f89698eef187284055a682a (diff)
downloadcraftbukkit-c25ddf063a808e3adb749e22017661f403c5fb7e.tar
craftbukkit-c25ddf063a808e3adb749e22017661f403c5fb7e.tar.gz
craftbukkit-c25ddf063a808e3adb749e22017661f403c5fb7e.tar.lz
craftbukkit-c25ddf063a808e3adb749e22017661f403c5fb7e.tar.xz
craftbukkit-c25ddf063a808e3adb749e22017661f403c5fb7e.zip
Update to Minecraft 1.11
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftServer.java5
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftSound.java32
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java51
-rw-r--r--src/main/java/org/bukkit/craftbukkit/Main.java17
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java7
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java6
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java23
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftContainer.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java17
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java6
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java34
-rw-r--r--src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java15
-rw-r--r--src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java97
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftChestedHorse.java27
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftDonkey.java29
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftElderGuardian.java28
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java34
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java28
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftEvokerFangs.java29
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java (renamed from src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java)8
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java13
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java29
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java92
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftHusk.java23
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java54
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftLlamaSpit.java50
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftMule.java29
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java17
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java29
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftStray.java28
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java28
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java39
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftVindicator.java28
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkeleton.java28
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java11
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftZombieHorse.java29
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java6
-rw-r--r--src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java8
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java39
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java59
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryLlama.java22
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java18
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java16
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java36
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java16
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java56
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java25
-rw-r--r--src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java1
-rw-r--r--src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java9
-rw-r--r--src/test/java/org/bukkit/MaterialTest.java1
63 files changed, 1093 insertions, 277 deletions
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/CraftFallingSand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java
index ad4eb396..b0a7f639 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java
@@ -6,11 +6,11 @@ import org.bukkit.Material;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.entity.EntityType;
-import org.bukkit.entity.FallingSand;
+import org.bukkit.entity.FallingBlock;
-public class CraftFallingSand extends CraftEntity implements FallingSand {
+public class CraftFallingBlock extends CraftEntity implements FallingBlock {
- public CraftFallingSand(CraftServer server, EntityFallingBlock entity) {
+ public CraftFallingBlock(CraftServer server, EntityFallingBlock entity) {
super(server, entity);
}
@@ -21,7 +21,7 @@ public class CraftFallingSand extends CraftEntity implements FallingSand {
@Override
public String toString() {
- return "CraftFallingSand";
+ return "CraftFallingBlock";
}
public EntityType getType() {
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<MapIcon> icons = new ArrayList<MapIcon>();
for (MapCursor cursor : data.cursors) {
if (cursor.isVisible()) {
- icons.add(new MapIcon(cursor.getRawType(), cursor.getX(), cursor.getY(), cursor.getDirection()));
+ icons.add(new MapIcon(MapIcon.Type.a(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection()));
}
}
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<net.minecraft.server.ItemStack> mcItems = getInventory().getContents();
- int size = Math.min(items.length, mcItems.length);
+ int size = Math.min(items.length, mcItems.size());
for (int i = 0; i < size; i++) {
- items[i] = mcItems[i] == null ? null : CraftItemStack.asCraftMirror(mcItems[i]);
+ items[i] = (mcItems.get(i) == net.minecraft.server.ItemStack.a) ? null : CraftItemStack.asCraftMirror(mcItems.get(i));
}
return items;
}
@@ -85,7 +85,7 @@ public class CraftInventory implements Inventory {
}
public void setItem(int index, ItemStack item) {
- getInventory().setItem(index, ((item == null || item.getTypeId() == 0) ? null : CraftItemStack.asNMSCopy(item)));
+ getInventory().setItem(index, ((item == null || item.getTypeId() == 0) ? net.minecraft.server.ItemStack.a : CraftItemStack.asNMSCopy(item)));
}
public boolean contains(int materialId) {
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<net.minecraft.server.ItemStack> mcResultItems = getResultInventory().getContents();
int i = 0;
- for (i = 0; i < mcResultItems.length; i++ ) {
- items[i] = CraftItemStack.asCraftMirror(mcResultItems[i]);
+ for (i = 0; i < mcResultItems.size(); i++ ) {
+ items[i] = CraftItemStack.asCraftMirror(mcResultItems.get(i));
}
- net.minecraft.server.ItemStack[] mcItems = getMatrixInventory().getContents();
+ List<net.minecraft.server.ItemStack> mcItems = getMatrixInventory().getContents();
- for (int j = 0; j < mcItems.length; j++) {
- items[i + j] = CraftItemStack.asCraftMirror(mcItems[j]);
+ for (int j = 0; j < mcItems.size(); j++) {
+ items[i + j] = CraftItemStack.asCraftMirror(mcItems.get(j));
}
return items;
@@ -86,11 +87,11 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
public ItemStack[] getMatrix() {
- net.minecraft.server.ItemStack[] matrix = getMatrixInventory().getContents();
- ItemStack[] items = new ItemStack[matrix.length];
+ List<net.minecraft.server.ItemStack> matrix = getMatrixInventory().getContents();
+ ItemStack[] items = new ItemStack[matrix.size()];
- for (int i = 0; i < matrix.length; i++) {
- items[i] = CraftItemStack.asCraftMirror(matrix[i]);
+ for (int i = 0; i < matrix.size(); i++) {
+ items[i] = CraftItemStack.asCraftMirror(matrix.get(i));
}
return items;
@@ -103,13 +104,13 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
public void setMatrix(ItemStack[] contents) {
- if (getMatrixInventory().getContents().length > contents.length) {
- throw new IllegalArgumentException("Invalid inventory size; expected " + getMatrixInventory().getContents().length + " or less");
+ if (getMatrixInventory().getContents().size() > contents.length) {
+ throw new IllegalArgumentException("Invalid inventory size; expected " + getMatrixInventory().getContents().size() + " or less");
}
- net.minecraft.server.ItemStack[] mcItems = getMatrixInventory().getContents();
+ List<net.minecraft.server.ItemStack> mcItems = getMatrixInventory().getContents();
- for (int i = 0; i < mcItems.length; i++) {
+ for (int i = 0; i < mcItems.size(); i++) {
if (i < contents.length) {
ItemStack item = contents[i];
if (item == null || item.getTypeId() <= 0) {
@@ -124,11 +125,11 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
public void setResult(ItemStack item) {
- net.minecraft.server.ItemStack[] contents = getResultInventory().getContents();
+ List<net.minecraft.server.ItemStack> contents = getResultInventory().getContents();
if (item == null || item.getTypeId() <= 0) {
- contents[0] = null;
+ contents.set(0, net.minecraft.server.ItemStack.a);
} else {
- contents[0] = CraftItemStack.asNMSCopy(item);
+ contents.set(0, CraftItemStack.asNMSCopy(item));
}
}
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<ItemStack> items;
private int maxStack = MAX_STACK;
private final List<HumanEntity> viewers;
private final String title;
@@ -57,7 +59,7 @@ public class CraftInventoryCustom extends CraftInventory {
public MinecraftInventory(InventoryHolder owner, int size, String title) {
Validate.notNull(title, "Title cannot be null");
- this.items = new ItemStack[size];
+ this.items = NonNullList.a(size, ItemStack.a);
this.title = title;
this.viewers = new ArrayList<HumanEntity>();
this.owner = owner;
@@ -65,23 +67,23 @@ public class CraftInventoryCustom extends CraftInventory {
}
public int getSize() {
- return items.length;
+ return items.size();
}
public ItemStack getItem(int i) {
- return items[i];
+ return items.get(i);
}
public ItemStack splitStack(int i, int j) {
ItemStack stack = this.getItem(i);
ItemStack result;
- if (stack == null) return null;
- if (stack.count <= j) {
- this.setItem(i, null);
+ if (stack == ItemStack.a) return stack;
+ if (stack.getCount() <= j) {
+ this.setItem(i, ItemStack.a);
result = stack;
} else {
result = CraftItemStack.copyNMSStack(stack, j);
- stack.count -= j;
+ stack.subtract(j);
}
this.update();
return result;
@@ -90,21 +92,21 @@ public class CraftInventoryCustom extends CraftInventory {
public ItemStack splitWithoutUpdate(int i) {
ItemStack stack = this.getItem(i);
ItemStack result;
- if (stack == null) return null;
- if (stack.count <= 1) {
+ if (stack == ItemStack.a) return stack;
+ if (stack.getCount() <= 1) {
this.setItem(i, null);
result = stack;
} else {
result = CraftItemStack.copyNMSStack(stack, 1);
- stack.count -= 1;
+ stack.subtract(1);
}
return result;
}
public void setItem(int i, ItemStack itemstack) {
- items[i] = itemstack;
- if (itemstack != null && this.getMaxStackSize() > 0 && itemstack.count > this.getMaxStackSize()) {
- itemstack.count = this.getMaxStackSize();
+ items.set(i, itemstack);
+ if (itemstack != ItemStack.a && this.getMaxStackSize() > 0 && itemstack.getCount() > this.getMaxStackSize()) {
+ itemstack.setCount(this.getMaxStackSize());
}
}
@@ -122,7 +124,7 @@ public class CraftInventoryCustom extends CraftInventory {
return true;
}
- public ItemStack[] getContents() {
+ public List<ItemStack> getContents() {
return items;
}
@@ -141,7 +143,7 @@ public class CraftInventoryCustom extends CraftInventory {
public InventoryType getType() {
return type;
}
-
+
public InventoryHolder getOwner() {
return owner;
}
@@ -170,13 +172,13 @@ public class CraftInventoryCustom extends CraftInventory {
}
@Override
- public int g() {
+ public int h() {
return 0;
}
@Override
- public void l() {
-
+ public void clear() {
+ items.clear();
}
@Override
@@ -198,5 +200,22 @@ public class CraftInventoryCustom extends CraftInventory {
public Location getLocation() {
return null;
}
+
+ @Override
+ public boolean w_() {
+ Iterator iterator = this.items.iterator();
+
+ ItemStack itemstack;
+
+ do {
+ if (!iterator.hasNext()) {
+ return true;
+ }
+
+ itemstack = (ItemStack) iterator.next();
+ } while (itemstack.isEmpty());
+
+ return false;
+ }
}
}
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<String, Object> map) {
@@ -55,6 +72,14 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
if (hasScaling()) {
tag.setBoolean(MAP_SCALING.NBT, isScaling());
}
+
+ if (hasLocationName()) {
+ setDisplayTag(tag, MAP_LOC_NAME.NBT, new NBTTagString(getLocationName()));
+ }
+
+ if (hasMapColor()) {
+ setDisplayTag(tag, MAP_COLOR.NBT, new NBTTagString(mapColor));
+ }
}
@Override
@@ -89,6 +114,25 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
}
@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)) {
return false;
@@ -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<ItemStack> getContents() {
int size = getSize();
- ItemStack[] items = new ItemStack[size];
+ List<ItemStack> items = new ArrayList<ItemStack>(size);
for (int i = 0; i < size; i++) {
- items[i] = getItem(i);
+ items.set(i, getItem(i));
}
return items;
@@ -176,4 +178,9 @@ public class InventoryWrapper implements IInventory {
public Location getLocation() {
return inventory.getLocation();
}
+
+ @Override
+ public boolean w_() {
+ return Iterables.any(inventory, Predicates.notNull());
+ }
}
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<Item> items = Item.REGISTRY.iterator();