package joshie.progression.network;
import io.netty.buffer.ByteBuf;
import joshie.progression.Progression;
import joshie.progression.handlers.RemappingHandler;
import joshie.progression.helpers.MCClientHelper;
import joshie.progression.helpers.PlayerHelper;
import joshie.progression.json.JSONLoader;
import joshie.progression.json.Options;
import joshie.progression.network.core.PenguinPacket;
import joshie.progression.player.PlayerTracker;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.text.TextComponentString;
import net.minecraftforge.fml.common.network.ByteBufUtils;
@Packet
public class PacketReset extends PenguinPacket {
private boolean singlePlayer;
private String username;
public PacketReset() {
singlePlayer = false;
}
public PacketReset(String string) {
singlePlayer = true;
username = string;
}
@Override
public void handlePacket(EntityPlayer player) {
PacketReset.handle(player, singlePlayer, username);
}
@Override
public void toBytes(ByteBuf to) {
to.writeBoolean(singlePlayer);
if (singlePlayer) {
ByteBufUtils.writeUTF8String(to, username);
}
}
@Override
public void fromBytes(ByteBuf from) {
singlePlayer = from.readBoolean();
if (singlePlayer) {
username = ByteBufUtils.readUTF8String(from);
}
}
public static void handle(EntityPlayer sender, boolean singlePlayer, String username) {
if (sender.worldObj.isRemote) {
if (!singlePlayer) MCClientHelper.getPlayer().addChatComponentMessage(new TextComponentString("All player data for Progression was reset."));
else MCClientHelper.getPlayer().addChatComponentMessage(new TextComponentString("All player data for " + username + " was reset."));
} else {
if (Options.editor) {
if (!singlePlayer) {
if (Options.hardReset) Progression.instance.createWorldData(); //Recreate the world data, Wiping out any saved information for players
else Progression.data.clear();
RemappingHandler.reloadServerData(JSONLoader.getServerTabData(RemappingHandler.getHostName()), false);
for (EntityPlayerMP player : PlayerHelper.getAllPlayers()) {
//Reset all the data to default
RemappingHandler.onPlayerConnect(player);
}
PacketHandler.sendToEveryone(new PacketReset());
} else {
if (PlayerTracker.reset(username) && sender instanceof EntityPlayerMP) {
PacketHandler.sendToClient(new PacketReset(username), sender);
}
}
}
}
}
}