ForgePatch/patches/minecraft/net/minecraft/world/World.java.patch

56 lines
2.4 KiB
Diff

--- a/net/minecraft/world/World.java
+++ b/net/minecraft/world/World.java
@@ -68,10 +68,11 @@
import net.minecraft.world.storage.WorldSavedDataStorage;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
+
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-public abstract class World implements IWorld, IWorldReader, AutoCloseable {
+public abstract class World extends net.minecraftforge.common.capabilities.CapabilityProvider implements IWorld, IWorldReader, AutoCloseable, net.minecraftforge.common.extensions.IForgeWorld {
protected static final Logger field_195596_d = LogManager.getLogger();
private static final EnumFacing[] field_200007_a = EnumFacing.values();
private int field_181546_a = 63;
@@ -121,6 +122,7 @@
this.field_73011_w = p_i45749_3_;
this.field_72995_K = p_i45749_5_;
this.field_175728_M = p_i45749_3_.func_177501_r();
+ perWorldStorage = new WorldSavedDataStorage((ISaveHandler)null);
}
public IWorld func_175643_b() {
@@ -2397,4 +2399,31 @@
public abstract RecipeManager func_199532_z();
public abstract NetworkTagManager func_205772_D();
+
+ /* ======================================== FORGE START =====================================*/
+
+ private net.minecraftforge.common.util.WorldCapabilityData capabilityData;
+
+ protected void initCapabilities()
+ {
+ net.minecraftforge.common.capabilities.ICapabilityProvider parent = field_73011_w.initCapabilities();
+ this.gatherCapabilities(parent);
+ net.minecraftforge.common.util.WorldCapabilityData data = (net.minecraftforge.common.util.WorldCapabilityData)perWorldStorage.func_201067_a(net.minecraftforge.common.util.WorldCapabilityData::new, net.minecraftforge.common.util.WorldCapabilityData.ID);
+ if (data == null)
+ {
+ capabilityData = new net.minecraftforge.common.util.WorldCapabilityData(getCapabilities());
+ perWorldStorage.func_75745_a(capabilityData.func_195925_e(), capabilityData);
}
+ else
+ {
+ capabilityData = data;
+ capabilityData.setCapabilities(field_73011_w, getCapabilities());
+ }
+ }
+
+ protected WorldSavedDataStorage perWorldStorage; //Moved to a getter to simulate final without being final so we can load in subclasses.
+ public WorldSavedDataStorage getPerWorldStorage()
+ {
+ return perWorldStorage;
+ }
+}