@@ -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;
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -56,7 +56,7 @@ public class CraftEnchantment extends Enchantment {
|
||||
|
||||
@Override
|
||||
public boolean isTreasure() {
|
||||
return target.e(); // PAIL: isTreasure
|
||||
return target.isTreasure();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
@@ -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) {
|
||||
|
||||
@@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityHorse;
|
||||
import net.minecraft.server.EnumHorseType;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventoryHorse;
|
||||
import org.bukkit.entity.AnimalTamer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Horse;
|
||||
import org.bukkit.inventory.HorseInventory;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class CraftHorse extends CraftAnimals implements Horse {
|
||||
public class CraftHorse extends CraftAbstractHorse implements Horse {
|
||||
|
||||
public CraftHorse(CraftServer server, EntityHorse entity) {
|
||||
super(server, entity);
|
||||
@@ -20,110 +16,47 @@ public class CraftHorse extends CraftAnimals implements Horse {
|
||||
|
||||
@Override
|
||||
public EntityHorse getHandle() {
|
||||
return (EntityHorse) entity;
|
||||
return (EntityHorse) super.getHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Variant getVariant() {
|
||||
return Variant.values()[getHandle().getType().ordinal()];
|
||||
}
|
||||
|
||||
public void setVariant(Variant variant) {
|
||||
Validate.notNull(variant, "Variant cannot be null");
|
||||
getHandle().setType(EnumHorseType.values()[variant.ordinal()]);
|
||||
return Variant.HORSE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Color getColor() {
|
||||
return Color.values()[getHandle().getVariant() & 0xFF];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setColor(Color color) {
|
||||
Validate.notNull(color, "Color cannot be null");
|
||||
getHandle().setVariant(color.ordinal() & 0xFF | getStyle().ordinal() << 8);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Style getStyle() {
|
||||
return Style.values()[getHandle().getVariant() >>> 8];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStyle(Style style) {
|
||||
Validate.notNull(style, "Style cannot be null");
|
||||
getHandle().setVariant(getColor().ordinal() & 0xFF | style.ordinal() << 8);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCarryingChest() {
|
||||
return getHandle().hasChest();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCarryingChest(boolean chest) {
|
||||
if (chest == isCarryingChest()) return;
|
||||
getHandle().setHasChest(chest);
|
||||
getHandle().loadChest();
|
||||
}
|
||||
|
||||
public int getDomestication() {
|
||||
return getHandle().getTemper();
|
||||
}
|
||||
|
||||
public void setDomestication(int value) {
|
||||
Validate.isTrue(value >= 0, "Domestication cannot be less than zero");
|
||||
Validate.isTrue(value <= getMaxDomestication(), "Domestication cannot be greater than the max domestication");
|
||||
getHandle().setTemper(value);
|
||||
}
|
||||
|
||||
public int getMaxDomestication() {
|
||||
return getHandle().getMaxDomestication();
|
||||
}
|
||||
|
||||
public void setMaxDomestication(int value) {
|
||||
Validate.isTrue(value > 0, "Max domestication cannot be zero or less");
|
||||
getHandle().maxDomestication = value;
|
||||
}
|
||||
|
||||
public double getJumpStrength() {
|
||||
return getHandle().getJumpStrength();
|
||||
}
|
||||
|
||||
public void setJumpStrength(double strength) {
|
||||
Validate.isTrue(strength >= 0, "Jump strength cannot be less than zero");
|
||||
getHandle().getAttributeInstance(EntityHorse.attributeJumpStrength).setValue(strength);
|
||||
throw new UnsupportedOperationException("Not supported.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTamed() {
|
||||
return getHandle().isTamed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTamed(boolean tamed) {
|
||||
getHandle().setTame(tamed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnimalTamer getOwner() {
|
||||
if (getOwnerUUID() == null) return null;
|
||||
return getServer().getOfflinePlayer(getOwnerUUID());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOwner(AnimalTamer owner) {
|
||||
if (owner != null) {
|
||||
setTamed(true);
|
||||
getHandle().setGoalTarget(null, null, false);
|
||||
setOwnerUUID(owner.getUniqueId());
|
||||
} else {
|
||||
setTamed(false);
|
||||
setOwnerUUID(null);
|
||||
}
|
||||
}
|
||||
|
||||
public UUID getOwnerUUID() {
|
||||
return getHandle().getOwnerUUID();
|
||||
}
|
||||
|
||||
public void setOwnerUUID(UUID uuid) {
|
||||
getHandle().setOwnerUUID(uuid);
|
||||
}
|
||||
|
||||
public HorseInventory getInventory() {
|
||||
return new CraftInventoryHorse(getHandle().inventoryChest);
|
||||
}
|
||||
@@ -133,6 +66,7 @@ public class CraftHorse extends CraftAnimals implements Horse {
|
||||
return "CraftHorse{variant=" + getVariant() + ", owner=" + getOwner() + '}';
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.HORSE;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ public class CraftSlime extends CraftLivingEntity implements Slime {
|
||||
}
|
||||
|
||||
public void setSize(int size) {
|
||||
getHandle().setSize(size);
|
||||
getHandle().setSize(size, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.bukkit.craftbukkit.inventory;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.server.NBTTagCompound;
|
||||
import net.minecraft.server.NBTTagString;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.serialization.DelegateDeserialization;
|
||||
@@ -14,11 +15,15 @@ import com.google.common.collect.ImmutableMap;
|
||||
@DelegateDeserialization(SerializableMeta.class)
|
||||
class CraftMetaMap extends CraftMetaItem implements MapMeta {
|
||||
static final ItemMetaKey MAP_SCALING = new ItemMetaKey("map_is_scaling", "scaling");
|
||||
static final ItemMetaKey MAP_LOC_NAME = new ItemMetaKey("LocName", "display-loc-name");
|
||||
static final ItemMetaKey MAP_COLOR = new ItemMetaKey("Mapcolor", "display-map-color");
|
||||
static final byte SCALING_EMPTY = (byte) 0;
|
||||
static final byte SCALING_TRUE = (byte) 1;
|
||||
static final byte SCALING_FALSE = (byte) 2;
|
||||
|
||||
private byte scaling = SCALING_EMPTY;
|
||||
private String locName;
|
||||
private String mapColor;
|
||||
|
||||
CraftMetaMap(CraftMetaItem meta) {
|
||||
super(meta);
|
||||
@@ -37,6 +42,18 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
|
||||
if (tag.hasKey(MAP_SCALING.NBT)) {
|
||||
this.scaling = tag.getBoolean(MAP_SCALING.NBT) ? SCALING_TRUE : SCALING_FALSE;
|
||||
}
|
||||
|
||||
if (tag.hasKey(DISPLAY.NBT)) {
|
||||
NBTTagCompound display = tag.getCompound(DISPLAY.NBT);
|
||||
|
||||
if (display.hasKey(MAP_LOC_NAME.NBT)) {
|
||||
locName = display.getString(MAP_LOC_NAME.NBT);
|
||||
}
|
||||
|
||||
if (display.hasKey(MAP_COLOR.NBT)) {
|
||||
mapColor = display.getString(MAP_COLOR.NBT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CraftMetaMap(Map<String, Object> map) {
|
||||
@@ -55,6 +72,14 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
|
||||
if (hasScaling()) {
|
||||
tag.setBoolean(MAP_SCALING.NBT, isScaling());
|
||||
}
|
||||
|
||||
if (hasLocationName()) {
|
||||
setDisplayTag(tag, MAP_LOC_NAME.NBT, new NBTTagString(getLocationName()));
|
||||
}
|
||||
|
||||
if (hasMapColor()) {
|
||||
setDisplayTag(tag, MAP_COLOR.NBT, new NBTTagString(mapColor));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,6 +113,25 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
|
||||
this.scaling = scaling ? SCALING_TRUE : SCALING_FALSE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLocationName() {
|
||||
return this.locName != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocationName() {
|
||||
return this.locName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLocationName(String name) {
|
||||
this.locName = name;
|
||||
}
|
||||
|
||||
public boolean hasMapColor() {
|
||||
return this.mapColor != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean equalsCommon(CraftMetaItem meta) {
|
||||
if (!super.equalsCommon(meta)) {
|
||||
@@ -96,7 +140,9 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
|
||||
if (meta instanceof CraftMetaMap) {
|
||||
CraftMetaMap that = (CraftMetaMap) meta;
|
||||
|
||||
return (this.scaling == that.scaling);
|
||||
return (this.scaling == that.scaling)
|
||||
&& (hasLocationName() ? that.hasLocationName() && this.getLocationName().equals(that.getLocationName()) : !that.hasLocationName())
|
||||
&& (hasMapColor() ? that.hasMapColor() && this.mapColor.equals(that.mapColor) : !that.hasMapColor());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -130,6 +176,14 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
|
||||
builder.put(MAP_SCALING.BUKKIT, isScaling());
|
||||
}
|
||||
|
||||
if (hasLocationName()) {
|
||||
builder.put(MAP_LOC_NAME.BUKKIT, getLocationName());
|
||||
}
|
||||
|
||||
if (hasMapColor()) {
|
||||
builder.put(MAP_COLOR.BUKKIT, mapColor);
|
||||
}
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user