SPIGOT-5901: Improve multiworld support

This commit is contained in:
md_5 2020-07-17 08:56:56 +10:00
parent b0c6dfe1ae
commit 75a2fb8e0b
No known key found for this signature in database
GPG key ID: E8E901AC7C617C11
3 changed files with 29 additions and 4 deletions

View file

@ -49,7 +49,7 @@
public EntityPlayer(MinecraftServer minecraftserver, WorldServer worldserver, GameProfile gameprofile, PlayerInteractManager playerinteractmanager) {
super(worldserver, worldserver.getSpawn(), gameprofile);
this.spawnDimension = World.OVERWORLD;
@@ -66,7 +101,51 @@
@@ -66,12 +101,56 @@
this.advancementDataPlayer = minecraftserver.getPlayerList().f(this);
this.G = 1.0F;
this.b(worldserver);
@ -101,6 +101,12 @@
private void b(WorldServer worldserver) {
BlockPosition blockposition = worldserver.getSpawn();
- if (worldserver.getDimensionManager().hasSkyLight() && worldserver.getMinecraftServer().getSaveData().getGameType() != EnumGamemode.ADVENTURE) {
+ if (worldserver.getDimensionManager().hasSkyLight() && worldserver.worldDataServer.getGameType() != EnumGamemode.ADVENTURE) { // CraftBukkit
int i = Math.max(0, this.server.a(worldserver));
int j = MathHelper.floor(worldserver.getWorldBorder().b((double) blockposition.getX(), (double) blockposition.getZ()));
@@ -137,11 +216,20 @@
if (nbttagcompound.hasKeyOfType("recipeBook", 10)) {
this.recipeBook.a(nbttagcompound.getCompound("recipeBook"), this.server.getCraftingManager());

View file

@ -655,7 +655,12 @@
}
public int getPlayerCount() {
@@ -747,27 +1035,50 @@
@@ -743,31 +1031,54 @@
entityplayer.playerInteractManager.a(this.u, EnumGamemode.NOT_SET);
}
- entityplayer.playerInteractManager.b(worldserver.getMinecraftServer().getSaveData().getGameType());
+ entityplayer.playerInteractManager.b(worldserver.worldDataServer.getGameType()); // CraftBukkit
}
public void shutdown() {

View file

@ -73,7 +73,15 @@
this.portalTravelAgent = new PortalTravelAgent(this);
this.N();
this.O();
@@ -97,8 +131,42 @@
@@ -91,14 +125,48 @@
iworlddataserver.setGameType(minecraftserver.getGamemode());
}
- this.structureManager = new StructureManager(this, minecraftserver.getSaveData().getGeneratorSettings());
+ this.structureManager = new StructureManager(this, this.worldDataServer.getGeneratorSettings()); // CraftBukkit
if (this.getDimensionManager().isCreateDragonBattle()) {
- this.dragonBattle = new EnderDragonBattle(this, minecraftserver.getSaveData().getGeneratorSettings().getSeed(), minecraftserver.getSaveData().B());
+ this.dragonBattle = new EnderDragonBattle(this, this.worldDataServer.getGeneratorSettings().getSeed(), this.worldDataServer.B()); // CraftBukkit
} else {
this.dragonBattle = null;
}
@ -301,7 +309,7 @@
if (iprogressupdate != null) {
iprogressupdate.a(new ChatMessage("menu.savingLevel"));
}
@@ -626,6 +740,14 @@
@@ -626,11 +740,19 @@
chunkproviderserver.save(flag);
}
@ -316,6 +324,12 @@
}
private void ag() {
if (this.dragonBattle != null) {
- this.server.getSaveData().a(this.dragonBattle.a());
+ this.worldDataServer.a(this.dragonBattle.a()); // CraftBukkit
}
this.getChunkProvider().getWorldPersistentData().a();
@@ -691,11 +813,24 @@
@Override