mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 08:17:35 +00:00
Introduced Capabilities for World (#3069)
This commit is contained in:
1 parent
b5db198f8b
commit
bfddcfb4fc
9 files changed
+387
-87
No files matched your search
@@ -0,0 +1,57 @@
|
||||
package net.minecraftforge.common.util;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.WorldProvider;
|
||||
import net.minecraft.world.WorldSavedData;
|
||||
|
||||
public class WorldCapabilityData extends WorldSavedData
|
||||
{
|
||||
public static final String ID = "capabilities";
|
||||
|
||||
private INBTSerializable<NBTTagCompound> serializable;
|
||||
private NBTTagCompound capNBT = null;
|
||||
|
||||
public WorldCapabilityData(String name)
|
||||
{
|
||||
super(name);
|
||||
}
|
||||
|
||||
public WorldCapabilityData(INBTSerializable<NBTTagCompound> serializable)
|
||||
{
|
||||
super(ID);
|
||||
this.serializable = serializable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt)
|
||||
{
|
||||
this.capNBT = nbt;
|
||||
if(serializable != null)
|
||||
{
|
||||
serializable.deserializeNBT(this.capNBT);
|
||||
this.capNBT = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound nbt)
|
||||
{
|
||||
return nbt = serializable.serializeNBT();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDirty()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setCapabilities(WorldProvider provider, INBTSerializable<NBTTagCompound> capabilities)
|
||||
{
|
||||
this.serializable = capabilities;
|
||||
if(this.capNBT != null)
|
||||
{
|
||||
serializable.deserializeNBT(this.capNBT);
|
||||
this.capNBT = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -133,4 +133,21 @@ public class AttachCapabilitiesEvent extends Event
|
||||
return this.stack;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of the parent event which is only fired for Worlds.
|
||||
*/
|
||||
public static class World extends AttachCapabilitiesEvent
|
||||
{
|
||||
private final net.minecraft.world.World world;
|
||||
public World(net.minecraft.world.World world)
|
||||
{
|
||||
super(world);
|
||||
this.world = world;
|
||||
}
|
||||
public net.minecraft.world.World getWorld()
|
||||
{
|
||||
return this.world;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -525,6 +525,10 @@ public class ForgeEventFactory
|
||||
return gatherCapabilities(new AttachCapabilitiesEvent.Item(item, stack), parent);
|
||||
}
|
||||
|
||||
public static CapabilityDispatcher gatherCapabilities(World world, ICapabilityProvider parent) {
|
||||
return gatherCapabilities(new AttachCapabilitiesEvent.World(world), parent);
|
||||
}
|
||||
|
||||
private static CapabilityDispatcher gatherCapabilities(AttachCapabilitiesEvent event, ICapabilityProvider parent)
|
||||
{
|
||||
MinecraftForge.EVENT_BUS.post(event);
|
||||
|
||||
Reference in new issue
Block a user