nosingleplayer: fix crash Shadow (listes+accesseur), retire RenderMixin en double
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
package net.paladrill.paladrillmod;
|
||||
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||
|
||||
import net.minecraft.world.storage.WorldSavedData;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public class PaladrillmodModVariables {
|
||||
public static class MapVariables extends WorldSavedData {
|
||||
public static final String DATA_NAME = "paladrillmod_mapvars";
|
||||
public boolean CoffreNord = false;
|
||||
public double UnclaimFindersFetcher = 0;
|
||||
public boolean HideUnclaimfinder = false;
|
||||
public double chancePalaCrusher = 0;
|
||||
public boolean isGreenUnclaimFinderInHand = false;
|
||||
public boolean isOrangeUnclaimFinderInHand = false;
|
||||
public MapVariables() {
|
||||
super(DATA_NAME);
|
||||
}
|
||||
|
||||
public MapVariables(String s) {
|
||||
super(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
CoffreNord = nbt.getBoolean("CoffreNord");
|
||||
UnclaimFindersFetcher = nbt.getDouble("UnclaimFindersFetcher");
|
||||
HideUnclaimfinder = nbt.getBoolean("HideUnclaimfinder");
|
||||
chancePalaCrusher = nbt.getDouble("chancePalaCrusher");
|
||||
isGreenUnclaimFinderInHand = nbt.getBoolean("isGreenUnclaimFinderInHand");
|
||||
isOrangeUnclaimFinderInHand = nbt.getBoolean("isOrangeUnclaimFinderInHand");
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
|
||||
nbt.setBoolean("CoffreNord", CoffreNord);
|
||||
nbt.setDouble("UnclaimFindersFetcher", UnclaimFindersFetcher);
|
||||
nbt.setBoolean("HideUnclaimfinder", HideUnclaimfinder);
|
||||
nbt.setDouble("chancePalaCrusher", chancePalaCrusher);
|
||||
nbt.setBoolean("isGreenUnclaimFinderInHand", isGreenUnclaimFinderInHand);
|
||||
nbt.setBoolean("isOrangeUnclaimFinderInHand", isOrangeUnclaimFinderInHand);
|
||||
return nbt;
|
||||
}
|
||||
|
||||
public void syncData(World world) {
|
||||
this.markDirty();
|
||||
if (world.isRemote) {
|
||||
PaladrillmodMod.PACKET_HANDLER.sendToServer(new WorldSavedDataSyncMessage(0, this));
|
||||
} else {
|
||||
PaladrillmodMod.PACKET_HANDLER.sendToAll(new WorldSavedDataSyncMessage(0, this));
|
||||
}
|
||||
}
|
||||
|
||||
public static MapVariables get(World world) {
|
||||
MapVariables instance = (MapVariables) world.getMapStorage().getOrLoadData(MapVariables.class, DATA_NAME);
|
||||
if (instance == null) {
|
||||
instance = new MapVariables();
|
||||
world.getMapStorage().setData(DATA_NAME, instance);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public static class WorldVariables extends WorldSavedData {
|
||||
public static final String DATA_NAME = "paladrillmod_worldvars";
|
||||
public WorldVariables() {
|
||||
super(DATA_NAME);
|
||||
}
|
||||
|
||||
public WorldVariables(String s) {
|
||||
super(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
|
||||
return nbt;
|
||||
}
|
||||
|
||||
public void syncData(World world) {
|
||||
this.markDirty();
|
||||
if (world.isRemote) {
|
||||
PaladrillmodMod.PACKET_HANDLER.sendToServer(new WorldSavedDataSyncMessage(1, this));
|
||||
} else {
|
||||
PaladrillmodMod.PACKET_HANDLER.sendToDimension(new WorldSavedDataSyncMessage(1, this), world.provider.getDimension());
|
||||
}
|
||||
}
|
||||
|
||||
public static WorldVariables get(World world) {
|
||||
WorldVariables instance = (WorldVariables) world.getPerWorldStorage().getOrLoadData(WorldVariables.class, DATA_NAME);
|
||||
if (instance == null) {
|
||||
instance = new WorldVariables();
|
||||
world.getPerWorldStorage().setData(DATA_NAME, instance);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public static class WorldSavedDataSyncMessageHandler implements IMessageHandler<WorldSavedDataSyncMessage, IMessage> {
|
||||
@Override
|
||||
public IMessage onMessage(WorldSavedDataSyncMessage message, MessageContext context) {
|
||||
if (context.side == Side.SERVER)
|
||||
context.getServerHandler().player.getServerWorld()
|
||||
.addScheduledTask(() -> syncData(message, context, context.getServerHandler().player.world));
|
||||
else
|
||||
Minecraft.getMinecraft().addScheduledTask(() -> syncData(message, context, Minecraft.getMinecraft().player.world));
|
||||
return null;
|
||||
}
|
||||
|
||||
private void syncData(WorldSavedDataSyncMessage message, MessageContext context, World world) {
|
||||
if (context.side == Side.SERVER) {
|
||||
message.data.markDirty();
|
||||
if (message.type == 0)
|
||||
PaladrillmodMod.PACKET_HANDLER.sendToAll(message);
|
||||
else
|
||||
PaladrillmodMod.PACKET_HANDLER.sendToDimension(message, world.provider.getDimension());
|
||||
}
|
||||
if (message.type == 0) {
|
||||
world.getMapStorage().setData(MapVariables.DATA_NAME, message.data);
|
||||
} else {
|
||||
world.getPerWorldStorage().setData(WorldVariables.DATA_NAME, message.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class WorldSavedDataSyncMessage implements IMessage {
|
||||
public int type;
|
||||
public WorldSavedData data;
|
||||
public WorldSavedDataSyncMessage() {
|
||||
}
|
||||
|
||||
public WorldSavedDataSyncMessage(int type, WorldSavedData data) {
|
||||
this.type = type;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(io.netty.buffer.ByteBuf buf) {
|
||||
buf.writeInt(this.type);
|
||||
ByteBufUtils.writeTag(buf, this.data.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(io.netty.buffer.ByteBuf buf) {
|
||||
this.type = buf.readInt();
|
||||
if (this.type == 0)
|
||||
this.data = new MapVariables();
|
||||
else
|
||||
this.data = new WorldVariables();
|
||||
this.data.readFromNBT(ByteBufUtils.readTag(buf));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user