Rewrite LP network data saving system

Instead of creating a new file for each player with their UUID as the name, we create a single file and store it all in a List. That List gets converted to a UUID -> SoulNetwork map when read from the file.

MigrateNetworkDataHandler is used to migrate players from the old system to the new one. It reads both data files and sets the LP of the new network to the LP of the old network (if the old network is larger). Once conversion is done, we delete the old file so that it doesn't happen again and overwrite player progress.

This is an API breaking change due to an import change.
This commit is contained in:
Nicholas Ignoffo 2016-06-12 13:41:02 -07:00
parent f8859dbf56
commit f99b21cffc
40 changed files with 423 additions and 283 deletions

View file

@ -5,6 +5,8 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.eventhandler.Cancelable;
import net.minecraftforge.fml.common.eventhandler.Event;
import javax.annotation.Nullable;
/**
* Base event class for Soul Network related events.
*
@ -64,6 +66,7 @@ public class SoulNetworkEvent extends Event
@Cancelable
public static class ItemDrainNetworkEvent extends PlayerDrainNetworkEvent
{
@Nullable
public final ItemStack itemStack;
/**
* Amount of damage that would incur if the network could not drain
@ -84,7 +87,7 @@ public class SoulNetworkEvent extends Event
* @param drainAmount
* Original drain amount - change to alter cost
*/
public ItemDrainNetworkEvent(EntityPlayer player, String ownerNetwork, ItemStack itemStack, int drainAmount)
public ItemDrainNetworkEvent(EntityPlayer player, String ownerNetwork, @Nullable ItemStack itemStack, int drainAmount)
{
super(player, ownerNetwork, drainAmount);
this.itemStack = itemStack;