mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-06 07:02:18 -07:00
Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/
This commit is contained in:
@@ -23,83 +23,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import net.minecraft.server.ChunkCoordinates;
|
||||
import net.minecraft.server.CommandAchievement;
|
||||
import net.minecraft.server.CommandBan;
|
||||
import net.minecraft.server.CommandBanIp;
|
||||
import net.minecraft.server.CommandBanList;
|
||||
import net.minecraft.server.CommandClear;
|
||||
import net.minecraft.server.CommandDeop;
|
||||
import net.minecraft.server.CommandDifficulty;
|
||||
import net.minecraft.server.CommandEffect;
|
||||
import net.minecraft.server.CommandEnchant;
|
||||
import net.minecraft.server.CommandGamemode;
|
||||
import net.minecraft.server.CommandGamemodeDefault;
|
||||
import net.minecraft.server.CommandGamerule;
|
||||
import net.minecraft.server.CommandGive;
|
||||
import net.minecraft.server.CommandHelp;
|
||||
import net.minecraft.server.CommandIdleTimeout;
|
||||
import net.minecraft.server.CommandKick;
|
||||
import net.minecraft.server.CommandKill;
|
||||
import net.minecraft.server.CommandList;
|
||||
import net.minecraft.server.CommandMe;
|
||||
import net.minecraft.server.CommandNetstat;
|
||||
import net.minecraft.server.CommandOp;
|
||||
import net.minecraft.server.CommandPardon;
|
||||
import net.minecraft.server.CommandPardonIP;
|
||||
import net.minecraft.server.CommandPlaySound;
|
||||
import net.minecraft.server.CommandSay;
|
||||
import net.minecraft.server.CommandScoreboard;
|
||||
import net.minecraft.server.CommandSeed;
|
||||
import net.minecraft.server.CommandSetBlock;
|
||||
import net.minecraft.server.CommandSetWorldSpawn;
|
||||
import net.minecraft.server.CommandSpawnpoint;
|
||||
import net.minecraft.server.CommandSpreadPlayers;
|
||||
import net.minecraft.server.CommandSummon;
|
||||
import net.minecraft.server.CommandTell;
|
||||
import net.minecraft.server.CommandTellRaw;
|
||||
import net.minecraft.server.CommandTestFor;
|
||||
import net.minecraft.server.CommandTestForBlock;
|
||||
import net.minecraft.server.CommandTime;
|
||||
import net.minecraft.server.CommandToggleDownfall;
|
||||
import net.minecraft.server.CommandTp;
|
||||
import net.minecraft.server.CommandWeather;
|
||||
import net.minecraft.server.CommandWhitelist;
|
||||
import net.minecraft.server.CommandXp;
|
||||
import net.minecraft.server.Convertable;
|
||||
import net.minecraft.server.ConvertProgressUpdater;
|
||||
import net.minecraft.server.CraftingManager;
|
||||
import net.minecraft.server.DedicatedPlayerList;
|
||||
import net.minecraft.server.DedicatedServer;
|
||||
import net.minecraft.server.Enchantment;
|
||||
import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.EntityTracker;
|
||||
import net.minecraft.server.EnumDifficulty;
|
||||
import net.minecraft.server.EnumGamemode;
|
||||
import net.minecraft.server.ExceptionWorldConflict;
|
||||
import net.minecraft.server.Items;
|
||||
import net.minecraft.server.JsonListEntry;
|
||||
import net.minecraft.server.PlayerList;
|
||||
import net.minecraft.server.RecipesFurnace;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.MobEffectList;
|
||||
import net.minecraft.server.PropertyManager;
|
||||
import net.minecraft.server.ServerCommand;
|
||||
import net.minecraft.server.ServerNBTManager;
|
||||
import net.minecraft.server.WorldLoaderServer;
|
||||
import net.minecraft.server.WorldManager;
|
||||
import net.minecraft.server.WorldMap;
|
||||
import net.minecraft.server.PersistentCollection;
|
||||
import net.minecraft.server.WorldNBTStorage;
|
||||
import net.minecraft.server.WorldServer;
|
||||
import net.minecraft.server.WorldSettings;
|
||||
import net.minecraft.server.WorldType;
|
||||
import net.minecraft.util.com.google.common.base.Charsets;
|
||||
import net.minecraft.util.com.mojang.authlib.GameProfile;
|
||||
import net.minecraft.util.io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.util.io.netty.buffer.ByteBufOutputStream;
|
||||
import net.minecraft.util.io.netty.buffer.Unpooled;
|
||||
import net.minecraft.util.io.netty.handler.codec.base64.Base64;
|
||||
import net.minecraft.server.*;
|
||||
|
||||
import org.bukkit.BanList;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -139,8 +63,6 @@ import org.bukkit.craftbukkit.metadata.WorldMetadataStore;
|
||||
import org.bukkit.craftbukkit.potion.CraftPotionBrewer;
|
||||
import org.bukkit.craftbukkit.scheduler.CraftScheduler;
|
||||
import org.bukkit.craftbukkit.scoreboard.CraftScoreboardManager;
|
||||
import org.bukkit.craftbukkit.updater.AutoUpdater;
|
||||
import org.bukkit.craftbukkit.updater.BukkitDLUpdaterService;
|
||||
import org.bukkit.craftbukkit.util.CraftIconCache;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.craftbukkit.util.DatFileFilter;
|
||||
@@ -186,8 +108,16 @@ import com.avaje.ebean.config.DataSourceConfig;
|
||||
import com.avaje.ebean.config.ServerConfig;
|
||||
import com.avaje.ebean.config.dbplatform.SQLitePlatform;
|
||||
import com.avaje.ebeaninternal.server.lib.sql.TransactionIsolation;
|
||||
import com.google.common.base.Charsets;
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.MapMaker;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufOutputStream;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.handler.codec.base64.Base64;
|
||||
|
||||
import jline.console.ConsoleReader;
|
||||
|
||||
@@ -210,7 +140,6 @@ public final class CraftServer implements Server {
|
||||
private YamlConfiguration commandsConfiguration;
|
||||
private final Yaml yaml = new Yaml(new SafeConstructor());
|
||||
private final Map<UUID, OfflinePlayer> offlinePlayers = new MapMaker().softValues().makeMap();
|
||||
private final AutoUpdater updater;
|
||||
private final EntityMetadataStore entityMetadata = new EntityMetadataStore();
|
||||
private final PlayerMetadataStore playerMetadata = new PlayerMetadataStore();
|
||||
private final WorldMetadataStore worldMetadata = new WorldMetadataStore();
|
||||
@@ -244,7 +173,7 @@ public final class CraftServer implements Server {
|
||||
public CraftServer(MinecraftServer console, PlayerList playerList) {
|
||||
this.console = console;
|
||||
this.playerList = (DedicatedPlayerList) playerList;
|
||||
this.playerView = Collections.unmodifiableList(net.minecraft.util.com.google.common.collect.Lists.transform(playerList.players, new net.minecraft.util.com.google.common.base.Function<EntityPlayer, CraftPlayer>() {
|
||||
this.playerView = Collections.unmodifiableList(Lists.transform(playerList.players, new Function<EntityPlayer, CraftPlayer>() {
|
||||
@Override
|
||||
public CraftPlayer apply(EntityPlayer player) {
|
||||
return player.getBukkitEntity();
|
||||
@@ -316,13 +245,6 @@ public final class CraftServer implements Server {
|
||||
chunkGCLoadThresh = configuration.getInt("chunk-gc.load-threshold");
|
||||
loadIcon();
|
||||
|
||||
updater = new AutoUpdater(new BukkitDLUpdaterService(configuration.getString("auto-updater.host")), getLogger(), configuration.getString("auto-updater.preferred-channel"));
|
||||
updater.setEnabled(configuration.getBoolean("auto-updater.enabled"));
|
||||
updater.setSuggestChannels(configuration.getBoolean("auto-updater.suggest-channels"));
|
||||
updater.getOnBroken().addAll(configuration.getStringList("auto-updater.on-broken"));
|
||||
updater.getOnUpdate().addAll(configuration.getStringList("auto-updater.on-update"));
|
||||
updater.check(serverVersion);
|
||||
|
||||
loadPlugins();
|
||||
enablePlugins(PluginLoadOrder.STARTUP);
|
||||
}
|
||||
@@ -405,49 +327,10 @@ public final class CraftServer implements Server {
|
||||
}
|
||||
|
||||
private void setVanillaCommands() {
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandAchievement(), "/achievement give <stat_name> [player]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandBan(), "/ban <playername> [reason]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandBanIp(), "/ban-ip <ip-address|playername>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandBanList(), "/banlist [ips]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandClear(), "/clear <playername> [item] [metadata]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandGamemodeDefault(), "/defaultgamemode <mode>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandDeop(), "/deop <playername>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandDifficulty(), "/difficulty <new difficulty>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandEffect(), "/effect <player> <effect|clear> [seconds] [amplifier]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandEnchant(), "/enchant <playername> <enchantment ID> [enchantment level]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandGamemode(), "/gamemode <mode> [player]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandGamerule(), "/gamerule <rulename> [true|false]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandGive(), "/give <playername> <item> [amount] [metadata] [dataTag]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandHelp(), "/help [page|commandname]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandIdleTimeout(), "/setidletimeout <Minutes until kick>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandKick(), "/kick <playername> [reason]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandKill(), "/kill [playername]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandList(), "/list"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandMe(), "/me <actiontext>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandOp(), "/op <playername>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandPardon(), "/pardon <playername>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandPardonIP(), "/pardon-ip <ip-address>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandPlaySound(), "/playsound <sound> <playername> [x] [y] [z] [volume] [pitch] [minimumVolume]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandSay(), "/say <message>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandScoreboard(), "/scoreboard"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandSeed(), "/seed"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandSetBlock(), "/setblock <x> <y> <z> <tilename> [datavalue] [oldblockHandling] [dataTag]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandSetWorldSpawn(), "/setworldspawn [x] [y] [z]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandSpawnpoint(), "/spawnpoint <playername> [x] [y] [z]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandSpreadPlayers(), "/spreadplayers <x> <z> [spreadDistance] [maxRange] [respectTeams] <playernames>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandSummon(), "/summon <EntityName> [x] [y] [z] [dataTag]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandTp(), "/tp [player] <target>\n/tp [player] <x> <y> <z>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandTell(), "/tell <playername> <message>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandTellRaw(), "/tellraw <playername> <raw message>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandTestFor(), "/testfor <playername | selector> [dataTag]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandTestForBlock(), "/testforblock <x> <y> <z> <tilename> [datavalue] [dataTag]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandTime(), "/time set <value>\n/time add <value>"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandToggleDownfall(), "/toggledownfall"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandWeather(), "/weather <clear/rain/thunder> [duration in seconds]"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandWhitelist(), "/whitelist (add|remove) <player>\n/whitelist (on|off|list|reload)"));
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandXp(), "/xp <amount> [player]\n/xp <amount>L [player]"));
|
||||
// This is what is in the lang file, I swear.
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper(new CommandNetstat(), "/list"));
|
||||
Map<String, ICommand> commands = new CommandDispatcher().getCommands();
|
||||
for (ICommand cmd : commands.values()) {
|
||||
commandMap.register("minecraft", new VanillaCommandWrapper((CommandAbstract) cmd, LocaleI18n.get(cmd.getUsage(null))));
|
||||
}
|
||||
}
|
||||
|
||||
private void loadPlugin(Plugin plugin) {
|
||||
@@ -550,7 +433,7 @@ public final class CraftServer implements Server {
|
||||
}
|
||||
|
||||
public Player getPlayer(final EntityPlayer entity) {
|
||||
return entity.playerConnection.getPlayer();
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -759,12 +642,12 @@ public final class CraftServer implements Server {
|
||||
((DedicatedServer) console).propertyManager = config;
|
||||
|
||||
boolean animals = config.getBoolean("spawn-animals", console.getSpawnAnimals());
|
||||
boolean monsters = config.getBoolean("spawn-monsters", console.worlds.get(0).difficulty != EnumDifficulty.PEACEFUL);
|
||||
EnumDifficulty difficulty = EnumDifficulty.getById(config.getInt("difficulty", console.worlds.get(0).difficulty.ordinal()));
|
||||
boolean monsters = config.getBoolean("spawn-monsters", console.worlds.get(0).getDifficulty() != EnumDifficulty.PEACEFUL);
|
||||
EnumDifficulty difficulty = EnumDifficulty.getById(config.getInt("difficulty", console.worlds.get(0).getDifficulty().ordinal()));
|
||||
|
||||
online.value = config.getBoolean("online-mode", console.getOnlineMode());
|
||||
console.setSpawnAnimals(config.getBoolean("spawn-animals", console.getSpawnAnimals()));
|
||||
console.setPvP(config.getBoolean("pvp", console.getPvP()));
|
||||
console.setPVP(config.getBoolean("pvp", console.getPVP()));
|
||||
console.setAllowFlight(config.getBoolean("allow-flight", console.getAllowFlight()));
|
||||
console.setMotd(config.getString("motd", console.getMotd()));
|
||||
monsterSpawn = configuration.getInt("spawn-limits.monsters");
|
||||
@@ -790,7 +673,7 @@ public final class CraftServer implements Server {
|
||||
}
|
||||
|
||||
for (WorldServer world : console.worlds) {
|
||||
world.difficulty = difficulty;
|
||||
world.worldData.setDifficulty(difficulty);
|
||||
world.setSpawnFlags(monsters, animals);
|
||||
if (this.getTicksPerAnimalSpawns() < 0) {
|
||||
world.ticksPerAnimalSpawns = 400;
|
||||
@@ -961,7 +844,8 @@ public final class CraftServer implements Server {
|
||||
} while(used);
|
||||
boolean hardcore = false;
|
||||
|
||||
WorldServer internal = new WorldServer(console, new ServerNBTManager(getWorldContainer(), name, true), name, dimension, new WorldSettings(creator.seed(), EnumGamemode.getById(getDefaultGameMode().getValue()), generateStructures, hardcore, type), console.methodProfiler, creator.environment(), generator);
|
||||
WorldData worlddata = new WorldData(new WorldSettings(creator.seed(), EnumGamemode.getById(getDefaultGameMode().getValue()), generateStructures, hardcore, type), name);
|
||||
WorldServer internal = (WorldServer) new WorldServer(console, new ServerNBTManager(getWorldContainer(), name, true), worlddata, dimension, console.methodProfiler, creator.environment(), generator).b();
|
||||
|
||||
if (!(worlds.containsKey(name.toLowerCase()))) {
|
||||
return null;
|
||||
@@ -971,7 +855,7 @@ public final class CraftServer implements Server {
|
||||
|
||||
internal.tracker = new EntityTracker(internal);
|
||||
internal.addIWorldAccess(new WorldManager(console, internal));
|
||||
internal.difficulty = EnumDifficulty.EASY;
|
||||
internal.worldData.setDifficulty(EnumDifficulty.EASY);
|
||||
internal.setSpawnFlags(true, true);
|
||||
console.worlds.add(internal);
|
||||
|
||||
@@ -1001,8 +885,8 @@ public final class CraftServer implements Server {
|
||||
i = l;
|
||||
}
|
||||
|
||||
ChunkCoordinates chunkcoordinates = internal.getSpawn();
|
||||
internal.chunkProviderServer.getChunkAt(chunkcoordinates.x + j >> 4, chunkcoordinates.z + k >> 4);
|
||||
BlockPosition chunkcoordinates = internal.getSpawn();
|
||||
internal.chunkProviderServer.getChunkAt(chunkcoordinates.getX() + j >> 4, chunkcoordinates.getZ() + k >> 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1055,7 +939,6 @@ public final class CraftServer implements Server {
|
||||
|
||||
worlds.remove(world.getName().toLowerCase());
|
||||
console.worlds.remove(console.worlds.indexOf(handle));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1312,7 +1195,7 @@ public final class CraftServer implements Server {
|
||||
Validate.notNull(world, "World cannot be null");
|
||||
|
||||
net.minecraft.server.ItemStack stack = new net.minecraft.server.ItemStack(Items.MAP, 1, -1);
|
||||
WorldMap worldmap = Items.MAP.getSavedMap(stack, ((CraftWorld) world).getHandle());
|
||||
WorldMap worldmap = Items.FILLED_MAP.getSavedMap(stack, ((CraftWorld) world).getHandle());
|
||||
return worldmap.mapView;
|
||||
}
|
||||
|
||||
@@ -1415,7 +1298,7 @@ public final class CraftServer implements Server {
|
||||
|
||||
for (JsonListEntry entry : playerList.getProfileBans().getValues()) {
|
||||
result.add(getOfflinePlayer((GameProfile) entry.getKey()));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1497,27 +1380,6 @@ public final class CraftServer implements Server {
|
||||
return worldMetadata;
|
||||
}
|
||||
|
||||
public void detectListNameConflict(EntityPlayer entityPlayer) {
|
||||
// Collisions will make for invisible people
|
||||
for (int i = 0; i < getHandle().players.size(); ++i) {
|
||||
EntityPlayer testEntityPlayer = (EntityPlayer) getHandle().players.get(i);
|
||||
|
||||
// We have a problem!
|
||||
if (testEntityPlayer != entityPlayer && testEntityPlayer.listName.equals(entityPlayer.listName)) {
|
||||
String oldName = entityPlayer.listName;
|
||||
int spaceLeft = 16 - oldName.length();
|
||||
|
||||
if (spaceLeft <= 1) { // We also hit the list name length limit!
|
||||
entityPlayer.listName = oldName.subSequence(0, oldName.length() - 2 - spaceLeft) + String.valueOf(System.currentTimeMillis() % 99);
|
||||
} else {
|
||||
entityPlayer.listName = oldName + String.valueOf(System.currentTimeMillis() % 99);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getWorldContainer() {
|
||||
if (this.getServer().universe != null) {
|
||||
@@ -1575,16 +1437,6 @@ public final class CraftServer implements Server {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void onPlayerJoin(Player player) {
|
||||
if ((updater.isEnabled()) && (updater.getCurrent() != null) && (player.hasPermission(Server.BROADCAST_CHANNEL_ADMINISTRATIVE))) {
|
||||
if ((updater.getCurrent().isBroken()) && (updater.getOnBroken().contains(AutoUpdater.WARN_OPERATORS))) {
|
||||
player.sendMessage(ChatColor.DARK_RED + "The version of CraftBukkit that this server is running is known to be broken. Please consider updating to the latest version at dl.bukkit.org.");
|
||||
} else if ((updater.isUpdateAvailable()) && (updater.getOnUpdate().contains(AutoUpdater.WARN_OPERATORS))) {
|
||||
player.sendMessage(ChatColor.DARK_PURPLE + "The version of CraftBukkit that this server is running is out of date. Please consider updating to the latest version at dl.bukkit.org.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory createInventory(InventoryHolder owner, InventoryType type) {
|
||||
// TODO: Create the appropriate type, rather than Custom?
|
||||
|
Reference in New Issue
Block a user