Add Override annotations where appropriate

This commit is contained in:
md_5 2019-04-28 11:38:01 +10:00
parent 3331dade5e
commit e3df3d5cda
140 changed files with 1021 additions and 0 deletions

View File

@ -44,6 +44,7 @@ public class CraftChunk implements Chunk {
z = getHandle().getPos().z;
}
@Override
public World getWorld() {
return worldServer.getWorld();
}
@ -68,10 +69,12 @@ public class CraftChunk implements Chunk {
weakChunk.clear();
}
@Override
public int getX() {
return x;
}
@Override
public int getZ() {
return z;
}
@ -81,12 +84,14 @@ public class CraftChunk implements Chunk {
return "CraftChunk{" + "x=" + getX() + "z=" + getZ() + '}';
}
@Override
public Block getBlock(int x, int y, int z) {
validateChunkCoordinates(x, y, z);
return new CraftBlock(worldServer, new BlockPosition((this.x << 4) | x, y, (this.z << 4) | z));
}
@Override
public Entity[] getEntities() {
int count = 0, index = 0;
net.minecraft.server.Chunk chunk = getHandle();
@ -111,6 +116,7 @@ public class CraftChunk implements Chunk {
return entities;
}
@Override
public BlockState[] getTileEntities() {
int index = 0;
net.minecraft.server.Chunk chunk = getHandle();
@ -129,18 +135,22 @@ public class CraftChunk implements Chunk {
return entities;
}
@Override
public boolean isLoaded() {
return getWorld().isChunkLoaded(this);
}
@Override
public boolean load() {
return getWorld().loadChunk(getX(), getZ(), true);
}
@Override
public boolean load(boolean generate) {
return getWorld().loadChunk(getX(), getZ(), generate);
}
@Override
public boolean unload() {
return getWorld().unloadChunk(getX(), getZ());
}
@ -151,6 +161,7 @@ public class CraftChunk implements Chunk {
return SeededRandom.a(getX(), getZ(), getWorld().getSeed(), 987234911L).nextInt(10) == 0;
}
@Override
public boolean unload(boolean save) {
return getWorld().unloadChunk(getX(), getZ(), save);
}
@ -165,10 +176,12 @@ public class CraftChunk implements Chunk {
getWorld().setChunkForceLoaded(getX(), getZ(), forced);
}
@Override
public ChunkSnapshot getChunkSnapshot() {
return getChunkSnapshot(true, false, false);
}
@Override
public ChunkSnapshot getChunkSnapshot(boolean includeMaxBlockY, boolean includeBiome, boolean includeBiomeTempRain) {
net.minecraft.server.Chunk chunk = getHandle();

View File

@ -42,14 +42,17 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
this.biomeTemp = biomeTemp;
}
@Override
public int getX() {
return x;
}
@Override
public int getZ() {
return z;
}
@Override
public String getWorldName() {
return worldname;
}
@ -75,6 +78,7 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
return CraftMagicNumbers.toLegacyData(blockids[y >> 4].a(x, y & 0xF, z));
}
@Override
public final int getBlockSkyLight(int x, int y, int z) {
CraftChunk.validateChunkCoordinates(x, y, z);
@ -82,6 +86,7 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
return (skylight[y >> 4][off] >> ((x & 1) << 2)) & 0xF;
}
@Override
public final int getBlockEmittedLight(int x, int y, int z) {
CraftChunk.validateChunkCoordinates(x, y, z);
@ -89,28 +94,33 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
return (emitlight[y >> 4][off] >> ((x & 1) << 2)) & 0xF;
}
@Override
public final int getHighestBlockYAt(int x, int z) {
CraftChunk.validateChunkCoordinates(x, 0, z);
return hmap.a(x, z);
}
@Override
public final Biome getBiome(int x, int z) {
CraftChunk.validateChunkCoordinates(x, 0, z);
return CraftBlock.biomeBaseToBiome(biome[z << 4 | x]);
}
@Override
public final double getRawBiomeTemperature(int x, int z) {
CraftChunk.validateChunkCoordinates(x, 0, z);
return biomeTemp[z << 4 | x];
}
@Override
public final long getCaptureFullTime() {
return captureFulltime;
}
@Override
public final boolean isSectionEmpty(int sy) {
return empty[sy];
}

View File

@ -13,6 +13,7 @@ import org.bukkit.plugin.PluginDescriptionFile;
public class CraftCrashReport implements CrashReportCallable<Object> {
@Override
public Object call() throws Exception {
StringWriter value = new StringWriter();
try {

View File

@ -38,10 +38,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
return profile;
}
@Override
public boolean isOnline() {
return getPlayer() != null;
}
@Override
public String getName() {
Player player = getPlayer();
if (player != null) {
@ -64,6 +66,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
return null;
}
@Override
public UUID getUniqueId() {
return profile.getId();
}
@ -72,10 +75,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
return server;
}
@Override
public boolean isOp() {
return server.getHandle().isOp(profile);
}
@Override
public void setOp(boolean value) {
if (value == isOp()) {
return;
@ -88,6 +93,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
}
}
@Override
public boolean isBanned() {
if (getName() == null) {
return false;
@ -108,10 +114,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
}
}
@Override
public boolean isWhitelisted() {
return server.getHandle().getWhitelist().isWhitelisted(profile);
}
@Override
public void setWhitelisted(boolean value) {
if (value) {
server.getHandle().getWhitelist().add(new WhiteListEntry(profile));
@ -120,6 +128,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
}
}
@Override
public Map<String, Object> serialize() {
Map<String, Object> result = new LinkedHashMap<String, Object>();
@ -142,6 +151,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
return getClass().getSimpleName() + "[UUID=" + profile.getId() + "]";
}
@Override
public Player getPlayer() {
return server.getPlayer(getUniqueId());
}
@ -188,6 +198,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
return new File(storage.getPlayerDir(), getUniqueId() + ".dat");
}
@Override
public long getFirstPlayed() {
Player player = getPlayer();
if (player != null) return player.getFirstPlayed();
@ -206,6 +217,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
}
}
@Override
public long getLastPlayed() {
Player player = getPlayer();
if (player != null) return player.getLastPlayed();
@ -224,10 +236,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
}
}
@Override
public boolean hasPlayedBefore() {
return getData() != null;
}
@Override
public Location getBedSpawnLocation() {
NBTTagCompound data = getData();
if (data == null) return null;

View File

@ -1847,6 +1847,7 @@ public final class CraftServer implements Server {
}
}
@Override
public LootTable getLootTable(NamespacedKey key) {
Validate.notNull(key, "NamespacedKey cannot be null");

View File

@ -273,10 +273,12 @@ public class CraftWorld implements World {
environment = env;
}
@Override
public Block getBlockAt(int x, int y, int z) {
return CraftBlock.at(world, new BlockPosition(x, y, z));
}
@Override
public int getHighestBlockYAt(int x, int z) {
if (!isChunkLoaded(x >> 4, z >> 4)) {
getChunkAt(x >> 4, z >> 4); // Transient load for this tick
@ -285,6 +287,7 @@ public class CraftWorld implements World {
return world.getHighestBlockYAt(HeightMap.Type.MOTION_BLOCKING, new BlockPosition(x, 0, z)).getY();
}
@Override
public Location getSpawnLocation() {
BlockPosition spawn = world.getSpawn();
return new Location(this, spawn.getX(), spawn.getY(), spawn.getZ());
@ -297,6 +300,7 @@ public class CraftWorld implements World {
return equals(location.getWorld()) ? setSpawnLocation(location.getBlockX(), location.getBlockY(), location.getBlockZ()) : false;
}
@Override
public boolean setSpawnLocation(int x, int y, int z) {
try {
Location previousLocation = getSpawnLocation();
@ -312,14 +316,17 @@ public class CraftWorld implements World {
}
}
@Override
public Chunk getChunkAt(int x, int z) {
return this.world.getChunkProvider().getChunkAt(x, z, true).bukkitChunk;
}
@Override
public Chunk getChunkAt(Block block) {
return getChunkAt(block.getX() >> 4, block.getZ() >> 4);
}
@Override
public boolean isChunkLoaded(int x, int z) {
net.minecraft.server.Chunk chunk = world.getChunkProvider().getChunkAt(x, z, false);
return chunk != null && chunk.loaded;
@ -334,28 +341,34 @@ public class CraftWorld implements World {
}
}
@Override
public Chunk[] getLoadedChunks() {
Long2ObjectLinkedOpenHashMap<PlayerChunk> chunks = world.getChunkProvider().playerChunkMap.visibleChunks;
return chunks.values().stream().map(PlayerChunk::getChunk).filter(Objects::nonNull).filter((chunk) -> chunk.loaded).map(net.minecraft.server.Chunk::getBukkitChunk).toArray(Chunk[]::new);
}
@Override
public void loadChunk(int x, int z) {
loadChunk(x, z, true);
}
@Override
public boolean unloadChunk(Chunk chunk) {
return unloadChunk(chunk.getX(), chunk.getZ());
}
@Override
public boolean unloadChunk(int x, int z) {
return unloadChunk(x, z, true);
}
@Override
public boolean unloadChunk(int x, int z, boolean save) {
return unloadChunk0(x, z, save);
}
@Override
public boolean unloadChunkRequest(int x, int z) {
net.minecraft.server.IChunkAccess chunk = world.getChunkProvider().getChunkAt(x, z, ChunkStatus.FULL, false);
if (chunk != null) {
@ -378,6 +391,7 @@ public class CraftWorld implements World {
return !isChunkLoaded(x, z);
}
@Override
public boolean regenerateChunk(int x, int z) {
throw new UnsupportedOperationException("Not supported in this Minecraft version! Unless you can fix it, this is not a bug :)");
/*
@ -402,6 +416,7 @@ public class CraftWorld implements World {
*/
}
@Override
public boolean refreshChunk(int x, int z) {
if (!isChunkLoaded(x, z)) {
return false;
@ -422,10 +437,12 @@ public class CraftWorld implements World {
return true;
}
@Override
public boolean isChunkInUse(int x, int z) {
return isChunkLoaded(x, z);
}
@Override
public boolean loadChunk(int x, int z, boolean generate) {
IChunkAccess chunk = world.getChunkProvider().getChunkAt(x, z, generate ? ChunkStatus.FULL : ChunkStatus.EMPTY, true);
@ -443,10 +460,12 @@ public class CraftWorld implements World {
return false;
}
@Override
public boolean isChunkLoaded(Chunk chunk) {
return isChunkLoaded(chunk.getX(), chunk.getZ());
}
@Override
public void loadChunk(Chunk chunk) {
loadChunk(chunk.getX(), chunk.getZ());
((CraftChunk) getChunkAt(chunk.getX(), chunk.getZ())).getHandle().bukkitChunk = chunk;
@ -477,6 +496,7 @@ public class CraftWorld implements World {
return world;
}
@Override
public org.bukkit.entity.Item dropItem(Location loc, ItemStack item) {
Validate.notNull(item, "Cannot drop a Null item.");
EntityItem entity = new EntityItem(world, loc.getX(), loc.getY(), loc.getZ(), CraftItemStack.asNMSCopy(item));
@ -487,6 +507,7 @@ public class CraftWorld implements World {
return new CraftItem(world.getServer(), entity);
}
@Override
public org.bukkit.entity.Item dropItemNaturally(Location loc, ItemStack item) {
double xs = (world.random.nextFloat() * 0.5F) + 0.25D;
double ys = (world.random.nextFloat() * 0.5F) + 0.25D;
@ -498,10 +519,12 @@ public class CraftWorld implements World {
return dropItem(loc, item);
}
@Override
public Arrow spawnArrow(Location loc, Vector velocity, float speed, float spread) {
return spawnArrow(loc, velocity, speed, spread, Arrow.class);
}
@Override
public <T extends Arrow> T spawnArrow(Location loc, Vector velocity, float speed, float spread, Class<T> clazz) {
Validate.notNull(loc, "Can not spawn arrow with a null location");
Validate.notNull(velocity, "Can not spawn arrow with a null velocity");
@ -525,22 +548,26 @@ public class CraftWorld implements World {
return (T) arrow.getBukkitEntity();
}
@Override
public Entity spawnEntity(Location loc, EntityType entityType) {
return spawn(loc, entityType.getEntityClass());
}
@Override
public LightningStrike strikeLightning(Location loc) {
EntityLightning lightning = new EntityLightning(world, loc.getX(), loc.getY(), loc.getZ(), false);
world.strikeLightning(lightning);
return new CraftLightningStrike(server, lightning);
}
@Override
public LightningStrike strikeLightningEffect(Location loc) {
EntityLightning lightning = new EntityLightning(world, loc.getX(), loc.getY(), loc.getZ(), true);
world.strikeLightning(lightning);
return new CraftLightningStrike(server, lightning);
}
@Override
public boolean generateTree(Location loc, TreeType type) {
BlockPosition pos = new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
@ -603,6 +630,7 @@ public class CraftWorld implements World {
return gen.generate(world, world.worldProvider.getChunkGenerator(), rand, pos, new WorldGenFeatureEmptyConfiguration());
}
@Override
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
world.captureTreeGeneration = true;
world.captureBlockStates = true;
@ -626,6 +654,7 @@ public class CraftWorld implements World {
}
}
@Override
public String getName() {
return world.worldData.getName();
}
@ -635,6 +664,7 @@ public class CraftWorld implements World {
return world.worldData.getSeed();
}
@Override
public UUID getUID() {
return world.getDataManager().getUUID();
}
@ -644,22 +674,26 @@ public class CraftWorld implements World {
return "CraftWorld{name=" + getName() + '}';
}
@Override
public long getTime() {
long time = getFullTime() % 24000;
if (time < 0) time += 24000;
return time;
}
@Override
public void setTime(long time) {
long margin = (time - getFullTime()) % 24000;
if (margin < 0) margin += 24000;
setFullTime(getFullTime() + margin);
}
@Override
public long getFullTime() {
return world.getDayTime();
}
@Override
public void setFullTime(long time) {
world.setDayTime(time);
@ -672,26 +706,32 @@ public class CraftWorld implements World {
}
}
@Override
public boolean createExplosion(double x, double y, double z, float power) {
return createExplosion(x, y, z, power, false, true);
}
@Override
public boolean createExplosion(double x, double y, double z, float power, boolean setFire) {
return createExplosion(x, y, z, power, setFire, true);
}
@Override
public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks) {
return !world.createExplosion(null, x, y, z, power, setFire, breakBlocks ? Explosion.Effect.BREAK : Explosion.Effect.NONE).wasCanceled;
}
@Override
public boolean createExplosion(Location loc, float power) {
return createExplosion(loc, power, false);
}
@Override
public boolean createExplosion(Location loc, float power, boolean setFire) {
return createExplosion(loc.getX(), loc.getY(), loc.getZ(), power, setFire);
}
@Override
public Environment getEnvironment() {
return environment;
}
@ -713,38 +753,47 @@ public class CraftWorld implements World {
}
}
@Override
public Block getBlockAt(Location location) {
return getBlockAt(location.getBlockX(), location.getBlockY(), location.getBlockZ());
}
@Override
public int getHighestBlockYAt(Location location) {
return getHighestBlockYAt(location.getBlockX(), location.getBlockZ());
}
@Override
public Chunk getChunkAt(Location location) {
return getChunkAt(location.getBlockX() >> 4, location.getBlockZ() >> 4);
}
@Override
public ChunkGenerator getGenerator() {
return generator;
}
@Override
public List<BlockPopulator> getPopulators() {
return populators;
}
@Override
public Block getHighestBlockAt(int x, int z) {
return getBlockAt(x, getHighestBlockYAt(x, z), z);
}
@Override
public Block getHighestBlockAt(Location location) {
return getHighestBlockAt(location.getBlockX(), location.getBlockZ());
}
@Override
public Biome getBiome(int x, int z) {
return CraftBlock.biomeBaseToBiome(this.world.getBiome(new BlockPosition(x, 0, z)));
}
@Override
public void setBiome(int x, int z, Biome bio) {
BiomeBase bb = CraftBlock.biomeToBiomeBase(bio);
if (this.world.isLoaded(new BlockPosition(x, 0, z))) {
@ -759,14 +808,17 @@ public class CraftWorld implements World {
}
}
@Override
public double getTemperature(int x, int z) {
return this.world.getBiome(new BlockPosition(x, 0, z)).getTemperature();
}
@Override
public double getHumidity(int x, int z) {
return this.world.getBiome(new BlockPosition(x, 0, z)).getHumidity();
}
@Override
public List<Entity> getEntities() {
List<Entity> list = new ArrayList<Entity>();
@ -785,6 +837,7 @@ public class CraftWorld implements World {
return list;
}
@Override
public List<LivingEntity> getLivingEntities() {
List<LivingEntity> list = new ArrayList<LivingEntity>();
@ -803,12 +856,14 @@ public class CraftWorld implements World {
return list;
}
@Override
@SuppressWarnings("unchecked")
@Deprecated
public <T extends Entity> Collection<T> getEntitiesByClass(Class<T>... classes) {
return (Collection<T>)getEntitiesByClasses(classes);
}
@Override
@SuppressWarnings("unchecked")
public <T extends Entity> Collection<T> getEntitiesByClass(Class<T> clazz) {
Collection<T> list = new ArrayList<T>();
@ -832,6 +887,7 @@ public class CraftWorld implements World {
return list;
}
@Override
public Collection<Entity> getEntitiesByClasses(Class<?>... classes) {
Collection<Entity> list = new ArrayList<Entity>();
@ -1015,6 +1071,7 @@ public class CraftWorld implements World {
return blockHit;
}
@Override
public List<Player> getPlayers() {
List<Player> list = new ArrayList<Player>(world.getPlayers().size());
@ -1029,6 +1086,7 @@ public class CraftWorld implements World {
return list;
}
@Override
public void save() {
this.server.checkSaveState();
try {
@ -1043,18 +1101,22 @@ public class CraftWorld implements World {
}
}
@Override
public boolean isAutoSave() {
return !world.savingDisabled;
}
@Override
public void setAutoSave(boolean value) {
world.savingDisabled = !value;
}
@Override
public void setDifficulty(Difficulty difficulty) {
this.getHandle().worldData.setDifficulty(EnumDifficulty.getById(difficulty.getValue()));
}
@Override
public Difficulty getDifficulty() {
return Difficulty.getByValue(this.getHandle().getDifficulty().ordinal());
}
@ -1063,48 +1125,59 @@ public class CraftWorld implements World {
return blockMetadata;
}
@Override
public boolean hasStorm() {
return world.worldData.hasStorm();
}
@Override
public void setStorm(boolean hasStorm) {
world.worldData.setStorm(hasStorm);
setWeatherDuration(0); // Reset weather duration (legacy behaviour)
}
@Override
public int getWeatherDuration() {
return world.worldData.getWeatherDuration();
}
@Override
public void setWeatherDuration(int duration) {
world.worldData.setWeatherDuration(duration);
}
@Override
public boolean isThundering() {
return world.worldData.isThundering();
}
@Override
public void setThundering(boolean thundering) {
world.worldData.setThundering(thundering);
setThunderDuration(0); // Reset weather duration (legacy behaviour)
}
@Override
public int getThunderDuration() {
return world.worldData.getThunderDuration();
}
@Override
public void setThunderDuration(int duration) {
world.worldData.setThunderDuration(duration);
}
@Override
public long getSeed() {
return world.worldData.getSeed();
}
@Override
public boolean getPVP() {
return world.pvpMode;
}
@Override
public void setPVP(boolean pvp) {
world.pvpMode = pvp;
}
@ -1113,14 +1186,17 @@ public class CraftWorld implements World {
playEffect(player.getLocation(), effect, data, 0);
}
@Override
public void playEffect(Location location, Effect effect, int data) {
playEffect(location, effect, data, 64);
}
@Override
public <T> void playEffect(Location loc, Effect effect, T data) {
playEffect(loc, effect, data, 64);
}
@Override
public <T> void playEffect(Location loc, Effect effect, T data, int radius) {
if (data != null) {
Validate.isTrue(effect.getData() != null && effect.getData().isAssignableFrom(data.getClass()), "Wrong kind of data for this effect!");
@ -1132,6 +1208,7 @@ public class CraftWorld implements World {
playEffect(loc, effect, datavalue, radius);
}
@Override
public void playEffect(Location location, Effect effect, int data, int radius) {
Validate.notNull(location, "Location cannot be null");
Validate.notNull(effect, "Effect cannot be null");
@ -1152,6 +1229,7 @@ public class CraftWorld implements World {
}
}
@Override
public <T extends Entity> T spawn(Location location, Class<T> clazz) throws IllegalArgumentException {
return spawn(location, clazz, null, SpawnReason.CUSTOM);
}
@ -1167,6 +1245,7 @@ public class CraftWorld implements World {
return spawnFallingBlock(location, data.getItemType(), data.getData());
}
@Override
public FallingBlock spawnFallingBlock(Location location, org.bukkit.Material material, byte data) throws IllegalArgumentException {
Validate.notNull(location, "Location cannot be null");
Validate.notNull(material, "Material cannot be null");
@ -1558,34 +1637,42 @@ public class CraftWorld implements World {
return addEntity(entity, reason, function);
}
@Override
public ChunkSnapshot getEmptyChunkSnapshot(int x, int z, boolean includeBiome, boolean includeBiomeTempRain) {
return CraftChunk.getEmptyChunkSnapshot(x, z, this, includeBiome, includeBiomeTempRain);
}
@Override
public void setSpawnFlags(boolean allowMonsters, boolean allowAnimals) {
world.setSpawnFlags(allowMonsters, allowAnimals);
}
@Override
public boolean getAllowAnimals() {
return world.getChunkProvider().allowAnimals;
}
@Override
public boolean getAllowMonsters() {
return world.getChunkProvider().allowMonsters;
}
@Override
public int getMaxHeight() {
return world.getHeight();
}
@Override
public int getSeaLevel() {
return world.getSeaLevel();
}
@Override
public boolean getKeepSpawnInMemory() {
return world.keepSpawnInMemory;
}
@Override
public void setKeepSpawnInMemory(boolean keepLoaded) {
world.keepSpawnInMemory = keepLoaded;
// Grab the worlds spawn chunk
@ -1625,10 +1712,12 @@ public class CraftWorld implements World {
return this.getUID() == other.getUID();
}
@Override
public File getWorldFolder() {
return ((WorldNBTStorage) world.getDataManager()).getDirectory();
}
@Override
public void sendPluginMessage(Plugin source, String channel, byte[] message) {
StandardMessenger.validatePluginMessage(server.getMessenger(), source, channel, message);
@ -1637,6 +1726,7 @@ public class CraftWorld implements World {
}
}
@Override
public Set<String> getListeningPluginChannels() {
Set<String> result = new HashSet<String>();
@ -1647,46 +1737,57 @@ public class CraftWorld implements World {
return result;
}
@Override
public org.bukkit.WorldType getWorldType() {
return org.bukkit.WorldType.getByName(world.getWorldData().getType().name());
}
@Override
public boolean canGenerateStructures() {
return world.getWorldData().shouldGenerateMapFeatures();
}
@Override
public long getTicksPerAnimalSpawns() {
return world.ticksPerAnimalSpawns;
}
@Override
public void setTicksPerAnimalSpawns(int ticksPerAnimalSpawns) {
world.ticksPerAnimalSpawns = ticksPerAnimalSpawns;
}
@Override
public long getTicksPerMonsterSpawns() {
return world.ticksPerMonsterSpawns;
}
@Override
public void setTicksPerMonsterSpawns(int ticksPerMonsterSpawns) {
world.ticksPerMonsterSpawns = ticksPerMonsterSpawns;
}
@Override
public void setMetadata(String metadataKey, MetadataValue newMetadataValue) {
server.getWorldMetadata().setMetadata(this, metadataKey, newMetadataValue);
}
@Override
public List<MetadataValue> getMetadata(String metadataKey) {
return server.getWorldMetadata().getMetadata(this, metadataKey);
}
@Override
public boolean hasMetadata(String metadataKey) {
return server.getWorldMetadata().hasMetadata(this, metadataKey);
}
@Override
public void removeMetadata(String metadataKey, Plugin owningPlugin) {
server.getWorldMetadata().removeMetadata(this, metadataKey, owningPlugin);
}
@Override
public int getMonsterSpawnLimit() {
if (monsterSpawn < 0) {
return server.getMonsterSpawnLimit();
@ -1695,10 +1796,12 @@ public class CraftWorld implements World {
return monsterSpawn;
}
@Override
public void setMonsterSpawnLimit(int limit) {
monsterSpawn = limit;
}
@Override
public int getAnimalSpawnLimit() {
if (animalSpawn < 0) {
return server.getAnimalSpawnLimit();
@ -1707,10 +1810,12 @@ public class CraftWorld implements World {
return animalSpawn;
}
@Override
public void setAnimalSpawnLimit(int limit) {
animalSpawn = limit;
}
@Override
public int getWaterAnimalSpawnLimit() {
if (waterAnimalSpawn < 0) {
return server.getWaterAnimalSpawnLimit();
@ -1719,10 +1824,12 @@ public class CraftWorld implements World {
return waterAnimalSpawn;
}
@Override
public void setWaterAnimalSpawnLimit(int limit) {
waterAnimalSpawn = limit;
}
@Override
public int getAmbientSpawnLimit() {
if (ambientSpawn < 0) {
return server.getAmbientSpawnLimit();
@ -1731,14 +1838,17 @@ public class CraftWorld implements World {
return ambientSpawn;
}
@Override
public void setAmbientSpawnLimit(int limit) {
ambientSpawn = limit;
}
@Override
public void playSound(Location loc, Sound sound, float volume, float pitch) {
playSound(loc, sound, org.bukkit.SoundCategory.MASTER, volume, pitch);
}
@Override
public void playSound(Location loc, String sound, float volume, float pitch) {
playSound(loc, sound, org.bukkit.SoundCategory.MASTER, volume, pitch);
}
@ -1766,6 +1876,7 @@ public class CraftWorld implements World {
world.getMinecraftServer().getPlayerList().sendPacketNearby(null, x, y, z, volume > 1.0F ? 16.0F * volume : 16.0D, this.world.dimension, packet);
}
@Override
public String getGameRuleValue(String rule) {
// In method contract for some reason
if (rule == null) {
@ -1776,6 +1887,7 @@ public class CraftWorld implements World {
return value != null ? value.getValue() : "";
}
@Override
public boolean setGameRuleValue(String rule, String value) {
// No null values allowed
if (rule == null || value == null) return false;
@ -1786,10 +1898,12 @@ public class CraftWorld implements World {
return true;
}
@Override
public String[] getGameRules() {
return GameRules.getGameRules().keySet().toArray(new String[GameRules.getGameRules().size()]);
}
@Override
public boolean isGameRule(String rule) {
Validate.isTrue(rule != null && !rule.isEmpty(), "Rule cannot be null nor empty");
return GameRules.getGameRules().containsKey(rule);

View File

@ -73,6 +73,7 @@ public class CraftBlock implements Block {
return position;
}
@Override
public World getWorld() {
return world.getMinecraftWorld().getWorld();
}
@ -81,10 +82,12 @@ public class CraftBlock implements Block {
return (CraftWorld) getWorld();
}
@Override
public Location getLocation() {
return new Location(getWorld(), position.getX(), position.getY(), position.getZ());
}
@Override
public Location getLocation(Location loc) {
if (loc != null) {
loc.setWorld(getWorld());
@ -102,18 +105,22 @@ public class CraftBlock implements Block {
return new BlockVector(getX(), getY(), getZ());
}
@Override
public int getX() {
return position.getX();
}
@Override
public int getY() {
return position.getY();
}
@Override
public int getZ() {
return position.getZ();
}
@Override
public Chunk getChunk() {
return getWorld().getChunkAt(this);
}
@ -138,6 +145,7 @@ public class CraftBlock implements Block {
return world.getType(position);
}
@Override
public byte getData() {
IBlockData blockData = world.getType(position);
return CraftMagicNumbers.toLegacyData(blockData);
@ -148,6 +156,7 @@ public class CraftBlock implements Block {
return CraftBlockData.fromData(getData0());
}
@Override
public void setType(final Material type) {
setType(type, true);
}
@ -197,18 +206,22 @@ public class CraftBlock implements Block {
}
}
@Override
public Material getType() {
return CraftMagicNumbers.getMaterial(world.getType(position).getBlock());
}
@Override
public byte getLightLevel() {
return (byte) world.getMinecraftWorld().getLightLevel(position);
}
@Override
public byte getLightFromSky() {
return (byte) world.getBrightness(EnumSkyBlock.SKY, position);
}
@Override
public byte getLightFromBlocks() {
return (byte) world.getBrightness(EnumSkyBlock.BLOCK, position);
}
@ -222,18 +235,22 @@ public class CraftBlock implements Block {
return getRelative(face, distance);
}
@Override
public Block getRelative(final int modX, final int modY, final int modZ) {
return getWorld().getBlockAt(getX() + modX, getY() + modY, getZ() + modZ);
}
@Override
public Block getRelative(BlockFace face) {
return getRelative(face, 1);
}
@Override
public Block getRelative(BlockFace face, int distance) {
return getRelative(face.getModX() * distance, face.getModY() * distance, face.getModZ() * distance);
}
@Override
public BlockFace getFace(final Block block) {
BlockFace[] values = BlockFace.values();
@ -293,6 +310,7 @@ public class CraftBlock implements Block {
}
}
@Override
public BlockState getState() {
Material material = getType();
@ -456,10 +474,12 @@ public class CraftBlock implements Block {
}
}
@Override
public Biome getBiome() {
return getWorld().getBiome(getX(), getZ());
}
@Override
public void setBiome(Biome bio) {
getWorld().setBiome(getX(), getZ(), bio);
}
@ -480,18 +500,22 @@ public class CraftBlock implements Block {
return IRegistry.BIOME.get(new MinecraftKey(bio.name().toLowerCase(java.util.Locale.ENGLISH)));
}
@Override
public double getTemperature() {
return world.getBiome(position).getAdjustedTemperature(position);
}
@Override
public double getHumidity() {
return getWorld().getHumidity(getX(), getZ());
}
@Override
public boolean isBlockPowered() {
return world.getMinecraftWorld().getBlockPower(position) > 0;
}
@Override
public boolean isBlockIndirectlyPowered() {
return world.getMinecraftWorld().isBlockIndirectlyPowered(position);
}
@ -510,10 +534,12 @@ public class CraftBlock implements Block {
return this.position.hashCode() ^ this.getWorld().hashCode();
}
@Override
public boolean isBlockFacePowered(BlockFace face) {
return world.getMinecraftWorld().isBlockFacePowered(position, blockFaceToNotch(face));
}
@Override
public boolean isBlockFaceIndirectlyPowered(BlockFace face) {
int power = world.getMinecraftWorld().getBlockFacePower(position, blockFaceToNotch(face));
@ -525,6 +551,7 @@ public class CraftBlock implements Block {
return power > 0;
}
@Override
public int getBlockPower(BlockFace face) {
int power = 0;
BlockRedstoneWire wire = (BlockRedstoneWire) Blocks.REDSTONE_WIRE;
@ -541,26 +568,32 @@ public class CraftBlock implements Block {
return power > 0 ? power : (face == BlockFace.SELF ? isBlockIndirectlyPowered() : isBlockFaceIndirectlyPowered(face)) ? 15 : 0;
}
@Override
public int getBlockPower() {
return getBlockPower(BlockFace.SELF);
}
@Override
public boolean isEmpty() {
return getNMS().isAir();
}
@Override
public boolean isLiquid() {
return (getType() == Material.WATER) || (getType() == Material.LAVA);
}
@Override
public PistonMoveReaction getPistonMoveReaction() {
return PistonMoveReaction.getById(getNMS().getPushReaction().ordinal());
}
@Override
public boolean breakNaturally() {
return breakNaturally(new ItemStack(Material.AIR));
}
@Override
public boolean breakNaturally(ItemStack item) {
// Order matters here, need to drop before setting to air so skulls can get their data
net.minecraft.server.Block block = this.getNMSBlock();
@ -574,27 +607,33 @@ public class CraftBlock implements Block {
return setTypeAndData(Blocks.AIR.getBlockData(), true) && result;
}
@Override
public Collection<ItemStack> getDrops() {
return getDrops(new ItemStack(Material.AIR));
}
@Override
public Collection<ItemStack> getDrops(ItemStack item) {
return net.minecraft.server.Block.getDrops(getNMS(), (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), null, CraftItemStack.asNMSCopy(item))
.stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList());
}
@Override
public void setMetadata(String metadataKey, MetadataValue newMetadataValue) {
getCraftWorld().getBlockMetadata().setMetadata(this, metadataKey, newMetadataValue);
}
@Override
public List<MetadataValue> getMetadata(String metadataKey) {
return getCraftWorld().getBlockMetadata().getMetadata(this, metadataKey);
}
@Override
public boolean hasMetadata(String metadataKey) {
return getCraftWorld().getBlockMetadata().hasMetadata(this, metadataKey);
}
@Override
public void removeMetadata(String metadataKey, Plugin owningPlugin) {
getCraftWorld().getBlockMetadata().removeMetadata(this, metadataKey, owningPlugin);
}

View File

@ -56,23 +56,28 @@ public class CraftBlockState implements BlockState {
return new CraftBlockState(world.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()), flag);
}
@Override
public World getWorld() {
requirePlaced();
return world;
}
@Override
public int getX() {
return position.getX();
}
@Override
public int getY() {
return position.getY();
}
@Override
public int getZ() {
return position.getZ();
}
@Override
public Chunk getChunk() {
requirePlaced();
return chunk;
@ -101,6 +106,7 @@ public class CraftBlockState implements BlockState {
this.data = ((CraftBlockData) data).getState();
}
@Override
public void setData(final MaterialData data) {
Material mat = CraftMagicNumbers.getMaterial(this.data).getItemType();
@ -116,10 +122,12 @@ public class CraftBlockState implements BlockState {
}
}
@Override
public MaterialData getData() {
return CraftMagicNumbers.getMaterial(data);
}
@Override
public void setType(final Material type) {
Preconditions.checkArgument(type != null, "Material cannot be null");
Preconditions.checkArgument(type.isBlock(), "Material must be a block!");
@ -129,6 +137,7 @@ public class CraftBlockState implements BlockState {
}
}
@Override
public Material getType() {
return CraftMagicNumbers.getMaterial(data.getBlock());
}
@ -141,23 +150,28 @@ public class CraftBlockState implements BlockState {
return flag;
}
@Override
public byte getLightLevel() {
return getBlock().getLightLevel();
}
@Override
public CraftBlock getBlock() {
requirePlaced();
return CraftBlock.at(world.getHandle(), position);
}
@Override
public boolean update() {
return update(false);
}
@Override
public boolean update(boolean force) {
return update(force, true);
}
@Override
public boolean update(boolean force, boolean applyPhysics) {
if (!isPlaced()) {
return true;
@ -187,14 +201,17 @@ public class CraftBlockState implements BlockState {
return true;
}
@Override
public byte getRawData() {
return CraftMagicNumbers.toLegacyData(data);
}
@Override
public Location getLocation() {
return new Location(world, getX(), getY(), getZ());
}
@Override
public Location getLocation(Location loc) {
if (loc != null) {
loc.setWorld(world);
@ -208,6 +225,7 @@ public class CraftBlockState implements BlockState {
return loc;
}
@Override
public void setRawData(byte data) {
this.data = CraftMagicNumbers.getBlock(getType(), data);
}
@ -242,21 +260,25 @@ public class CraftBlockState implements BlockState {
return hash;
}
@Override
public void setMetadata(String metadataKey, MetadataValue newMetadataValue) {
requirePlaced();
chunk.getCraftWorld().getBlockMetadata().setMetadata(getBlock(), metadataKey, newMetadataValue);
}
@Override
public List<MetadataValue> getMetadata(String metadataKey) {
requirePlaced();
return chunk.getCraftWorld().getBlockMetadata().getMetadata(getBlock(), metadataKey);
}
@Override
public boolean hasMetadata(String metadataKey) {
requirePlaced();
return chunk.getCraftWorld().getBlockMetadata().hasMetadata(getBlock(), metadataKey);
}
@Override
public void removeMetadata(String metadataKey, Plugin owningPlugin) {
requirePlaced();
chunk.getCraftWorld().getBlockMetadata().removeMetadata(getBlock(), metadataKey, owningPlugin);

View File

@ -16,6 +16,7 @@ public class ConsoleCommandCompleter implements Completer {
this.server = server;
}
@Override
public int complete(final String buffer, final int cursor, final List<CharSequence> candidates) {
Waitable<List<String>> waitable = new Waitable<List<String>>() {
@Override

View File

@ -21,30 +21,36 @@ public class CraftBlockCommandSender extends ServerCommandSender implements Bloc
this.tile = tile;
}
@Override
public Block getBlock() {
return CraftBlock.at(tile.getWorld(), tile.getPosition());
}
@Override
public void sendMessage(String message) {
for (IChatBaseComponent component : CraftChatMessage.fromString(message)) {
block.base.sendMessage(component);
}
}
@Override
public void sendMessage(String[] messages) {
for (String message : messages) {
sendMessage(message);
}
}
@Override
public String getName() {
return block.getName();
}
@Override
public boolean isOp() {
return true;
}
@Override
public void setOp(boolean value) {
throw new UnsupportedOperationException("Cannot change operator status of a block");
}

View File

@ -18,48 +18,59 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co
super();
}
@Override
public void sendMessage(String message) {
sendRawMessage(message);
}
@Override
public void sendRawMessage(String message) {
System.out.println(ChatColor.stripColor(message));
}
@Override
public void sendMessage(String[] messages) {
for (String message : messages) {
sendMessage(message);
}
}
@Override
public String getName() {
return "CONSOLE";
}
@Override
public boolean isOp() {
return true;
}
@Override
public void setOp(boolean value) {
throw new UnsupportedOperationException("Cannot change operator status of server console");
}
@Override
public boolean beginConversation(Conversation conversation) {
return conversationTracker.beginConversation(conversation);
}
@Override
public void abandonConversation(Conversation conversation) {
conversationTracker.abandonConversation(conversation, new ConversationAbandonedEvent(conversation, new ManuallyAbandonedConversationCanceller()));
}
@Override
public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) {
conversationTracker.abandonConversation(conversation, details);
}
@Override
public void acceptConversationInput(String input) {
conversationTracker.acceptConversationInput(input);
}
@Override
public boolean isConversing() {
return conversationTracker.isConversing();
}

View File

@ -16,46 +16,57 @@ public abstract class ServerCommandSender implements CommandSender {
public ServerCommandSender() {
}
@Override
public boolean isPermissionSet(String name) {
return perm.isPermissionSet(name);
}
@Override
public boolean isPermissionSet(Permission perm) {
return this.perm.isPermissionSet(perm);
}
@Override
public boolean hasPermission(String name) {
return perm.hasPermission(name);
}
@Override
public boolean hasPermission(Permission perm) {
return this.perm.hasPermission(perm);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) {
return perm.addAttachment(plugin, name, value);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin) {
return perm.addAttachment(plugin);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) {
return perm.addAttachment(plugin, name, value, ticks);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, int ticks) {
return perm.addAttachment(plugin, ticks);
}
@Override
public void removeAttachment(PermissionAttachment attachment) {
perm.removeAttachment(attachment);
}
@Override
public void recalculatePermissions() {
perm.recalculatePermissions();
}
@Override
public Set<PermissionAttachmentInfo> getEffectivePermissions() {
return perm.getEffectivePermissions();
}
@ -64,6 +75,7 @@ public abstract class ServerCommandSender implements CommandSender {
return false;
}
@Override
public Server getServer() {
return Bukkit.getServer();
}

View File

@ -12,10 +12,12 @@ public abstract class AbstractProjectile extends CraftEntity implements Projecti
doesBounce = false;
}
@Override
public boolean doesBounce() {
return doesBounce;
}
@Override
public void setBounce(boolean doesBounce) {
this.doesBounce = doesBounce;
}

View File

@ -22,33 +22,40 @@ public abstract class CraftAbstractHorse extends CraftAnimals implements Abstrac
return (EntityHorseAbstract) entity;
}
@Override
public void setVariant(Horse.Variant variant) {
throw new UnsupportedOperationException("Not supported.");
}
@Override
public int getDomestication() {
return getHandle().getTemper();
}
@Override
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);
}
@Override
public int getMaxDomestication() {
return getHandle().getMaxDomestication();
}
@Override
public void setMaxDomestication(int value) {
Validate.isTrue(value > 0, "Max domestication cannot be zero or less");
getHandle().maxDomestication = value;
}
@Override
public double getJumpStrength() {
return getHandle().getJumpStrength();
}
@Override
public void setJumpStrength(double strength) {
Validate.isTrue(strength >= 0, "Jump strength cannot be less than zero");
getHandle().getAttributeInstance(EntityHorse.attributeJumpStrength).setValue(strength);

View File

@ -9,43 +9,52 @@ public class CraftAgeable extends CraftCreature implements Ageable {
super(server, entity);
}
@Override
public int getAge() {
return getHandle().getAge();
}
@Override
public void setAge(int age) {
getHandle().setAgeRaw(age);
}
@Override
public void setAgeLock(boolean lock) {
getHandle().ageLocked = lock;
}
@Override
public boolean getAgeLock() {
return getHandle().ageLocked;
}
@Override
public void setBaby() {
if (isAdult()) {
setAge(-24000);
}
}
@Override
public void setAdult() {
if (!isAdult()) {
setAge(0);
}
}
@Override
public boolean isAdult() {
return getAge() >= 0;
}
@Override
public boolean canBreed() {
return getAge() == 0;
}
@Override
public void setBreed(boolean breed) {
if (breed) {
setAge(0);

View File

@ -20,6 +20,7 @@ public class CraftAmbient extends CraftMob implements Ambient {
return "CraftAmbient";
}
@Override
public EntityType getType() {
return EntityType.UNKNOWN;
}

View File

@ -214,11 +214,13 @@ public class CraftAreaEffectCloud extends CraftEntity implements AreaEffectCloud
return CraftPotionUtil.toBukkit(getHandle().getType());
}
@Override
public ProjectileSource getSource() {
EntityLiving source = getHandle().getSource();
return (source == null) ? null : (LivingEntity) source.getBukkitEntity();
}
@Override
public void setSource(ProjectileSource shooter) {
if (shooter instanceof CraftLivingEntity) {
getHandle().setSource((EntityLiving) ((CraftLivingEntity) shooter).getHandle());

View File

@ -17,11 +17,13 @@ public class CraftArrow extends AbstractProjectile implements Arrow {
super(server, entity);
}
@Override
public void setKnockbackStrength(int knockbackStrength) {
Validate.isTrue(knockbackStrength >= 0, "Knockback cannot be negative");
getHandle().setKnockbackStrength(knockbackStrength);
}
@Override
public int getKnockbackStrength() {
return getHandle().knockbackStrength;
}
@ -37,18 +39,22 @@ public class CraftArrow extends AbstractProjectile implements Arrow {
getHandle().setDamage(damage);
}
@Override
public boolean isCritical() {
return getHandle().isCritical();
}
@Override
public void setCritical(boolean critical) {
getHandle().setCritical(critical);
}
@Override
public ProjectileSource getShooter() {
return getHandle().projectileSource;
}
@Override
public void setShooter(ProjectileSource shooter) {
if (shooter instanceof Entity) {
getHandle().setShooter(((CraftEntity) shooter).getHandle());
@ -102,6 +108,7 @@ public class CraftArrow extends AbstractProjectile implements Arrow {
return "CraftArrow";
}
@Override
public EntityType getType() {
return EntityType.UNKNOWN;
}

View File

@ -20,6 +20,7 @@ public class CraftBat extends CraftAmbient implements Bat {
return "CraftBat";
}
@Override
public EntityType getType() {
return EntityType.BAT;
}

View File

@ -20,6 +20,7 @@ public class CraftBlaze extends CraftMonster implements Blaze {
return "CraftBlaze";
}
@Override
public EntityType getType() {
return EntityType.BLAZE;
}

View File

@ -22,38 +22,46 @@ public class CraftBoat extends CraftVehicle implements Boat {
getHandle().setType(getBoatType(species));
}
@Override
public double getMaxSpeed() {
return getHandle().maxSpeed;
}
@Override
public void setMaxSpeed(double speed) {
if (speed >= 0D) {
getHandle().maxSpeed = speed;
}
}
@Override
public double getOccupiedDeceleration() {
return getHandle().occupiedDeceleration;
}
@Override
public void setOccupiedDeceleration(double speed) {
if (speed >= 0D) {
getHandle().occupiedDeceleration = speed;
}
}
@Override
public double getUnoccupiedDeceleration() {
return getHandle().unoccupiedDeceleration;
}
@Override
public void setUnoccupiedDeceleration(double speed) {
getHandle().unoccupiedDeceleration = speed;
}
@Override
public boolean getWorkOnLand() {
return getHandle().landBoats;
}
@Override
public void setWorkOnLand(boolean workOnLand) {
getHandle().landBoats = workOnLand;
}
@ -68,6 +76,7 @@ public class CraftBoat extends CraftVehicle implements Boat {
return "CraftBoat";
}
@Override
public EntityType getType() {
return EntityType.BOAT;
}

View File

@ -20,6 +20,7 @@ public class CraftCaveSpider extends CraftSpider implements CaveSpider {
return "CraftCaveSpider";
}
@Override
public EntityType getType() {
return EntityType.CAVE_SPIDER;
}

View File

@ -21,6 +21,7 @@ public class CraftChicken extends CraftAnimals implements Chicken {
return "CraftChicken";
}
@Override
public EntityType getType() {
return EntityType.CHICKEN;
}

View File

@ -13,6 +13,7 @@ public class CraftComplexPart extends CraftEntity implements ComplexEntityPart {
super(server, entity);
}
@Override
public ComplexLivingEntity getParent() {
return (ComplexLivingEntity) ((EntityEnderDragon) getHandle().owner).getBukkitEntity();
}
@ -42,6 +43,7 @@ public class CraftComplexPart extends CraftEntity implements ComplexEntityPart {
return "CraftComplexPart";
}
@Override
public EntityType getType() {
return EntityType.UNKNOWN;
}

View File

@ -21,6 +21,7 @@ public class CraftCow extends CraftAnimals implements Cow {
return "CraftCow";
}
@Override
public EntityType getType() {
return EntityType.COW;
}

View File

@ -13,10 +13,12 @@ public class CraftCreeper extends CraftMonster implements Creeper {
super(server, entity);
}
@Override
public boolean isPowered() {
return getHandle().isPowered();
}
@Override
public void setPowered(boolean powered) {
CraftServer server = this.server;
Creeper entity = (Creeper) this.getHandle().getBukkitEntity();
@ -72,6 +74,7 @@ public class CraftCreeper extends CraftMonster implements Creeper {
return "CraftCreeper";
}
@Override
public EntityType getType() {
return EntityType.CREEPER;
}

View File

@ -20,6 +20,7 @@ public class CraftEgg extends CraftProjectile implements Egg {
return "CraftEgg";
}
@Override
public EntityType getType() {
return EntityType.EGG;
}

View File

@ -49,6 +49,7 @@ public class CraftEnderCrystal extends CraftEntity implements EnderCrystal {
return "CraftEnderCrystal";
}
@Override
public EntityType getType() {
return EntityType.ENDER_CRYSTAL;
}

View File

@ -25,6 +25,7 @@ public class CraftEnderDragon extends CraftComplexLivingEntity implements EnderD
}
}
@Override
public Set<ComplexEntityPart> getParts() {
Builder<ComplexEntityPart> builder = ImmutableSet.builder();
@ -45,6 +46,7 @@ public class CraftEnderDragon extends CraftComplexLivingEntity implements EnderD
return "CraftEnderDragon";
}
@Override
public EntityType getType() {
return EntityType.ENDER_DRAGON;
}

View File

@ -26,30 +26,37 @@ public class CraftEnderDragonPart extends CraftComplexPart implements EnderDrago
return "CraftEnderDragonPart";
}
@Override
public void damage(double amount) {
getParent().damage(amount);
}
@Override
public void damage(double amount, Entity source) {
getParent().damage(amount, source);
}
@Override
public double getHealth() {
return getParent().getHealth();
}
@Override
public void setHealth(double health) {
getParent().setHealth(health);
}
@Override
public double getMaxHealth() {
return getParent().getMaxHealth();
}
@Override
public void setMaxHealth(double health) {
getParent().setMaxHealth(health);
}
@Override
public void resetMaxHealth() {
getParent().resetMaxHealth();
}

View File

@ -20,6 +20,7 @@ public class CraftEnderPearl extends CraftProjectile implements EnderPearl {
return "CraftEnderPearl";
}
@Override
public EntityType getType() {
return EntityType.ENDER_PEARL;
}

View File

@ -16,6 +16,7 @@ public class CraftEnderman extends CraftMonster implements Enderman {
super(server, entity);
}
@Override
public MaterialData getCarriedMaterial() {
IBlockData blockData = getHandle().getCarried();
return (blockData == null) ? Material.AIR.getNewData((byte) 0) : CraftMagicNumbers.getMaterial(blockData);
@ -27,6 +28,7 @@ public class CraftEnderman extends CraftMonster implements Enderman {
return (blockData == null) ? null : CraftBlockData.fromData(blockData);
}
@Override
public void setCarriedMaterial(MaterialData data) {
getHandle().setCarried(CraftMagicNumbers.getBlock(data));
}
@ -46,6 +48,7 @@ public class CraftEnderman extends CraftMonster implements Enderman {
return "CraftEnderman";
}
@Override
public EntityType getType() {
return EntityType.ENDERMAN;
}

View File

@ -370,10 +370,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
throw new AssertionError("Unknown entity " + (entity == null ? null : entity.getClass()));
}
@Override
public Location getLocation() {
return new Location(getWorld(), entity.locX, entity.locY, entity.locZ, entity.getBukkitYaw(), entity.pitch);
}
@Override
public Location getLocation(Location loc) {
if (loc != null) {
loc.setWorld(getWorld());
@ -387,10 +389,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return loc;
}
@Override
public Vector getVelocity() {
return CraftVector.toBukkit(entity.getMot());
}
@Override
public void setVelocity(Vector velocity) {
Preconditions.checkArgument(velocity != null, "velocity");
velocity.checkFinite();
@ -414,6 +418,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return new BoundingBox(bb.minX, bb.minY, bb.minZ, bb.maxX, bb.maxY, bb.maxZ);
}
@Override
public boolean isOnGround() {
if (entity instanceof EntityArrow) {
return ((EntityArrow) entity).inGround;
@ -421,6 +426,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return entity.onGround;
}
@Override
public World getWorld() {
return entity.world.getWorld();
}
@ -440,10 +446,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
entity.setHeadRotation(yaw);
}
@Override
public boolean teleport(Location location) {
return teleport(location, TeleportCause.PLUGIN);
}
@Override
public boolean teleport(Location location, TeleportCause cause) {
Preconditions.checkArgument(location != null, "location");
location.checkFinite();
@ -469,14 +477,17 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return true;
}
@Override
public boolean teleport(org.bukkit.entity.Entity destination) {
return teleport(destination.getLocation());
}
@Override
public boolean teleport(org.bukkit.entity.Entity destination, TeleportCause cause) {
return teleport(destination.getLocation(), cause);
}
@Override
public List<org.bukkit.entity.Entity> getNearbyEntities(double x, double y, double z) {
List<Entity> notchEntityList = entity.world.getEntities(entity, entity.getBoundingBox().grow(x, y, z), null);
List<org.bukkit.entity.Entity> bukkitEntityList = new java.util.ArrayList<org.bukkit.entity.Entity>(notchEntityList.size());
@ -487,34 +498,42 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return bukkitEntityList;
}
@Override
public int getEntityId() {
return entity.getId();
}
@Override
public int getFireTicks() {
return entity.fireTicks;
}
@Override
public int getMaxFireTicks() {
return entity.getMaxFireTicks();
}
@Override
public void setFireTicks(int ticks) {
entity.fireTicks = ticks;
}
@Override
public void remove() {
entity.die();
}
@Override
public boolean isDead() {
return !entity.isAlive();
}
@Override
public boolean isValid() {
return entity.isAlive() && entity.valid;
}
@Override
public Server getServer() {
return server;
}
@ -537,10 +556,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
setVelocity(value);
}
@Override
public org.bukkit.entity.Entity getPassenger() {
return isEmpty() ? null : getHandle().passengers.get(0).getBukkitEntity();
}
@Override
public boolean setPassenger(org.bukkit.entity.Entity passenger) {
Preconditions.checkArgument(!this.equals(passenger), "Entity cannot ride itself.");
if (passenger instanceof CraftEntity) {
@ -576,10 +597,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return true;
}
@Override
public boolean isEmpty() {
return !getHandle().isVehicle();
}
@Override
public boolean eject() {
if (isEmpty()) {
return false;
@ -589,30 +612,37 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return true;
}
@Override
public float getFallDistance() {
return getHandle().fallDistance;
}
@Override
public void setFallDistance(float distance) {
getHandle().fallDistance = distance;
}
@Override
public void setLastDamageCause(EntityDamageEvent event) {
lastDamageEvent = event;
}
@Override
public EntityDamageEvent getLastDamageCause() {
return lastDamageEvent;
}
@Override
public UUID getUniqueId() {
return getHandle().getUniqueID();
}
@Override
public int getTicksLived() {
return getHandle().ticksLived;
}
@Override
public void setTicksLived(int value) {
if (value <= 0) {
throw new IllegalArgumentException("Age must be at least 1 tick");
@ -661,26 +691,32 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return hash;
}
@Override
public void setMetadata(String metadataKey, MetadataValue newMetadataValue) {
server.getEntityMetadata().setMetadata(this, metadataKey, newMetadataValue);
}
@Override
public List<MetadataValue> getMetadata(String metadataKey) {
return server.getEntityMetadata().getMetadata(this, metadataKey);
}
@Override
public boolean hasMetadata(String metadataKey) {
return server.getEntityMetadata().hasMetadata(this, metadataKey);
}
@Override
public void removeMetadata(String metadataKey, Plugin owningPlugin) {
server.getEntityMetadata().removeMetadata(this, metadataKey, owningPlugin);
}
@Override
public boolean isInsideVehicle() {
return getHandle().isPassenger();
}
@Override
public boolean leaveVehicle() {
if (!isInsideVehicle()) {
return false;
@ -690,6 +726,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return true;
}
@Override
public org.bukkit.entity.Entity getVehicle() {
if (!isInsideVehicle()) {
return null;

View File

@ -10,10 +10,12 @@ public class CraftExperienceOrb extends CraftEntity implements ExperienceOrb {
super(server, entity);
}
@Override
public int getExperience() {
return getHandle().value;
}
@Override
public void setExperience(int value) {
getHandle().value = value;
}
@ -28,6 +30,7 @@ public class CraftExperienceOrb extends CraftEntity implements ExperienceOrb {
return "CraftExperienceOrb";
}
@Override
public EntityType getType() {
return EntityType.EXPERIENCE_ORB;
}

View File

@ -25,22 +25,27 @@ public class CraftFallingBlock extends CraftEntity implements FallingBlock {
return "CraftFallingBlock";
}
@Override
public EntityType getType() {
return EntityType.FALLING_BLOCK;
}
@Override
public Material getMaterial() {
return CraftMagicNumbers.getMaterial(getHandle().getBlock()).getItemType();
}
@Override
public BlockData getBlockData() {
return CraftBlockData.fromData(getHandle().getBlock());
}
@Override
public boolean getDropItem() {
return getHandle().dropItem;
}
@Override
public void setDropItem(boolean drop) {
getHandle().dropItem = drop;
}

View File

@ -14,26 +14,32 @@ public class CraftFireball extends AbstractProjectile implements Fireball {
super(server, entity);
}
@Override
public float getYield() {
return getHandle().bukkitYield;
}
@Override
public boolean isIncendiary() {
return getHandle().isIncendiary;
}
@Override
public void setIsIncendiary(boolean isIncendiary) {
getHandle().isIncendiary = isIncendiary;
}
@Override
public void setYield(float yield) {
getHandle().bukkitYield = yield;
}
@Override
public ProjectileSource getShooter() {
return getHandle().projectileSource;
}
@Override
public void setShooter(ProjectileSource shooter) {
if (shooter instanceof CraftLivingEntity) {
getHandle().shooter = ((CraftLivingEntity) shooter).getHandle();
@ -43,10 +49,12 @@ public class CraftFireball extends AbstractProjectile implements Fireball {
getHandle().projectileSource = shooter;
}
@Override
public Vector getDirection() {
return new Vector(getHandle().dirX, getHandle().dirY, getHandle().dirZ);
}
@Override
public void setDirection(Vector direction) {
Validate.notNull(direction, "Direction can not be null");
double x = direction.getX();
@ -68,6 +76,7 @@ public class CraftFireball extends AbstractProjectile implements Fireball {
return "CraftFireball";
}
@Override
public EntityType getType() {
return EntityType.UNKNOWN;
}

View File

@ -17,6 +17,7 @@ public class CraftFishHook extends AbstractProjectile implements FishHook {
super(server, entity);
}
@Override
public ProjectileSource getShooter() {
if (getHandle().owner != null) {
return getHandle().owner.getBukkitEntity();
@ -25,6 +26,7 @@ public class CraftFishHook extends AbstractProjectile implements FishHook {
return null;
}
@Override
public void setShooter(ProjectileSource shooter) {
if (shooter instanceof CraftHumanEntity) {
getHandle().owner = (EntityHuman) ((CraftHumanEntity) shooter).entity;
@ -41,10 +43,12 @@ public class CraftFishHook extends AbstractProjectile implements FishHook {
return "CraftFishingHook";
}
@Override
public EntityType getType() {
return EntityType.FISHING_HOOK;
}
@Override
public double getBiteChance() {
EntityFishingHook hook = getHandle();
@ -57,6 +61,7 @@ public class CraftFishHook extends AbstractProjectile implements FishHook {
return this.biteChance;
}
@Override
public void setBiteChance(double chance) {
Validate.isTrue(chance >= 0 && chance <= 1, "The bite chance must be between 0 and 1.");
this.biteChance = chance;

View File

@ -21,6 +21,7 @@ public class CraftGhast extends CraftFlying implements Ghast {
return "CraftGhast";
}
@Override
public EntityType getType() {
return EntityType.GHAST;
}

View File

@ -21,6 +21,7 @@ public class CraftGiant extends CraftMonster implements Giant {
return "CraftGiant";
}
@Override
public EntityType getType() {
return EntityType.GIANT;
}

View File

@ -13,14 +13,17 @@ public class CraftHanging extends CraftEntity implements Hanging {
super(server, entity);
}
@Override
public BlockFace getAttachedFace() {
return getFacing().getOppositeFace();
}
@Override
public void setFacingDirection(BlockFace face) {
setFacingDirection(face, false);
}
@Override
public boolean setFacingDirection(BlockFace face, boolean force) {
EntityHanging hanging = getHandle();
EnumDirection dir = hanging.direction;
@ -47,6 +50,7 @@ public class CraftHanging extends CraftEntity implements Hanging {
return true;
}
@Override
public BlockFace getFacing() {
EnumDirection direction = this.getHandle().direction;
if (direction == null) return BlockFace.SELF;
@ -63,6 +67,7 @@ public class CraftHanging extends CraftEntity implements Hanging {
return "CraftHanging";
}
@Override
public EntityType getType() {
return EntityType.UNKNOWN;
}

View File

@ -91,34 +91,42 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
enderChest = new CraftInventory(entity.getEnderChest());
}
@Override
public PlayerInventory getInventory() {
return inventory;
}
@Override
public EntityEquipment getEquipment() {
return inventory;
}
@Override
public Inventory getEnderChest() {
return enderChest;
}
@Override
public MainHand getMainHand() {
return getHandle().getMainHand()== EnumMainHand.LEFT ? MainHand.LEFT : MainHand.RIGHT;
}
@Override
public ItemStack getItemInHand() {
return getInventory().getItemInHand();
}
@Override
public void setItemInHand(ItemStack item) {
getInventory().setItemInHand(item);
}
@Override
public ItemStack getItemOnCursor() {
return CraftItemStack.asCraftMirror(getHandle().inventory.getCarried());
}
@Override
public void setItemOnCursor(ItemStack item) {
net.minecraft.server.ItemStack stack = CraftItemStack.asNMSCopy(item);
getHandle().inventory.setCarried(stack);
@ -127,10 +135,12 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
}
}
@Override
public boolean isSleeping() {
return getHandle().isSleeping();
}
@Override
public int getSleepTicks() {
return getHandle().sleepTicks;
}
@ -207,63 +217,78 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return getHandle().getName();
}
@Override
public boolean isOp() {
return op;
}
@Override
public boolean isPermissionSet(String name) {
return perm.isPermissionSet(name);
}
@Override
public boolean isPermissionSet(Permission perm) {
return this.perm.isPermissionSet(perm);
}
@Override
public boolean hasPermission(String name) {
return perm.hasPermission(name);
}
@Override
public boolean hasPermission(Permission perm) {
return this.perm.hasPermission(perm);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) {
return perm.addAttachment(plugin, name, value);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin) {
return perm.addAttachment(plugin);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) {
return perm.addAttachment(plugin, name, value, ticks);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, int ticks) {
return perm.addAttachment(plugin, ticks);
}
@Override
public void removeAttachment(PermissionAttachment attachment) {
perm.removeAttachment(attachment);
}
@Override
public void recalculatePermissions() {
perm.recalculatePermissions();
}
@Override
public void setOp(boolean value) {
this.op = value;
perm.recalculatePermissions();
}
@Override
public Set<PermissionAttachmentInfo> getEffectivePermissions() {
return perm.getEffectivePermissions();
}
@Override
public GameMode getGameMode() {
return mode;
}
@Override
public void setGameMode(GameMode mode) {
if (mode == null) {
throw new IllegalArgumentException("Mode cannot be null");
@ -287,10 +312,12 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return "CraftHumanEntity{" + "id=" + getEntityId() + "name=" + getName() + '}';
}
@Override
public InventoryView getOpenInventory() {
return getHandle().activeContainer.getBukkitView();
}
@Override
public InventoryView openInventory(Inventory inventory) {
if(!(getHandle() instanceof EntityPlayer)) return null;
EntityPlayer player = (EntityPlayer) getHandle();
@ -463,6 +490,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
getHandle().activeContainer.addSlotListener(player);
}
@Override
public InventoryView openWorkbench(Location location, boolean force) {
if (!force) {
Block block = location.getBlock();
@ -480,6 +508,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return getHandle().activeContainer.getBukkitView();
}
@Override
public InventoryView openEnchanting(Location location, boolean force) {
if (!force) {
Block block = location.getBlock();
@ -501,6 +530,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return getHandle().activeContainer.getBukkitView();
}
@Override
public void openInventory(InventoryView inventory) {
if (!(getHandle() instanceof EntityPlayer)) return; // TODO: NPC support?
if (((EntityPlayer) getHandle()).playerConnection == null) return;
@ -567,10 +597,12 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return this.getHandle().activeContainer.getBukkitView();
}
@Override
public void closeInventory() {
getHandle().closeInventory();
}
@Override
public boolean isBlocking() {
return getHandle().isBlocking();
}
@ -580,10 +612,12 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return getHandle().isHandRaised();
}
@Override
public boolean setWindowProperty(InventoryView.Property prop, int value) {
return false;
}
@Override
public int getExpToLevel() {
return getHandle().getExpToLevel();
}

View File

@ -20,10 +20,12 @@ public class CraftIronGolem extends CraftGolem implements IronGolem {
return "CraftIronGolem";
}
@Override
public boolean isPlayerCreated() {
return getHandle().isPlayerCreated();
}
@Override
public void setPlayerCreated(boolean playerCreated) {
getHandle().setPlayerCreated(playerCreated);
}

View File

@ -20,18 +20,22 @@ public class CraftItem extends CraftEntity implements Item {
this(server, entity, entity);
}
@Override
public ItemStack getItemStack() {
return CraftItemStack.asCraftMirror(item.getItemStack());
}
@Override
public void setItemStack(ItemStack stack) {
item.setItemStack(CraftItemStack.asNMSCopy(stack));
}
@Override
public int getPickupDelay() {
return item.pickupDelay;
}
@Override
public void setPickupDelay(int delay) {
item.pickupDelay = Math.min(delay, Short.MAX_VALUE);
}
@ -49,6 +53,7 @@ public class CraftItem extends CraftEntity implements Item {
return "CraftItem";
}
@Override
public EntityType getType() {
return EntityType.DROPPED_ITEM;
}

View File

@ -54,18 +54,22 @@ public class CraftItemFrame extends CraftHanging implements ItemFrame {
this.entity = frame;
}
@Override
public void setItem(org.bukkit.inventory.ItemStack item) {
setItem(item, true);
}
@Override
public void setItem(org.bukkit.inventory.ItemStack item, boolean playSound) {
getHandle().setItem(CraftItemStack.asNMSCopy(item), true, playSound);
}
@Override
public org.bukkit.inventory.ItemStack getItem() {
return CraftItemStack.asBukkitCopy(getHandle().getItem());
}
@Override
public Rotation getRotation() {
return toBukkitRotation(getHandle().getRotation());
}
@ -94,6 +98,7 @@ public class CraftItemFrame extends CraftHanging implements ItemFrame {
}
}
@Override
public void setRotation(Rotation rotation) {
Validate.notNull(rotation, "Rotation cannot be null");
getHandle().setRotation(toInteger(rotation));
@ -133,6 +138,7 @@ public class CraftItemFrame extends CraftHanging implements ItemFrame {
return "CraftItemFrame{item=" + getItem() + ", rotation=" + getRotation() + "}";
}
@Override
public EntityType getType() {
return EntityType.ITEM_FRAME;
}

View File

@ -26,6 +26,7 @@ public class CraftLargeFireball extends CraftFireball implements LargeFireball {
return "CraftLargeFireball";
}
@Override
public EntityType getType() {
return EntityType.FIREBALL;
}

View File

@ -20,6 +20,7 @@ public class CraftLeash extends CraftHanging implements LeashHitch {
return "CraftLeash";
}
@Override
public EntityType getType() {
return EntityType.LEASH_HITCH;
}

View File

@ -10,6 +10,7 @@ public class CraftLightningStrike extends CraftEntity implements LightningStrike
super(server, entity);
}
@Override
public boolean isEffect() {
return ((EntityLightning) super.getHandle()).isEffect;
}
@ -24,6 +25,7 @@ public class CraftLightningStrike extends CraftEntity implements LightningStrike
return "CraftLightningStrike";
}
@Override
public EntityType getType() {
return EntityType.LIGHTNING;
}

View File

@ -92,10 +92,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
}
@Override
public double getHealth() {
return Math.min(Math.max(0, getHandle().getHealth()), getMaxHealth());
}
@Override
public void setHealth(double health) {
health = (float) health;
if ((health < 0) || (health > getMaxHealth())) {
@ -109,10 +111,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
}
@Override
public double getMaxHealth() {
return getHandle().getMaxHealth();
}
@Override
public void setMaxHealth(double amount) {
Validate.isTrue(amount > 0, "Max health must be greater than 0");
@ -123,14 +127,17 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
}
@Override
public void resetMaxHealth() {
setMaxHealth(getHandle().getAttributeInstance(GenericAttributes.MAX_HEALTH).getAttribute().getDefault());
}
@Override
public double getEyeHeight() {
return getHandle().getHeadHeight();
}
@Override
public double getEyeHeight(boolean ignorePose) {
return getEyeHeight();
}
@ -158,15 +165,18 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return blocks;
}
@Override
public List<Block> getLineOfSight(Set<Material> transparent, int maxDistance) {
return getLineOfSight(transparent, maxDistance, 0);
}
@Override
public Block getTargetBlock(Set<Material> transparent, int maxDistance) {
List<Block> blocks = getLineOfSight(transparent, maxDistance, 1);
return blocks.get(0);
}
@Override
public List<Block> getLastTwoTargetBlocks(Set<Material> transparent, int maxDistance) {
return getLineOfSight(transparent, maxDistance, 2);
}
@ -194,26 +204,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return this.getWorld().rayTraceBlocks(eyeLocation, direction, maxDistance, fluidCollisionMode, false);
}
@Override
public int getRemainingAir() {
return getHandle().getAirTicks();
}
@Override
public void setRemainingAir(int ticks) {
getHandle().setAirTicks(ticks);
}
@Override
public int getMaximumAir() {
return getHandle().maxAirTicks;
}
@Override
public void setMaximumAir(int ticks) {
getHandle().maxAirTicks = ticks;
}
@Override
public void damage(double amount) {
damage(amount, null);
}
@Override
public void damage(double amount, org.bukkit.entity.Entity source) {
DamageSource reason = DamageSource.GENERIC;
@ -226,32 +242,39 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
entity.damageEntity(reason, (float) amount);
}
@Override
public Location getEyeLocation() {
Location loc = getLocation();
loc.setY(loc.getY() + getEyeHeight());
return loc;
}
@Override
public int getMaximumNoDamageTicks() {
return getHandle().maxNoDamageTicks;
}
@Override
public void setMaximumNoDamageTicks(int ticks) {
getHandle().maxNoDamageTicks = ticks;
}
@Override
public double getLastDamage() {
return getHandle().lastDamage;
}
@Override
public void setLastDamage(double damage) {
getHandle().lastDamage = (float) damage;
}
@Override
public int getNoDamageTicks() {
return getHandle().noDamageTicks;
}
@Override
public void setNoDamageTicks(int ticks) {
getHandle().noDamageTicks = ticks;
}
@ -270,14 +293,17 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return "CraftLivingEntity{" + "id=" + getEntityId() + '}';
}
@Override
public Player getKiller() {
return getHandle().killer == null ? null : (Player) getHandle().killer.getBukkitEntity();
}
@Override
public boolean addPotionEffect(PotionEffect effect) {
return addPotionEffect(effect, false);
}
@Override
public boolean addPotionEffect(PotionEffect effect, boolean force) {
if (hasPotionEffect(effect.getType())) {
if (!force) {
@ -289,6 +315,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return true;
}
@Override
public boolean addPotionEffects(Collection<PotionEffect> effects) {
boolean success = true;
for (PotionEffect effect : effects) {
@ -297,6 +324,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return success;
}
@Override
public boolean hasPotionEffect(PotionEffectType type) {
return getHandle().hasEffect(MobEffectList.fromId(type.getId()));
}
@ -307,10 +335,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return (handle == null) ? null : new PotionEffect(PotionEffectType.getById(MobEffectList.getId(handle.getMobEffect())), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isShowParticles());
}
@Override
public void removePotionEffect(PotionEffectType type) {
getHandle().removeEffect(MobEffectList.fromId(type.getId()), EntityPotionEffectEvent.Cause.PLUGIN);
}
@Override
public Collection<PotionEffect> getActivePotionEffects() {
List<PotionEffect> effects = new ArrayList<PotionEffect>();
for (MobEffect handle : getHandle().effects.values()) {
@ -319,10 +349,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return effects;
}
@Override
public <T extends Projectile> T launchProjectile(Class<? extends T> projectile) {
return launchProjectile(projectile, null);
}
@Override
@SuppressWarnings("unchecked")
public <T extends Projectile> T launchProjectile(Class<? extends T> projectile, Vector velocity) {
net.minecraft.server.World world = ((CraftWorld) getWorld()).getHandle();
@ -405,32 +437,39 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return (T) launch.getBukkitEntity();
}
@Override
public EntityType getType() {
return EntityType.UNKNOWN;
}
@Override
public boolean hasLineOfSight(Entity other) {
return getHandle().hasLineOfSight(((CraftEntity) other).getHandle());
}
@Override
public boolean getRemoveWhenFarAway() {
return getHandle() instanceof EntityInsentient && !((EntityInsentient) getHandle()).persistent;
}
@Override
public void setRemoveWhenFarAway(boolean remove) {
if (getHandle() instanceof EntityInsentient) {
((EntityInsentient) getHandle()).persistent = !remove;
}
}
@Override
public EntityEquipment getEquipment() {
return equipment;
}
@Override
public void setCanPickupItems(boolean pickup) {
getHandle().canPickUpLoot = pickup;
}
@Override
public boolean getCanPickupItems() {
return getHandle().canPickUpLoot;
}
@ -444,6 +483,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return super.teleport(location, cause);
}
@Override
public boolean isLeashed() {
if (!(getHandle() instanceof EntityInsentient)) {
return false;
@ -451,6 +491,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return ((EntityInsentient) getHandle()).getLeashHolder() != null;
}
@Override
public Entity getLeashHolder() throws IllegalStateException {
if (!isLeashed()) {
throw new IllegalStateException("Entity not leashed");
@ -466,6 +507,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return true;
}
@Override
public boolean setLeashHolder(Entity holder) {
if ((getHandle() instanceof EntityWither) || !(getHandle() instanceof EntityInsentient)) {
return false;

View File

@ -11,6 +11,7 @@ public class CraftMagmaCube extends CraftSlime implements MagmaCube {
super(server, entity);
}
@Override
public EntityMagmaCube getHandle() {
return (EntityMagmaCube) entity;
}
@ -20,6 +21,7 @@ public class CraftMagmaCube extends CraftSlime implements MagmaCube {
return "CraftMagmaCube";
}
@Override
public EntityType getType() {
return EntityType.MAGMA_CUBE;
}

View File

@ -16,44 +16,54 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
super(server, entity);
}
@Override
public void setDamage(double damage) {
getHandle().setDamage((float) damage);
}
@Override
public double getDamage() {
return getHandle().getDamage();
}
@Override
public double getMaxSpeed() {
return getHandle().maxSpeed;
}
@Override
public void setMaxSpeed(double speed) {
if (speed >= 0D) {
getHandle().maxSpeed = speed;
}
}
@Override
public boolean isSlowWhenEmpty() {
return getHandle().slowWhenEmpty;
}
@Override
public void setSlowWhenEmpty(boolean slow) {
getHandle().slowWhenEmpty = slow;
}
@Override
public Vector getFlyingVelocityMod() {
return getHandle().getFlyingVelocityMod();
}
@Override
public void setFlyingVelocityMod(Vector flying) {
getHandle().setFlyingVelocityMod(flying);
}
@Override
public Vector getDerailedVelocityMod() {
return getHandle().getDerailedVelocityMod();
}
@Override
public void setDerailedVelocityMod(Vector derailed) {
getHandle().setDerailedVelocityMod(derailed);
}
@ -63,6 +73,7 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
return (EntityMinecartAbstract) entity;
}
@Override
public void setDisplayBlock(MaterialData material) {
if(material != null) {
IBlockData block = CraftMagicNumbers.getBlock(material);
@ -86,6 +97,7 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
}
}
@Override
public MaterialData getDisplayBlock() {
IBlockData blockData = getHandle().getDisplayBlock();
return CraftMagicNumbers.getMaterial(blockData);
@ -97,10 +109,12 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
return CraftBlockData.fromData(blockData);
}
@Override
public void setDisplayBlockOffset(int offset) {
getHandle().setDisplayBlockOffset(offset);
}
@Override
public int getDisplayBlockOffset() {
return getHandle().getDisplayBlockOffset();
}

View File

@ -16,6 +16,7 @@ public class CraftMinecartChest extends CraftMinecartContainer implements Storag
inventory = new CraftInventory(entity);
}
@Override
public Inventory getInventory() {
return inventory;
}
@ -25,6 +26,7 @@ public class CraftMinecartChest extends CraftMinecartContainer implements Storag
return "CraftMinecartChest{" + "inventory=" + inventory + '}';
}
@Override
public EntityType getType() {
return EntityType.MINECART_CHEST;
}

View File

@ -16,6 +16,7 @@ public class CraftMinecartFurnace extends CraftMinecart implements PoweredMineca
return "CraftMinecartFurnace";
}
@Override
public EntityType getType() {
return EntityType.MINECART_FURNACE;
}

View File

@ -20,10 +20,12 @@ public final class CraftMinecartHopper extends CraftMinecartContainer implements
return "CraftMinecartHopper{" + "inventory=" + inventory + '}';
}
@Override
public EntityType getType() {
return EntityType.MINECART_HOPPER;
}
@Override
public Inventory getInventory() {
return inventory;
}

View File

@ -15,6 +15,7 @@ final class CraftMinecartMobSpawner extends CraftMinecart implements SpawnerMine
return "CraftMinecartMobSpawner";
}
@Override
public EntityType getType() {
return EntityType.MINECART_MOB_SPAWNER;
}

View File

@ -15,6 +15,7 @@ public class CraftMinecartRideable extends CraftMinecart implements RideableMine
return "CraftMinecartRideable";
}
@Override
public EntityType getType() {
return EntityType.MINECART;
}

View File

@ -15,6 +15,7 @@ final class CraftMinecartTNT extends CraftMinecart implements ExplosiveMinecart
return "CraftMinecartTNT";
}
@Override
public EntityType getType() {
return EntityType.MINECART_TNT;
}

View File

@ -15,10 +15,12 @@ public class CraftOcelot extends CraftAnimals implements Ocelot {
return (EntityOcelot) entity;
}
@Override
public Type getCatType() {
return Type.WILD_OCELOT;
}
@Override
public void setCatType(Type type) {
throw new UnsupportedOperationException("Cats are now a different entity!");
}

View File

@ -18,15 +18,18 @@ public class CraftPainting extends CraftHanging implements Painting {
super(server, entity);
}
@Override
public Art getArt() {
Paintings art = getHandle().art;
return CraftArt.NotchToBukkit(art);
}
@Override
public boolean setArt(Art art) {
return setArt(art, false);
}
@Override
public boolean setArt(Art art, boolean force) {
EntityPainting painting = this.getHandle();
Paintings oldArt = painting.art;
@ -42,6 +45,7 @@ public class CraftPainting extends CraftHanging implements Painting {
return true;
}
@Override
public boolean setFacingDirection(BlockFace face, boolean force) {
if (super.setFacingDirection(face, force)) {
update();
@ -73,6 +77,7 @@ public class CraftPainting extends CraftHanging implements Painting {
return "CraftPainting{art=" + getArt() + "}";
}
@Override
public EntityType getType() {
return EntityType.PAINTING;
}

View File

@ -10,14 +10,17 @@ public class CraftPig extends CraftAnimals implements Pig {
super(server, entity);
}
@Override
public boolean hasSaddle() {
return getHandle().hasSaddle();
}
@Override
public void setSaddle(boolean saddled) {
getHandle().setSaddle(saddled);
}
@Override
public EntityPig getHandle() {
return (EntityPig) entity;
}
@ -27,6 +30,7 @@ public class CraftPig extends CraftAnimals implements Pig {
return "CraftPig";
}
@Override
public EntityType getType() {
return EntityType.PIG;
}

View File

@ -11,18 +11,22 @@ public class CraftPigZombie extends CraftZombie implements PigZombie {
super(server, entity);
}
@Override
public int getAnger() {
return getHandle().angerLevel;
}
@Override
public void setAnger(int level) {
getHandle().angerLevel = level;
}
@Override
public void setAngry(boolean angry) {
setAnger(angry ? 400 : 0);
}
@Override
public boolean isAngry() {
return getAnger() > 0;
}
@ -37,6 +41,7 @@ public class CraftPigZombie extends CraftZombie implements PigZombie {
return "CraftPigZombie";
}
@Override
public EntityType getType() {
return EntityType.PIG_ZOMBIE;
}

View File

@ -157,10 +157,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
perm.recalculatePermissions();
}
@Override
public boolean isOnline() {
return server.getPlayer(getUniqueId()) != null;
}
@Override
public InetSocketAddress getAddress() {
if (getHandle().playerConnection == null) return null;

View File

@ -11,10 +11,12 @@ public abstract class CraftProjectile extends AbstractProjectile implements Proj
super(server, entity);
}
@Override
public ProjectileSource getShooter() {
return getHandle().projectileSource;
}
@Override
public void setShooter(ProjectileSource shooter) {
if (shooter instanceof CraftLivingEntity) {
getHandle().shooter = (EntityLiving) ((CraftLivingEntity) shooter).entity;

View File

@ -12,18 +12,22 @@ public class CraftSheep extends CraftAnimals implements Sheep {
super(server, entity);
}
@Override
public DyeColor getColor() {
return DyeColor.getByWoolData((byte) getHandle().getColor().getColorIndex());
}
@Override
public void setColor(DyeColor color) {
getHandle().setColor(EnumColor.fromColorIndex(color.getWoolData()));
}
@Override
public boolean isSheared() {
return getHandle().isSheared();
}
@Override
public void setSheared(boolean flag) {
getHandle().setSheared(flag);
}
@ -38,6 +42,7 @@ public class CraftSheep extends CraftAnimals implements Sheep {
return "CraftSheep";
}
@Override
public EntityType getType() {
return EntityType.SHEEP;
}

View File

@ -20,6 +20,7 @@ public class CraftSilverfish extends CraftMonster implements Silverfish {
return "CraftSilverfish";
}
@Override
public EntityType getType() {
return EntityType.SILVERFISH;
}

View File

@ -21,6 +21,7 @@ public class CraftSkeleton extends CraftMonster implements Skeleton {
return "CraftSkeleton";
}
@Override
public EntityType getType() {
return EntityType.SKELETON;
}

View File

@ -11,10 +11,12 @@ public class CraftSlime extends CraftMob implements Slime {
super(server, entity);
}
@Override
public int getSize() {
return getHandle().getSize();
}
@Override
public void setSize(int size) {
getHandle().setSize(size, true);
}
@ -29,6 +31,7 @@ public class CraftSlime extends CraftMob implements Slime {
return "CraftSlime";
}
@Override
public EntityType getType() {
return EntityType.SLIME;
}

View File

@ -20,6 +20,7 @@ public class CraftSmallFireball extends CraftFireball implements SmallFireball {
return "CraftSmallFireball";
}
@Override
public EntityType getType() {
return EntityType.SMALL_FIREBALL;
}

View File

@ -20,6 +20,7 @@ public class CraftSnowball extends CraftProjectile implements Snowball {
return "CraftSnowball";
}
@Override
public EntityType getType() {
return EntityType.SNOWBALL;
}

View File

@ -30,6 +30,7 @@ public class CraftSnowman extends CraftGolem implements Snowman {
return "CraftSnowman";
}
@Override
public EntityType getType() {
return EntityType.SNOWMAN;
}

View File

@ -21,6 +21,7 @@ public class CraftSpider extends CraftMonster implements Spider {
return "CraftSpider";
}
@Override
public EntityType getType() {
return EntityType.SPIDER;
}

View File

@ -21,6 +21,7 @@ public class CraftSquid extends CraftWaterMob implements Squid {
return "CraftSquid";
}
@Override
public EntityType getType() {
return EntityType.SQUID;
}

View File

@ -13,26 +13,32 @@ public class CraftTNTPrimed extends CraftEntity implements TNTPrimed {
super(server, entity);
}
@Override
public float getYield() {
return getHandle().yield;
}
@Override
public boolean isIncendiary() {
return getHandle().isIncendiary;
}
@Override
public void setIsIncendiary(boolean isIncendiary) {
getHandle().isIncendiary = isIncendiary;
}
@Override
public void setYield(float yield) {
getHandle().yield = yield;
}
@Override
public int getFuseTicks() {
return getHandle().getFuseTicks();
}
@Override
public void setFuseTicks(int fuseTicks) {
getHandle().setFuseTicks(fuseTicks);
}
@ -47,10 +53,12 @@ public class CraftTNTPrimed extends CraftEntity implements TNTPrimed {
return "CraftTNTPrimed";
}
@Override
public EntityType getType() {
return EntityType.PRIMED_TNT;
}
@Override
public Entity getSource() {
EntityLiving source = getHandle().getSource();

View File

@ -29,6 +29,7 @@ public class CraftTameableAnimal extends CraftAnimals implements Tameable, Creat
getHandle().setOwnerUUID(uuid);
}
@Override
public AnimalTamer getOwner() {
if (getOwnerUUID() == null) {
return null;
@ -42,10 +43,12 @@ public class CraftTameableAnimal extends CraftAnimals implements Tameable, Creat
return owner;
}
@Override
public boolean isTamed() {
return getHandle().isTamed();
}
@Override
public void setOwner(AnimalTamer tamer) {
if (tamer != null) {
setTamed(true);
@ -57,6 +60,7 @@ public class CraftTameableAnimal extends CraftAnimals implements Tameable, Creat
}
}
@Override
public void setTamed(boolean tame) {
getHandle().setTamed(tame);
if (!tame) {

View File

@ -20,6 +20,7 @@ public class CraftThrownExpBottle extends CraftProjectile implements ThrownExpBo
return "EntityThrownExpBottle";
}
@Override
public EntityType getType() {
return EntityType.THROWN_EXP_BOTTLE;
}

View File

@ -20,6 +20,7 @@ public class CraftThrownPotion extends CraftProjectile implements ThrownPotion {
super(server, entity);
}
@Override
public Collection<PotionEffect> getEffects() {
ImmutableList.Builder<PotionEffect> builder = ImmutableList.builder();
for (MobEffect effect : PotionUtil.getEffects(getHandle().getItem())) {
@ -28,6 +29,7 @@ public class CraftThrownPotion extends CraftProjectile implements ThrownPotion {
return builder.build();
}
@Override
public ItemStack getItem() {
return CraftItemStack.asBukkitCopy(getHandle().getItem());
}

View File

@ -25,14 +25,17 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
return "CraftVillager";
}
@Override
public EntityType getType() {
return EntityType.VILLAGER;
}
@Override
public Profession getProfession() {
return Profession.valueOf(IRegistry.VILLAGER_PROFESSION.getKey(getHandle().getVillagerData().getProfession()).getKey().toUpperCase(Locale.ROOT));
}
@Override
public void setProfession(Profession profession) {
Validate.notNull(profession);
getHandle().setVillagerData(getHandle().getVillagerData().withProfession(IRegistry.VILLAGER_PROFESSION.get(new MinecraftKey(profession.name().toLowerCase(Locale.ROOT)))));

View File

@ -20,6 +20,7 @@ public class CraftWitch extends CraftRaider implements Witch {
return "CraftWitch";
}
@Override
public EntityType getType() {
return EntityType.WITCH;
}

View File

@ -29,6 +29,7 @@ public class CraftWither extends CraftMonster implements Wither {
return "CraftWither";
}
@Override
public EntityType getType() {
return EntityType.WITHER;
}

View File

@ -30,6 +30,7 @@ public class CraftWitherSkull extends CraftFireball implements WitherSkull {
return "CraftWitherSkull";
}
@Override
public EntityType getType() {
return EntityType.WITHER_SKULL;
}

View File

@ -12,10 +12,12 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf {
super(server, wolf);
}
@Override
public boolean isAngry() {
return getHandle().isAngry();
}
@Override
public void setAngry(boolean angry) {
getHandle().setAngry(angry);
}
@ -30,10 +32,12 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf {
return EntityType.WOLF;
}
@Override
public DyeColor getCollarColor() {
return DyeColor.getByWoolData((byte) getHandle().getCollarColor().getColorIndex());
}
@Override
public void setCollarColor(DyeColor color) {
getHandle().setCollarColor(EnumColor.fromColorIndex(color.getWoolData()));
}

View File

@ -24,18 +24,22 @@ public class CraftZombie extends CraftMonster implements Zombie {
return "CraftZombie";
}
@Override
public EntityType getType() {
return EntityType.ZOMBIE;
}
@Override
public boolean isBaby() {
return getHandle().isBaby();
}
@Override
public void setBaby(boolean flag) {
getHandle().setBaby(flag);
}
@Override
public boolean isVillager() {
return getHandle() instanceof EntityZombieVillager;
}

View File

@ -17,6 +17,7 @@ public class CustomHelpTopic extends HelpTopic {
this.fullText = shortText + "\n" + fullText;
}
@Override
public boolean canSee(CommandSender sender) {
if (sender instanceof ConsoleCommandSender) {
return true;

View File

@ -34,6 +34,7 @@ public class MultipleCommandAliasHelpTopic extends HelpTopic {
fullText = ChatColor.GOLD + "Alias for: " + ChatColor.WHITE + getShortText();
}
@Override
public boolean canSee(CommandSender sender) {
if (amendedPermission == null) {
if (sender instanceof ConsoleCommandSender) {

View File

@ -9,6 +9,7 @@ import org.bukkit.help.HelpTopicFactory;
*/
public class MultipleCommandAliasHelpTopicFactory implements HelpTopicFactory<MultipleCommandAlias> {
@Override
public HelpTopic createTopic(MultipleCommandAlias multipleCommandAlias) {
return new MultipleCommandAliasHelpTopic(multipleCommandAlias);
}

View File

@ -54,6 +54,7 @@ public class SimpleHelpMap implements HelpMap {
registerHelpTopicFactory(MultipleCommandAlias.class, new MultipleCommandAliasHelpTopicFactory());
}
@Override
public synchronized HelpTopic getHelpTopic(String topicName) {
if (topicName.equals("")) {
return defaultTopic;
@ -66,10 +67,12 @@ public class SimpleHelpMap implements HelpMap {
return null;
}
@Override
public Collection<HelpTopic> getHelpTopics() {
return helpTopics.values();
}
@Override
public synchronized void addTopic(HelpTopic topic) {
// Existing topics take priority
if (!helpTopics.containsKey(topic.getName())) {
@ -77,10 +80,12 @@ public class SimpleHelpMap implements HelpMap {
}
}
@Override
public synchronized void clear() {
helpTopics.clear();
}
@Override
public List<String> getIgnoredPlugins() {
return yaml.getIgnoredPlugins();
}
@ -216,6 +221,7 @@ public class SimpleHelpMap implements HelpMap {
return false;
}
@Override
public void registerHelpTopicFactory(Class commandClass, HelpTopicFactory factory) {
if (!Command.class.isAssignableFrom(commandClass) && !CommandExecutor.class.isAssignableFrom(commandClass)) {
throw new IllegalArgumentException("commandClass must implement either Command or CommandExecutor!");
@ -225,6 +231,7 @@ public class SimpleHelpMap implements HelpMap {
private class IsCommandTopicPredicate implements Predicate<HelpTopic> {
@Override
public boolean apply(HelpTopic topic) {
return topic.getName().charAt(0) == '/';
}

View File

@ -45,38 +45,47 @@ public class CraftEntityEquipment implements EntityEquipment {
setItemInMainHand(stack);
}
@Override
public ItemStack getHelmet() {
return getEquipment(EnumItemSlot.HEAD);
}
@Override
public void setHelmet(ItemStack helmet) {
setEquipment(EnumItemSlot.HEAD, helmet);
}
@Override
public ItemStack getChestplate() {
return getEquipment(EnumItemSlot.CHEST);
}
@Override
public void setChestplate(ItemStack chestplate) {
setEquipment(EnumItemSlot.CHEST, chestplate);
}
@Override
public ItemStack getLeggings() {
return getEquipment(EnumItemSlot.LEGS);
}
@Override
public void setLeggings(ItemStack leggings) {
setEquipment(EnumItemSlot.LEGS, leggings);
}
@Override
public ItemStack getBoots() {
return getEquipment(EnumItemSlot.FEET);
}
@Override
public void setBoots(ItemStack boots) {
setEquipment(EnumItemSlot.FEET, boots);
}
@Override
public ItemStack[] getArmorContents() {
ItemStack[] armor = new ItemStack[]{
getEquipment(EnumItemSlot.FEET),
@ -87,6 +96,7 @@ public class CraftEntityEquipment implements EntityEquipment {
return armor;
}
@Override
public void setArmorContents(ItemStack[] items) {
setEquipment(EnumItemSlot.FEET, items.length >= 1 ? items[0] : null);
setEquipment(EnumItemSlot.LEGS, items.length >= 2 ? items[1] : null);
@ -102,12 +112,14 @@ public class CraftEntityEquipment implements EntityEquipment {
entity.getHandle().setSlot(slot, CraftItemStack.asNMSCopy(stack));
}
@Override
public void clear() {
for (EnumItemSlot slot : EnumItemSlot.values()) {
setEquipment(slot, null);
}
}
@Override
public Entity getHolder() {
return entity;
}
@ -142,34 +154,42 @@ public class CraftEntityEquipment implements EntityEquipment {
setDropChance(EnumItemSlot.OFFHAND, chance);
}
@Override
public float getHelmetDropChance() {
return getDropChance(EnumItemSlot.HEAD);
}
@Override
public void setHelmetDropChance(float chance) {
setDropChance(EnumItemSlot.HEAD, chance);
}
@Override
public float getChestplateDropChance() {
return getDropChance(EnumItemSlot.CHEST);
}
@Override
public void setChestplateDropChance(float chance) {
setDropChance(EnumItemSlot.CHEST, chance);
}
@Override
public float getLeggingsDropChance() {
return getDropChance(EnumItemSlot.LEGS);
}
@Override
public void setLeggingsDropChance(float chance) {
setDropChance(EnumItemSlot.LEGS, chance);
}
@Override
public float getBootsDropChance() {
return getDropChance(EnumItemSlot.FEET);
}
@Override
public void setBootsDropChance(float chance) {
setDropChance(EnumItemSlot.FEET, chance);
}

View File

@ -40,10 +40,12 @@ public class CraftInventory implements Inventory {
return inventory;
}
@Override
public int getSize() {
return getInventory().getSize();
}
@Override
public ItemStack getItem(int index) {
net.minecraft.server.ItemStack item = getInventory().getItem(index);
return item.isEmpty() ? null : CraftItemStack.asCraftMirror(item);
@ -71,12 +73,14 @@ public class CraftInventory implements Inventory {
setContents(items);
}
@Override
public ItemStack[] getContents() {
List<net.minecraft.server.ItemStack> mcItems = getInventory().getContents();
return asCraftMirror(mcItems);
}
@Override
public void setContents(ItemStack[] items) {
if (getSize() < items.length) {
throw new IllegalArgumentException("Invalid inventory size; expected " + getSize() + " or less");
@ -91,10 +95,12 @@ public class CraftInventory implements Inventory {
}
}
@Override
public void setItem(int index, ItemStack item) {
getInventory().setItem(index, CraftItemStack.asNMSCopy(item));
}
@Override
public boolean contains(Material material) {
Validate.notNull(material, "Material cannot be null");
material = CraftLegacy.fromLegacy(material);
@ -106,6 +112,7 @@ public class CraftInventory implements Inventory {
return false;
}
@Override
public boolean contains(ItemStack item) {
if (item == null) {
return false;
@ -118,6 +125,7 @@ public class CraftInventory implements Inventory {
return false;
}
@Override
public boolean contains(Material material, int amount) {
Validate.notNull(material, "Material cannot be null");
material = CraftLegacy.fromLegacy(material);
@ -134,6 +142,7 @@ public class CraftInventory implements Inventory {
return false;
}
@Override
public boolean contains(ItemStack item, int amount) {
if (item == null) {
return false;
@ -149,6 +158,7 @@ public class CraftInventory implements Inventory {
return false;
}
@Override
public boolean containsAtLeast(ItemStack item, int amount) {
if (item == null) {
return false;
@ -164,6 +174,7 @@ public class CraftInventory implements Inventory {
return false;
}
@Override
public HashMap<Integer, ItemStack> all(Material material) {
Validate.notNull(material, "Material cannot be null");
material = CraftLegacy.fromLegacy(material);
@ -179,6 +190,7 @@ public class CraftInventory implements Inventory {
return slots;
}
@Override
public HashMap<Integer, ItemStack> all(ItemStack item) {
HashMap<Integer, ItemStack> slots = new HashMap<Integer, ItemStack>();
if (item != null) {
@ -192,6 +204,7 @@ public class CraftInventory implements Inventory {
return slots;
}
@Override
public int first(Material material) {
Validate.notNull(material, "Material cannot be null");
material = CraftLegacy.fromLegacy(material);
@ -205,6 +218,7 @@ public class CraftInventory implements Inventory {
return -1;
}
@Override
public int first(ItemStack item) {
return first(item, true);
}
@ -224,6 +238,7 @@ public class CraftInventory implements Inventory {
return -1;
}
@Override
public int firstEmpty() {
ItemStack[] inventory = getStorageContents();
for (int i = 0; i < inventory.length; i++) {
@ -262,6 +277,7 @@ public class CraftInventory implements Inventory {
return -1;
}
@Override
public HashMap<Integer, ItemStack> addItem(ItemStack... items) {
Validate.noNullElements(items, "Item cannot be null");
HashMap<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
@ -327,6 +343,7 @@ public class CraftInventory implements Inventory {
return leftover;
}
@Override
public HashMap<Integer, ItemStack> removeItem(ItemStack... items) {
Validate.notNull(items, "Items cannot be null");
HashMap<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
@ -374,6 +391,7 @@ public class CraftInventory implements Inventory {
return getInventory().getMaxStackSize();
}
@Override
public void remove(Material material) {
Validate.notNull(material, "Material cannot be null");
material = CraftLegacy.fromLegacy(material);
@ -385,6 +403,7 @@ public class CraftInventory implements Inventory {
}
}
@Override
public void remove(ItemStack item) {
ItemStack[] items = getStorageContents();
for (int i = 0; i < items.length; i++) {
@ -394,20 +413,24 @@ public class CraftInventory implements Inventory {
}
}
@Override
public void clear(int index) {
setItem(index, null);
}
@Override
public void clear() {
for (int i = 0; i < getSize(); i++) {
clear(i);
}
}
@Override
public ListIterator<ItemStack> iterator() {
return new InventoryIterator(this);
}
@Override
public ListIterator<ItemStack> iterator(int index) {
if (index < 0) {
index += getSize() + 1; // ie, with -1, previous() will return the last element
@ -415,10 +438,12 @@ public class CraftInventory implements Inventory {
return new InventoryIterator(this, index);
}
@Override
public List<HumanEntity> getViewers() {
return this.inventory.getViewers();
}
@Override
public InventoryType getType() {
// Thanks to Droppers extending Dispensers, Blast Furnaces & Smokers extending Furnace, order is important.
if (inventory instanceof InventoryCrafting) {
@ -470,14 +495,17 @@ public class CraftInventory implements Inventory {
}
}
@Override
public InventoryHolder getHolder() {
return inventory.getOwner();
}
@Override
public int getMaxStackSize() {
return inventory.getMaxStackSize();
}
@Override
public void setMaxStackSize(int size) {
inventory.setMaxStackSize(size);
}

View File

@ -9,10 +9,12 @@ public class CraftInventoryBeacon extends CraftInventory implements BeaconInvent
super(beacon);
}
@Override
public void setItem(ItemStack item) {
setItem(0, item);
}
@Override
public ItemStack getItem() {
return getItem(0);
}

View File

@ -10,10 +10,12 @@ public class CraftInventoryBrewer extends CraftInventory implements BrewerInvent
super(inventory);
}
@Override
public ItemStack getIngredient() {
return getItem(3);
}
@Override
public void setIngredient(ItemStack ingredient) {
setItem(3, ingredient);
}

View File

@ -81,18 +81,21 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
}
@Override
public ItemStack[] getMatrix() {
List<net.minecraft.server.ItemStack> matrix = getMatrixInventory().getContents();
return asCraftMirror(matrix);
}
@Override
public ItemStack getResult() {
net.minecraft.server.ItemStack item = getResultInventory().getItem(0);
if (!item.isEmpty()) return CraftItemStack.asCraftMirror(item);
return null;
}
@Override
public void setMatrix(ItemStack[] contents) {
if (getMatrixInventory().getSize() > contents.length) {
throw new IllegalArgumentException("Invalid inventory size; expected " + getMatrixInventory().getSize() + " or less");
@ -107,11 +110,13 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn
}
}
@Override
public void setResult(ItemStack item) {
List<net.minecraft.server.ItemStack> contents = getResultInventory().getContents();
contents.set(0, CraftItemStack.asNMSCopy(item));
}
@Override
public Recipe getRecipe() {
IRecipe recipe = getInventory().getCurrentRecipe();
return recipe == null ? null : recipe.toBukkitRecipe();

View File

@ -62,14 +62,17 @@ public class CraftInventoryCustom extends CraftInventory {
this.type = InventoryType.CHEST;
}
@Override
public int getSize() {
return items.size();
}
@Override
public ItemStack getItem(int i) {
return items.get(i);
}
@Override
public ItemStack splitStack(int i, int j) {
ItemStack stack = this.getItem(i);
ItemStack result;
@ -85,6 +88,7 @@ public class CraftInventoryCustom extends CraftInventory {
return result;
}
@Override
public ItemStack splitWithoutUpdate(int i) {
ItemStack stack = this.getItem(i);
ItemStack result;
@ -99,6 +103,7 @@ public class CraftInventoryCustom extends CraftInventory {
return result;
}
@Override
public void setItem(int i, ItemStack itemstack) {
items.set(i, itemstack);
if (itemstack != ItemStack.a && this.getMaxStackSize() > 0 && itemstack.getCount() > this.getMaxStackSize()) {
@ -106,32 +111,40 @@ public class CraftInventoryCustom extends CraftInventory {
}
}
@Override
public int getMaxStackSize() {
return maxStack;
}
@Override
public void setMaxStackSize(int size) {
maxStack = size;
}
@Override
public void update() {}
@Override
public boolean a(EntityHuman entityhuman) {
return true;
}
@Override
public List<ItemStack> getContents() {
return items;
}
@Override
public void onOpen(CraftHumanEntity who) {
viewers.add(who);
}
@Override
public void onClose(CraftHumanEntity who) {
viewers.remove(who);
}
@Override
public List<HumanEntity> getViewers() {
return viewers;
}
@ -140,10 +153,12 @@ public class CraftInventoryCustom extends CraftInventory {
return type;
}
@Override
public InventoryHolder getOwner() {
return owner;
}
@Override
public boolean b(int i, ItemStack itemstack) {
return true;
}

View File

@ -31,10 +31,12 @@ public class CraftInventoryDoubleChest extends CraftInventory implements DoubleC
}
}
@Override
public Inventory getLeftSide() {
return left;
}
@Override
public Inventory getRightSide() {
return right;
}

View File

@ -10,26 +10,32 @@ public class CraftInventoryFurnace extends CraftInventory implements FurnaceInve
super(inventory);
}
@Override
public ItemStack getResult() {
return getItem(2);
}
@Override
public ItemStack getFuel() {
return getItem(1);
}
@Override
public ItemStack getSmelting() {
return getItem(0);
}
@Override
public void setFuel(ItemStack stack) {
setItem(1,stack);
}
@Override
public void setResult(ItemStack stack) {
setItem(2,stack);
}
@Override
public void setSmelting(ItemStack stack) {
setItem(0,stack);
}

View File

@ -10,10 +10,12 @@ public class CraftInventoryHorse extends CraftInventoryAbstractHorse implements
super(inventory);
}
@Override
public ItemStack getArmor() {
return getItem(1);
}
@Override
public void setArmor(ItemStack stack) {
setItem(1, stack);
}

View File

@ -102,48 +102,59 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
player.playerConnection.sendPacket(new PacketPlayOutSetSlot(player.defaultContainer.windowId, index, CraftItemStack.asNMSCopy(item)));
}
@Override
public int getHeldItemSlot() {
return getInventory().itemInHandIndex;
}
@Override
public void setHeldItemSlot(int slot) {
Validate.isTrue(slot >= 0 && slot < PlayerInventory.getHotbarSize(), "Slot is not between 0 and 8 inclusive");
this.getInventory().itemInHandIndex = slot;
((CraftPlayer) this.getHolder()).getHandle().playerConnection.sendPacket(new PacketPlayOutHeldItemSlot(slot));
}
@Override
public ItemStack getHelmet() {
return getItem(getSize() - 2);
}
@Override
public ItemStack getChestplate() {
return getItem(getSize() - 3);
}
@Override
public ItemStack getLeggings() {
return getItem(getSize() - 4);
}
@Override
public ItemStack getBoots() {
return getItem(getSize() - 5);
}
@Override
public void setHelmet(ItemStack helmet) {
setItem(getSize() - 2, helmet);
}
@Override
public void setChestplate(ItemStack chestplate) {
setItem(getSize() - 3, chestplate);
}
@Override
public void setLeggings(ItemStack leggings) {
setItem(getSize() - 4, leggings);
}
@Override
public void setBoots(ItemStack boots) {
setItem(getSize() - 5, boots);
}
@Override
public ItemStack[] getArmorContents() {
return asCraftMirror(getInventory().armor);
}
@ -218,34 +229,42 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
throw new UnsupportedOperationException("Cannot set drop chance for PlayerInventory");
}
@Override
public float getHelmetDropChance() {
return 1;
}
@Override
public void setHelmetDropChance(float chance) {
throw new UnsupportedOperationException("Cannot set drop chance for PlayerInventory");
}
@Override
public float getChestplateDropChance() {
return 1;
}
@Override
public void setChestplateDropChance(float chance) {
throw new UnsupportedOperationException("Cannot set drop chance for PlayerInventory");
}
@Override
public float getLeggingsDropChance() {
return 1;
}
@Override
public void setLeggingsDropChance(float chance) {
throw new UnsupportedOperationException("Cannot set drop chance for PlayerInventory");
}
@Override
public float getBootsDropChance() {
return 1;
}
@Override
public void setBootsDropChance(float chance) {
throw new UnsupportedOperationException("Cannot set drop chance for PlayerInventory");
}

View File

@ -39,6 +39,7 @@ public final class CraftItemFactory implements ItemFactory {
private CraftItemFactory() {
}
@Override
public boolean isApplicable(ItemMeta meta, ItemStack itemstack) {
if (itemstack == null) {
return false;
@ -46,6 +47,7 @@ public final class CraftItemFactory implements ItemFactory {
return isApplicable(meta, itemstack.getType());
}
@Override
public boolean isApplicable(ItemMeta meta, Material type) {
type = CraftLegacy.fromLegacy(type); // This may be called from legacy item stacks, try to get the right material
if (type == null || meta == null) {
@ -58,6 +60,7 @@ public final class CraftItemFactory implements ItemFactory {
return ((CraftMetaItem) meta).applicableTo(type);
}
@Override
public ItemMeta getItemMeta(Material material) {
Validate.notNull(material, "Material cannot be null");
return getItemMeta(material, null);
@ -254,6 +257,7 @@ public final class CraftItemFactory implements ItemFactory {
}
}
@Override
public boolean equals(ItemMeta meta1, ItemMeta meta2) {
if (meta1 == meta2) {
return true;
@ -291,11 +295,13 @@ public final class CraftItemFactory implements ItemFactory {
return instance;
}
@Override
public ItemMeta asMetaFor(ItemMeta meta, ItemStack stack) {
Validate.notNull(stack, "Stack cannot be null");
return asMetaFor(meta, stack.getType());
}
@Override
public ItemMeta asMetaFor(ItemMeta meta, Material material) {
Validate.notNull(material, "Material cannot be null");
if (!(meta instanceof CraftMetaItem)) {
@ -304,6 +310,7 @@ public final class CraftItemFactory implements ItemFactory {
return getItemMeta(material, (CraftMetaItem) meta);
}
@Override
public Color getDefaultLeatherColor() {
return DEFAULT_LEATHER_COLOR;
}

View File

@ -161,26 +161,32 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta {
}
}
@Override
public boolean hasAuthor() {
return !Strings.isNullOrEmpty(author);
}
@Override
public boolean hasTitle() {
return !Strings.isNullOrEmpty(title);
}
@Override
public boolean hasPages() {
return !pages.isEmpty();
}
@Override
public boolean hasGeneration() {
return generation != null;
}
@Override
public String getTitle() {
return this.title;
}
@Override
public boolean setTitle(final String title) {
if (title == null) {
this.title = null;
@ -193,10 +199,12 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta {
return true;
}
@Override
public String getAuthor() {
return this.author;
}
@Override
public void setAuthor(final String author) {
this.author = author;
}
@ -211,11 +219,13 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta {
this.generation = (generation == null) ? null : generation.ordinal();
}
@Override
public String getPage(final int page) {
Validate.isTrue(isValidPage(page), "Invalid page number");
return CraftChatMessage.fromComponent(pages.get(page - 1));
}
@Override
public void setPage(final int page, final String text) {
if (!isValidPage(page)) {
throw new IllegalArgumentException("Invalid page number " + page + "/" + pages.size());
@ -225,12 +235,14 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta {
pages.set(page - 1, CraftChatMessage.fromString(newText, true)[0]);
}
@Override
public void setPages(final String... pages) {
this.pages.clear();
addPage(pages);
}
@Override
public void addPage(final String... pages) {
for (String page : pages) {
if (this.pages.size() >= MAX_PAGES) {
@ -247,14 +259,17 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta {
}
}
@Override
public int getPageCount() {
return pages.size();
}
@Override
public List<String> getPages() {
return pages.stream().map(CraftChatMessage::fromComponent).collect(ImmutableList.toImmutableList());
}
@Override
public void setPages(List<String> pages) {
this.pages.clear();
for (String page : pages) {

View File

@ -123,10 +123,12 @@ class CraftMetaEnchantedBook extends CraftMetaItem implements EnchantmentStorage
return !hasStoredEnchants();
}
@Override
public boolean hasStoredEnchant(Enchantment ench) {
return hasStoredEnchants() && enchantments.containsKey(ench);
}
@Override
public int getStoredEnchantLevel(Enchantment ench) {
Integer level = hasStoredEnchants() ? enchantments.get(ench) : null;
if (level == null) {
@ -135,10 +137,12 @@ class CraftMetaEnchantedBook extends CraftMetaItem implements EnchantmentStorage
return level;
}
@Override
public Map<Enchantment, Integer> getStoredEnchants() {
return hasStoredEnchants() ? ImmutableMap.copyOf(enchantments) : ImmutableMap.<Enchantment, Integer>of();
}
@Override
public boolean addStoredEnchant(Enchantment ench, int level, boolean ignoreRestrictions) {
if (enchantments == null) {
enchantments = new HashMap<Enchantment, Integer>(4);
@ -151,14 +155,17 @@ class CraftMetaEnchantedBook extends CraftMetaItem implements EnchantmentStorage
return false;
}
@Override
public boolean removeStoredEnchant(Enchantment ench) {
return hasStoredEnchants() && enchantments.remove(ench) != null;
}
@Override
public boolean hasStoredEnchants() {
return !(enchantments == null || enchantments.isEmpty());
}
@Override
public boolean hasConflictingStoredEnchant(Enchantment ench) {
return checkConflictingEnchants(enchantments, ench);
}

View File

@ -184,6 +184,7 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
safelyAddEffects(effects);
}
@Override
public boolean hasEffects() {
return !(effects == null || effects.isEmpty());
}
@ -330,6 +331,7 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
return meta;
}
@Override
public void addEffect(FireworkEffect effect) {
Validate.notNull(effect, "Effect cannot be null");
if (this.effects == null) {
@ -338,6 +340,7 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
this.effects.add(effect);
}
@Override
public void addEffects(FireworkEffect...effects) {
Validate.notNull(effects, "Effects cannot be null");
if (effects.length == 0) {
@ -355,19 +358,23 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
}
}
@Override
public void addEffects(Iterable<FireworkEffect> effects) {
Validate.notNull(effects, "Effects cannot be null");
safelyAddEffects(effects);
}
@Override
public List<FireworkEffect> getEffects() {
return this.effects == null ? ImmutableList.<FireworkEffect>of() : ImmutableList.copyOf(this.effects);
}
@Override
public int getEffectsSize() {
return this.effects == null ? 0 : this.effects.size();
}
@Override
public void removeEffect(int index) {
if (this.effects == null) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: 0");
@ -376,14 +383,17 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
}
}
@Override
public void clearEffects() {
this.effects = null;
}
@Override
public int getPower() {
return this.power;
}
@Override
public void setPower(int power) {
Validate.isTrue(power >= 0, "Power cannot be less than zero: ", power);
Validate.isTrue(power < 0x80, "Power cannot be more than 127: ", power);

View File

@ -191,6 +191,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
}
}
@Override
public Map<String, Object> serialize() {
throw new AssertionError();
}
@ -747,14 +748,17 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
return !(hasDisplayName() || hasLocalizedName() || hasEnchants() || hasLore() || hasCustomModelData() || hasBlockData() || hasRepairCost() || !unhandledTags.isEmpty() || !persistentDataContainer.isEmpty() || hideFlag != 0 || isUnbreakable() || hasDamage() || hasAttributeModifiers());
}
@Override
public String getDisplayName() {
return CraftChatMessage.fromComponent(displayName, EnumChatFormat.WHITE);
}
@Override
public final void setDisplayName(String name) {
this.displayName = CraftChatMessage.wrapOrNull(name);
}
@Override
public boolean hasDisplayName() {
return displayName != null;
}
@ -774,19 +778,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
return locName != null;
}
@Override
public boolean hasLore() {
return this.lore != null && !this.lore.isEmpty();
}
@Override
public boolean hasRepairCost() {
return repairCost > 0;
}
@Override
public boolean hasEnchant(Enchantment ench) {
Validate.notNull(ench, "Enchantment cannot be null");
return hasEnchants() && enchantments.containsKey(ench);
}
@Override
public int getEnchantLevel(Enchantment ench) {
Validate.notNull(ench, "Enchantment cannot be null");
Integer level = hasEnchants() ? enchantments.get(ench) : null;
@ -796,10 +804,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
return level;
}
@Override
public Map<Enchantment, Integer> getEnchants() {
return hasEnchants() ? ImmutableMap.copyOf(enchantments) : ImmutableMap.<Enchantment, Integer>of();
}
@Override
public boolean addEnchant(Enchantment ench, int level, boolean ignoreRestrictions) {
Validate.notNull(ench, "Enchantment cannot be null");
if (enchantments == null) {
@ -813,15 +823,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
return false;
}
@Override
public boolean removeEnchant(Enchantment ench) {
Validate.notNull(ench, "Enchantment cannot be null");
return hasEnchants() && enchantments.remove(ench) != null;
}
@Override
public boolean hasEnchants() {
return !(enchantments == null || enchantments.isEmpty());
}
@Override
public boolean hasConflictingEnchant(Enchantment ench) {
return checkConflictingEnchants(enchantments, ench);
}
@ -863,10 +876,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
return (byte) (1 << hideFlag.ordinal());
}
@Override
public List<String> getLore() {
return this.lore == null ? null : new ArrayList<String>(Lists.transform(this.lore, (line) -> CraftChatMessage.fromComponent(line, EnumChatFormat.DARK_PURPLE)));
}
@Override
public void setLore(List<String> lore) { // too tired to think if .clone is better
if (lore == null) {
this.lore = null;
@ -911,10 +926,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
this.blockData = (blockData == null) ? null : ((CraftBlockData) blockData).toStates();
}
@Override
public int getRepairCost() {
return repairCost;
}
@Override
public void setRepairCost(int cost) { // TODO: Does this have limits?
repairCost = cost;
}
@ -1182,6 +1199,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
}
}
@Override
public final Map<String, Object> serialize() {
ImmutableMap.Builder<String, Object> map = ImmutableMap.builder();
map.put(SerializableMeta.TYPE_FIELD, SerializableMeta.classMap.get(getClass()));

Some files were not shown because too many files have changed in this diff Show More