geforkt von Mirrors/Paper
0976e9a02a
Defaults to false, servers thant additional security and peace of mind can turn it back on but doing so may cause gameplay abnormalities
286 Zeilen
11 KiB
Diff
286 Zeilen
11 KiB
Diff
From d95bbdf079e933361de7873e910f52520b57e66d Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <Zbob750@live.com>
|
|
Date: Wed, 2 Jul 2014 22:26:16 -0500
|
|
Subject: [PATCH] PaperSpigot config files
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
|
|
index 62d5847..a11d45a 100644
|
|
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
|
|
@@ -114,6 +114,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
|
org.spigotmc.SpigotConfig.init();
|
|
org.spigotmc.SpigotConfig.registerCommands();
|
|
// Spigot end
|
|
+ // PaperSpigot start
|
|
+ org.github.paperspigot.PaperSpigotConfig.init();
|
|
+ org.github.paperspigot.PaperSpigotConfig.registerCommands();
|
|
+ // PaperSpigot end
|
|
|
|
i.info("Generating keypair");
|
|
this.a(MinecraftEncryption.b());
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index cb6efc0..a0a1dd1 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -197,6 +197,7 @@ public abstract class World implements IBlockAccess {
|
|
public boolean keepSpawnInMemory = true;
|
|
public ChunkGenerator generator;
|
|
public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot
|
|
+ public final org.github.paperspigot.PaperSpigotWorldConfig paperSpigotConfig; // PaperSpigot
|
|
|
|
public final SpigotTimings.WorldTimingsHandler timings; // Spigot
|
|
|
|
@@ -215,6 +216,7 @@ public abstract class World implements IBlockAccess {
|
|
// Changed signature - added gen and env
|
|
public World(IDataManager idatamanager, String s, WorldSettings worldsettings, WorldProvider worldprovider, MethodProfiler methodprofiler, ChunkGenerator gen, org.bukkit.World.Environment env) {
|
|
this.spigotConfig = new org.spigotmc.SpigotWorldConfig( s ); // Spigot
|
|
+ this.paperSpigotConfig = new org.github.paperspigot.PaperSpigotWorldConfig( s ); // PaperSpigot
|
|
this.generator = gen;
|
|
this.world = new CraftWorld((WorldServer) this, gen, env);
|
|
this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 8ad5b89..95d30e8 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -813,6 +813,7 @@ public final class CraftServer implements Server {
|
|
}
|
|
|
|
org.spigotmc.SpigotConfig.init(); // Spigot
|
|
+ org.github.paperspigot.PaperSpigotConfig.init(); // PaperSpigot
|
|
for (WorldServer world : console.worlds) {
|
|
world.difficulty = difficulty;
|
|
world.setSpawnFlags(monsters, animals);
|
|
@@ -828,12 +829,14 @@ public final class CraftServer implements Server {
|
|
world.ticksPerMonsterSpawns = this.getTicksPerMonsterSpawns();
|
|
}
|
|
world.spigotConfig.init(); // Spigot
|
|
+ world.paperSpigotConfig.init(); // PaperSpigot
|
|
}
|
|
|
|
pluginManager.clearPlugins();
|
|
commandMap.clearCommands();
|
|
resetRecipes();
|
|
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
|
|
+ org.github.paperspigot.PaperSpigotConfig.registerCommands(); // PaperSpigot
|
|
|
|
overrideAllCommandBlockCommands = commandsConfiguration.getStringList("command-block-overrides").contains("*");
|
|
|
|
diff --git a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java
|
|
new file mode 100644
|
|
index 0000000..5d309da
|
|
--- /dev/null
|
|
+++ b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java
|
|
@@ -0,0 +1,123 @@
|
|
+package org.github.paperspigot;
|
|
+
|
|
+import com.google.common.base.Throwables;
|
|
+import java.io.File;
|
|
+import java.io.IOException;
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
+import java.lang.reflect.Method;
|
|
+import java.lang.reflect.Modifier;
|
|
+import java.util.HashMap;
|
|
+import java.util.List;
|
|
+import java.util.Map;
|
|
+import java.util.logging.Level;
|
|
+import net.minecraft.server.MinecraftServer;
|
|
+import org.bukkit.Bukkit;
|
|
+import org.bukkit.command.Command;
|
|
+import org.bukkit.configuration.file.YamlConfiguration;
|
|
+
|
|
+public class PaperSpigotConfig
|
|
+{
|
|
+
|
|
+ private static final File CONFIG_FILE = new File( "paper.yml" );
|
|
+ private static final String HEADER = "This is the main configuration file for PaperSpigot.\n"
|
|
+ + "As you can see, there's tons to configure. Some options may impact gameplay, so use\n"
|
|
+ + "with caution, and make sure you know what each option does before configuring.\n"
|
|
+ + "\n"
|
|
+ + "If you need help with the configuration or have any questions related to PaperSpigot,\n"
|
|
+ + "join us at the IRC.\n"
|
|
+ + "\n"
|
|
+ + "IRC: #paperspigot @ irc.spi.gt ( http://irc.spi.gt/iris/?channels=PaperSpigot )\n";
|
|
+ /*========================================================================*/
|
|
+ static YamlConfiguration config;
|
|
+ static int version;
|
|
+ static Map<String, Command> commands;
|
|
+ /*========================================================================*/
|
|
+
|
|
+ public static void init()
|
|
+ {
|
|
+ config = YamlConfiguration.loadConfiguration( CONFIG_FILE );
|
|
+ config.options().header( HEADER );
|
|
+ config.options().copyDefaults( true );
|
|
+
|
|
+ commands = new HashMap<String, Command>();
|
|
+
|
|
+ version = getInt( "config-version", 6 );
|
|
+ set( "config-version", 6 );
|
|
+ readConfig( PaperSpigotConfig.class, null );
|
|
+ }
|
|
+
|
|
+ public static void registerCommands()
|
|
+ {
|
|
+ for ( Map.Entry<String, Command> entry : commands.entrySet() )
|
|
+ {
|
|
+ MinecraftServer.getServer().server.getCommandMap().register( entry.getKey(), "PaperSpigot", entry.getValue() );
|
|
+ }
|
|
+ }
|
|
+
|
|
+ static void readConfig(Class<?> clazz, Object instance)
|
|
+ {
|
|
+ for ( Method method : clazz.getDeclaredMethods() )
|
|
+ {
|
|
+ if ( Modifier.isPrivate( method.getModifiers() ) )
|
|
+ {
|
|
+ if ( method.getParameterTypes().length == 0 && method.getReturnType() == Void.TYPE )
|
|
+ {
|
|
+ try
|
|
+ {
|
|
+ method.setAccessible( true );
|
|
+ method.invoke( instance );
|
|
+ } catch ( InvocationTargetException ex )
|
|
+ {
|
|
+ Throwables.propagate( ex.getCause() );
|
|
+ } catch ( Exception ex )
|
|
+ {
|
|
+ Bukkit.getLogger().log( Level.SEVERE, "Error invoking " + method, ex );
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+ try
|
|
+ {
|
|
+ config.save( CONFIG_FILE );
|
|
+ } catch ( IOException ex )
|
|
+ {
|
|
+ Bukkit.getLogger().log( Level.SEVERE, "Could not save " + CONFIG_FILE, ex );
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private static void set(String path, Object val)
|
|
+ {
|
|
+ config.set( path, val );
|
|
+ }
|
|
+
|
|
+ private static boolean getBoolean(String path, boolean def)
|
|
+ {
|
|
+ config.addDefault( path, def );
|
|
+ return config.getBoolean( path, config.getBoolean( path ) );
|
|
+ }
|
|
+
|
|
+ private static float getFloat(String path, int def)
|
|
+ {
|
|
+ config.addDefault( path, def );
|
|
+ return config.getFloat( path, config.getFloat( path ) );
|
|
+ }
|
|
+
|
|
+ private static int getInt(String path, int def)
|
|
+ {
|
|
+ config.addDefault( path, def );
|
|
+ return config.getInt( path, config.getInt( path ) );
|
|
+ }
|
|
+
|
|
+ private static <T> List getList(String path, T def)
|
|
+ {
|
|
+ config.addDefault( path, def );
|
|
+ return (List<T>) config.getList( path, config.getList( path ) );
|
|
+ }
|
|
+
|
|
+ private static String getString(String path, String def)
|
|
+ {
|
|
+ config.addDefault( path, def );
|
|
+ return config.getString( path, config.getString( path ) );
|
|
+ }
|
|
+}
|
|
\ No newline at end of file
|
|
diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
|
|
new file mode 100644
|
|
index 0000000..95298f3
|
|
--- /dev/null
|
|
+++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
|
|
@@ -0,0 +1,77 @@
|
|
+package org.github.paperspigot;
|
|
+
|
|
+import java.util.List;
|
|
+import org.bukkit.Bukkit;
|
|
+import org.bukkit.configuration.file.YamlConfiguration;
|
|
+
|
|
+public class PaperSpigotWorldConfig
|
|
+{
|
|
+
|
|
+ private final String worldName;
|
|
+ private final YamlConfiguration config;
|
|
+ private boolean verbose;
|
|
+
|
|
+ public PaperSpigotWorldConfig(String worldName)
|
|
+ {
|
|
+ this.worldName = worldName;
|
|
+ this.config = PaperSpigotConfig.config;
|
|
+ init();
|
|
+ }
|
|
+
|
|
+ public void init()
|
|
+ {
|
|
+ this.verbose = getBoolean( "verbose", true );
|
|
+
|
|
+ log( "-------- World Settings For [" + worldName + "] --------" );
|
|
+ PaperSpigotConfig.readConfig( PaperSpigotWorldConfig.class, this );
|
|
+ }
|
|
+
|
|
+ private void log(String s)
|
|
+ {
|
|
+ if ( verbose )
|
|
+ {
|
|
+ Bukkit.getLogger().info( s );
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private void set(String path, Object val)
|
|
+ {
|
|
+ config.set( "world-settings.default." + path, val );
|
|
+ }
|
|
+
|
|
+ private boolean getBoolean(String path, boolean def)
|
|
+ {
|
|
+ config.addDefault( "world-settings.default." + path, def );
|
|
+ return config.getBoolean( "world-settings." + worldName + "." + path, config.getBoolean( "world-settings.default." + path ) );
|
|
+ }
|
|
+
|
|
+ private double getDouble(String path, double def)
|
|
+ {
|
|
+ config.addDefault( "world-settings.default." + path, def );
|
|
+ return config.getDouble( "world-settings." + worldName + "." + path, config.getDouble( "world-settings.default." + path ) );
|
|
+ }
|
|
+
|
|
+ private int getInt(String path, int def)
|
|
+ {
|
|
+ config.addDefault( "world-settings.default." + path, def );
|
|
+ return config.getInt( "world-settings." + worldName + "." + path, config.getInt( "world-settings.default." + path ) );
|
|
+ }
|
|
+
|
|
+ private float getFloat(String path, float def)
|
|
+ {
|
|
+ config.addDefault( "world-settings.default." + path, def );
|
|
+ return config.getFloat( "world-settings." + worldName + "." + path, config.getFloat( "world-settings.default." + path ) );
|
|
+ }
|
|
+
|
|
+ private <T> List getList(String path, T def)
|
|
+ {
|
|
+ config.addDefault( "world-settings.default." + path, def );
|
|
+ return (List<T>) config.getList( "world-settings." + worldName + "." + path, config.getList( "world-settings.default." + path ) );
|
|
+ }
|
|
+
|
|
+ private String getString(String path, String def)
|
|
+ {
|
|
+ config.addDefault( "world-settings.default." + path, def );
|
|
+ return config.getString( "world-settings." + worldName + "." + path, config.getString( "world-settings.default." + path ) );
|
|
+ }
|
|
+}
|
|
\ No newline at end of file
|
|
--
|
|
1.9.1
|
|
|