SPIGOT-5103: World.save does not save gamerules
Dieser Commit ist enthalten in:
Ursprung
3164e5312f
Commit
e8b39d430a
@ -263,17 +263,17 @@
|
||||
+ this.server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.POSTWORLD);
|
||||
+ this.server.getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.STARTUP));
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ public void initWorld(WorldServer worldserver1, WorldData worlddata, WorldSettings worldsettings) {
|
||||
+ worldserver1.getWorldBorder().b(worlddata);
|
||||
|
||||
- this.worldServer.put(DimensionManager.OVERWORLD, worldserver);
|
||||
- this.initializeScoreboards(worldserver.getWorldPersistentData());
|
||||
- worldserver.getWorldBorder().b(worlddata);
|
||||
- WorldServer worldserver1 = this.getWorldServer(DimensionManager.OVERWORLD);
|
||||
+ }
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ public void initWorld(WorldServer worldserver1, WorldData worlddata, WorldSettings worldsettings) {
|
||||
+ worldserver1.getWorldBorder().b(worlddata);
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ if (worldserver1.generator != null) {
|
||||
+ worldserver1.getWorld().getPopulators().addAll(worldserver1.generator.getDefaultPopulators(worldserver1.getWorld()));
|
||||
@ -405,24 +405,24 @@
|
||||
}
|
||||
|
||||
protected void a(String s, WorldNBTStorage worldnbtstorage) {
|
||||
@@ -449,14 +627,14 @@
|
||||
} catch (ExceptionWorldConflict exceptionworldconflict) {
|
||||
MinecraftServer.LOGGER.warn(exceptionworldconflict.getMessage());
|
||||
@@ -451,12 +629,16 @@
|
||||
}
|
||||
- }
|
||||
}
|
||||
|
||||
- WorldServer worldserver1 = this.getWorldServer(DimensionManager.OVERWORLD);
|
||||
+ WorldServer worldserver1 = worldserver; // CraftBukkit
|
||||
+ // CraftBukkit start - moved to WorldServer.save
|
||||
+ /*
|
||||
WorldServer worldserver1 = this.getWorldServer(DimensionManager.OVERWORLD);
|
||||
WorldData worlddata = worldserver1.getWorldData();
|
||||
|
||||
worldserver1.getWorldBorder().a(worlddata);
|
||||
worlddata.c(this.getBossBattleCustomData().c());
|
||||
worldserver1.getDataManager().saveWorldData(worlddata, this.getPlayerList().r());
|
||||
+ } // CraftBukkit - moved down
|
||||
+ */
|
||||
+ // CraftBukkit end
|
||||
return flag3;
|
||||
}
|
||||
|
||||
@@ -465,8 +643,29 @@
|
||||
@@ -465,8 +647,29 @@
|
||||
this.stop();
|
||||
}
|
||||
|
||||
@ -452,7 +452,7 @@
|
||||
if (this.getServerConnection() != null) {
|
||||
this.getServerConnection().b();
|
||||
}
|
||||
@@ -475,6 +674,7 @@
|
||||
@@ -475,6 +678,7 @@
|
||||
MinecraftServer.LOGGER.info("Saving players");
|
||||
this.playerList.savePlayers();
|
||||
this.playerList.shutdown();
|
||||
@ -460,7 +460,7 @@
|
||||
}
|
||||
|
||||
MinecraftServer.LOGGER.info("Saving worlds");
|
||||
@@ -544,14 +744,16 @@
|
||||
@@ -544,14 +748,16 @@
|
||||
while (this.isRunning) {
|
||||
long i = SystemUtils.getMonotonicMillis() - this.nextTick;
|
||||
|
||||
@ -478,7 +478,7 @@
|
||||
this.nextTick += 50L;
|
||||
if (this.S) {
|
||||
this.S = false;
|
||||
@@ -598,6 +800,12 @@
|
||||
@@ -598,6 +804,12 @@
|
||||
} catch (Throwable throwable1) {
|
||||
MinecraftServer.LOGGER.error("Exception stopping the server", throwable1);
|
||||
} finally {
|
||||
@ -491,7 +491,7 @@
|
||||
this.exit();
|
||||
}
|
||||
|
||||
@@ -606,8 +814,15 @@
|
||||
@@ -606,8 +818,15 @@
|
||||
}
|
||||
|
||||
private boolean canSleepForTick() {
|
||||
@ -508,7 +508,7 @@
|
||||
|
||||
protected void sleepForTick() {
|
||||
this.executeAll();
|
||||
@@ -708,7 +923,7 @@
|
||||
@@ -708,7 +927,7 @@
|
||||
this.serverPing.b().a(agameprofile);
|
||||
}
|
||||
|
||||
@ -517,7 +517,7 @@
|
||||
MinecraftServer.LOGGER.debug("Autosave started");
|
||||
this.methodProfiler.enter("save");
|
||||
this.playerList.savePlayers();
|
||||
@@ -738,23 +953,40 @@
|
||||
@@ -738,23 +957,40 @@
|
||||
}
|
||||
|
||||
protected void b(BooleanSupplier booleansupplier) {
|
||||
@ -559,7 +559,7 @@
|
||||
|
||||
this.methodProfiler.enter("tick");
|
||||
|
||||
@@ -793,7 +1025,8 @@
|
||||
@@ -793,7 +1029,8 @@
|
||||
this.tickables.add(runnable);
|
||||
}
|
||||
|
||||
@ -569,7 +569,7 @@
|
||||
OptionParser optionparser = new OptionParser();
|
||||
OptionSpec<Void> optionspec = optionparser.accepts("nogui");
|
||||
OptionSpec<Void> optionspec1 = optionparser.accepts("initSettings", "Initializes 'server.properties' and 'eula.txt', then quits");
|
||||
@@ -816,15 +1049,17 @@
|
||||
@@ -816,15 +1053,17 @@
|
||||
optionparser.printHelpOn(System.err);
|
||||
return;
|
||||
}
|
||||
@ -589,7 +589,7 @@
|
||||
MinecraftServer.LOGGER.info("Initialized '" + java_nio_file_path.toAbsolutePath().toString() + "' and '" + java_nio_file_path1.toAbsolutePath().toString() + "'");
|
||||
return;
|
||||
}
|
||||
@@ -836,14 +1071,15 @@
|
||||
@@ -836,14 +1075,15 @@
|
||||
|
||||
DispenserRegistry.init();
|
||||
DispenserRegistry.c();
|
||||
@ -608,7 +608,7 @@
|
||||
dedicatedserver.i((String) optionset.valueOf(optionspec7));
|
||||
dedicatedserver.setPort((Integer) optionset.valueOf(optionspec10));
|
||||
dedicatedserver.e(optionset.has(optionspec2));
|
||||
@@ -866,6 +1102,29 @@
|
||||
@@ -866,6 +1106,29 @@
|
||||
|
||||
thread.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(MinecraftServer.LOGGER));
|
||||
Runtime.getRuntime().addShutdownHook(thread);
|
||||
@ -638,7 +638,7 @@
|
||||
} catch (Exception exception) {
|
||||
MinecraftServer.LOGGER.fatal("Failed to start the minecraft server", exception);
|
||||
}
|
||||
@@ -885,7 +1144,9 @@
|
||||
@@ -885,7 +1148,9 @@
|
||||
}
|
||||
|
||||
public void startServerThread() {
|
||||
@ -648,7 +648,7 @@
|
||||
}
|
||||
|
||||
public File d(String s) {
|
||||
@@ -940,7 +1201,7 @@
|
||||
@@ -940,7 +1205,7 @@
|
||||
}
|
||||
|
||||
public String getServerModName() {
|
||||
@ -657,7 +657,7 @@
|
||||
}
|
||||
|
||||
public CrashReport b(CrashReport crashreport) {
|
||||
@@ -979,7 +1240,7 @@
|
||||
@@ -979,7 +1244,7 @@
|
||||
}
|
||||
|
||||
public boolean E() {
|
||||
@ -666,7 +666,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1482,4 +1743,16 @@
|
||||
@@ -1482,4 +1747,16 @@
|
||||
}
|
||||
|
||||
public abstract boolean b(GameProfile gameprofile);
|
||||
|
@ -249,7 +249,24 @@
|
||||
if (iprogressupdate != null) {
|
||||
iprogressupdate.a(new ChatMessage("menu.savingLevel", new Object[0]));
|
||||
}
|
||||
@@ -715,8 +801,16 @@
|
||||
@@ -648,6 +734,16 @@
|
||||
|
||||
chunkproviderserver.save(flag);
|
||||
}
|
||||
+
|
||||
+ // CraftBukkit start - moved from MinecraftServer.saveChunks
|
||||
+ // PAIL - rename
|
||||
+ WorldServer worldserver1 = this;
|
||||
+ WorldData worlddata = worldserver1.getWorldData();
|
||||
+
|
||||
+ worldserver1.getWorldBorder().a(worlddata);
|
||||
+ worlddata.c(this.server.getBossBattleCustomData().c());
|
||||
+ worldserver1.getDataManager().saveWorldData(worlddata, this.server.getPlayerList().r());
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
protected void k_() throws ExceptionWorldConflict {
|
||||
@@ -715,8 +811,16 @@
|
||||
|
||||
while (objectiterator.hasNext()) {
|
||||
Entity entity = (Entity) objectiterator.next();
|
||||
@ -267,7 +284,7 @@
|
||||
EnumCreatureType enumcreaturetype = entity.getEntityType().d();
|
||||
|
||||
if (enumcreaturetype != EnumCreatureType.MISC && this.getChunkProvider().b(entity)) {
|
||||
@@ -730,11 +824,24 @@
|
||||
@@ -730,11 +834,24 @@
|
||||
|
||||
@Override
|
||||
public boolean addEntity(Entity entity) {
|
||||
@ -294,7 +311,7 @@
|
||||
}
|
||||
|
||||
public void addEntityTeleport(Entity entity) {
|
||||
@@ -784,13 +891,18 @@
|
||||
@@ -784,13 +901,18 @@
|
||||
this.registerEntity(entityplayer);
|
||||
}
|
||||
|
||||
@ -315,7 +332,7 @@
|
||||
IChunkAccess ichunkaccess = this.getChunkAt(MathHelper.floor(entity.locX / 16.0D), MathHelper.floor(entity.locZ / 16.0D), ChunkStatus.FULL, entity.attachedToPlayer);
|
||||
|
||||
if (!(ichunkaccess instanceof Chunk)) {
|
||||
@@ -818,7 +930,7 @@
|
||||
@@ -818,7 +940,7 @@
|
||||
if (entity1 == null) {
|
||||
return false;
|
||||
} else {
|
||||
@ -324,7 +341,7 @@
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -873,6 +985,7 @@
|
||||
@@ -873,6 +995,7 @@
|
||||
this.I.remove(((EntityInsentient) entity).getNavigation());
|
||||
}
|
||||
|
||||
@ -332,7 +349,7 @@
|
||||
}
|
||||
|
||||
private void registerEntity(Entity entity) {
|
||||
@@ -896,6 +1009,7 @@
|
||||
@@ -896,6 +1019,7 @@
|
||||
if (entity instanceof EntityInsentient) {
|
||||
this.I.add(((EntityInsentient) entity).getNavigation());
|
||||
}
|
||||
@ -340,7 +357,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -926,6 +1040,18 @@
|
||||
@@ -926,6 +1050,18 @@
|
||||
}
|
||||
|
||||
public void strikeLightning(EntityLightning entitylightning) {
|
||||
@ -359,7 +376,7 @@
|
||||
this.globalEntityList.add(entitylightning);
|
||||
this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entitylightning.locX, entitylightning.locY, entitylightning.locZ, 512.0D, this.worldProvider.getDimensionManager(), new PacketPlayOutSpawnEntityWeather(entitylightning));
|
||||
}
|
||||
@@ -934,6 +1060,12 @@
|
||||
@@ -934,6 +1070,12 @@
|
||||
public void a(int i, BlockPosition blockposition, int j) {
|
||||
Iterator iterator = this.server.getPlayerList().getPlayers().iterator();
|
||||
|
||||
@ -372,7 +389,7 @@
|
||||
while (iterator.hasNext()) {
|
||||
EntityPlayer entityplayer = (EntityPlayer) iterator.next();
|
||||
|
||||
@@ -942,6 +1074,12 @@
|
||||
@@ -942,6 +1084,12 @@
|
||||
double d1 = (double) blockposition.getY() - entityplayer.locY;
|
||||
double d2 = (double) blockposition.getZ() - entityplayer.locZ;
|
||||
|
||||
@ -385,7 +402,7 @@
|
||||
if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) {
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutBlockBreakAnimation(i, blockposition, j));
|
||||
}
|
||||
@@ -1002,6 +1140,14 @@
|
||||
@@ -1002,6 +1150,14 @@
|
||||
|
||||
@Override
|
||||
public Explosion createExplosion(@Nullable Entity entity, DamageSource damagesource, double d0, double d1, double d2, float f, boolean flag, Explosion.Effect explosion_effect) {
|
||||
@ -400,7 +417,7 @@
|
||||
Explosion explosion = new Explosion(this, entity, d0, d1, d2, f, flag, explosion_effect);
|
||||
|
||||
if (damagesource != null) {
|
||||
@@ -1010,6 +1156,8 @@
|
||||
@@ -1010,6 +1166,8 @@
|
||||
|
||||
explosion.a();
|
||||
explosion.a(false);
|
||||
@ -409,7 +426,7 @@
|
||||
if (explosion_effect == Explosion.Effect.NONE) {
|
||||
explosion.clearBlocks();
|
||||
}
|
||||
@@ -1074,13 +1222,20 @@
|
||||
@@ -1074,13 +1232,20 @@
|
||||
}
|
||||
|
||||
public <T extends ParticleParam> int a(T t0, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6) {
|
||||
@ -432,7 +449,7 @@
|
||||
++j;
|
||||
}
|
||||
}
|
||||
@@ -1163,7 +1318,13 @@
|
||||
@@ -1163,7 +1328,13 @@
|
||||
@Override
|
||||
public WorldMap a(String s) {
|
||||
return (WorldMap) this.getMinecraftServer().getWorldServer(DimensionManager.OVERWORLD).getWorldPersistentData().b(() -> {
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren