ForgePatch/patches_old/minecraft/net/minecraft/world/WorldServerMulti.java.patch

67 lines
2.4 KiB
Diff

--- ../src-base/minecraft/net/minecraft/world/WorldServerMulti.java
+++ ../src-work/minecraft/net/minecraft/world/WorldServerMulti.java
@@ -11,12 +11,13 @@
public class WorldServerMulti extends WorldServer
{
private final WorldServer field_175743_a;
+ private IBorderListener borderListener;
public WorldServerMulti(MinecraftServer p_i45923_1_, ISaveHandler p_i45923_2_, int p_i45923_3_, WorldServer p_i45923_4_, Profiler p_i45923_5_)
{
super(p_i45923_1_, p_i45923_2_, new DerivedWorldInfo(p_i45923_4_.func_72912_H()), p_i45923_3_, p_i45923_5_);
this.field_175743_a = p_i45923_4_;
- p_i45923_4_.func_175723_af().func_177737_a(new IBorderListener()
+ this.borderListener = new IBorderListener()
{
public void func_177694_a(WorldBorder p_177694_1_, double p_177694_2_)
{
@@ -46,11 +47,13 @@
{
WorldServerMulti.this.func_175723_af().func_177724_b(p_177695_2_);
}
- });
+ };
+ this.field_175743_a.func_175723_af().func_177737_a(this.borderListener);
}
protected void func_73042_a() throws MinecraftException
{
+ this.perWorldStorage.func_75744_a();
}
public World func_175643_b()
@@ -60,12 +63,12 @@
this.field_184151_B = this.field_175743_a.func_184146_ak();
this.field_191951_C = this.field_175743_a.func_191952_z();
String s = VillageCollection.func_176062_a(this.field_73011_w);
- VillageCollection villagecollection = (VillageCollection)this.field_72988_C.func_75742_a(VillageCollection.class, s);
+ VillageCollection villagecollection = (VillageCollection)this.perWorldStorage.func_75742_a(VillageCollection.class, s);
if (villagecollection == null)
{
this.field_72982_D = new VillageCollection(this);
- this.field_72988_C.func_75745_a(s, this.field_72982_D);
+ this.perWorldStorage.func_75745_a(s, this.field_72982_D);
}
else
{
@@ -73,9 +76,18 @@
this.field_72982_D.func_82566_a(this);
}
+ this.initCapabilities();
return this;
}
+
+ @Override
+ public void func_73041_k()
+ {
+ super.func_73041_k();
+ this.field_175743_a.func_175723_af().removeListener(this.borderListener); // Unlink ourselves, to prevent world leak.
+ }
+
public void func_184166_c()
{
this.field_73011_w.func_186057_q();