Better save system
This commit is contained in:
		@@ -51,7 +51,6 @@ public class Board {
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		worldCoordIds.get(flocation.getWorldName()).put(flocation.getCoordString(), id);
 | 
			
		||||
		save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static void setFactionAt(Faction faction, FLocation flocation) {
 | 
			
		||||
@@ -63,7 +62,6 @@ public class Board {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		worldCoordIds.get(flocation.getWorldName()).remove(flocation.getCoordString());
 | 
			
		||||
		save();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Is this coord NOT completely surrounded by coords claimed by the same faction?
 | 
			
		||||
@@ -171,7 +169,7 @@ public class Board {
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	public static boolean save() {
 | 
			
		||||
		Factions.log("Saving board to disk");
 | 
			
		||||
		//Factions.log("Saving board to disk");
 | 
			
		||||
		
 | 
			
		||||
		try {
 | 
			
		||||
			DiscUtil.write(file, Factions.gson.toJson(worldCoordIds));
 | 
			
		||||
 
 | 
			
		||||
@@ -67,7 +67,8 @@ public class Conf {
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	public static boolean save() {
 | 
			
		||||
		Factions.log("Saving config to disk.");
 | 
			
		||||
		//Factions.log("Saving config to disk.");
 | 
			
		||||
		
 | 
			
		||||
		try {
 | 
			
		||||
			DiscUtil.write(file, Factions.gson.toJson(new Conf()));
 | 
			
		||||
		} catch (IOException e) {
 | 
			
		||||
 
 | 
			
		||||
@@ -164,7 +164,6 @@ public class FPlayer {
 | 
			
		||||
 | 
			
		||||
	public void setTitle(String title) {
 | 
			
		||||
		this.title = title;
 | 
			
		||||
		save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String getName() {
 | 
			
		||||
@@ -335,7 +334,6 @@ public class FPlayer {
 | 
			
		||||
		
 | 
			
		||||
		int millisPerMinute = 60*1000;
 | 
			
		||||
		this.alterPower(millisPassed * Conf.powerPerMinute / millisPerMinute);
 | 
			
		||||
		//this.save(); // This would save to often. So we save this on player quit instead.
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void onDeath() {
 | 
			
		||||
@@ -386,8 +384,6 @@ public class FPlayer {
 | 
			
		||||
			}
 | 
			
		||||
			Faction.delete(myFaction.getId());
 | 
			
		||||
		}
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
@@ -454,7 +450,7 @@ public class FPlayer {
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static boolean save() {
 | 
			
		||||
		Factions.log("Saving players to disk");
 | 
			
		||||
		//Factions.log("Saving players to disk");
 | 
			
		||||
		
 | 
			
		||||
		// We only wan't to save the vplayers with non default values
 | 
			
		||||
		Map<String, FPlayer> vplayersToSave = new HashMap<String, FPlayer>();
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,6 @@ public class Faction {
 | 
			
		||||
	
 | 
			
		||||
	public void setOpen(boolean isOpen) {
 | 
			
		||||
		open = isOpen;
 | 
			
		||||
		save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String getTag() {
 | 
			
		||||
@@ -79,7 +78,6 @@ public class Faction {
 | 
			
		||||
			str = str.toUpperCase();
 | 
			
		||||
		}
 | 
			
		||||
		this.tag = str;
 | 
			
		||||
		save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String getDescription() {
 | 
			
		||||
@@ -88,7 +86,6 @@ public class Faction {
 | 
			
		||||
	
 | 
			
		||||
	public void setDescription(String value) {
 | 
			
		||||
		this.description = value;
 | 
			
		||||
		save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------
 | 
			
		||||
@@ -124,7 +121,6 @@ public class Faction {
 | 
			
		||||
		} else {
 | 
			
		||||
			this.relationWish.put(otherFaction.getId(), relation);
 | 
			
		||||
		}
 | 
			
		||||
		Faction.save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public Relation getRelation(Faction otherFaction) {
 | 
			
		||||
@@ -215,18 +211,6 @@ public class Faction {
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/*
 | 
			
		||||
	public void removeFollower(FPlayer follower) {
 | 
			
		||||
		if (this.id != follower.factionId) {
 | 
			
		||||
			return; // safety check
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		this.invites.remove(follower.id);
 | 
			
		||||
		follower.resetFactionData();
 | 
			
		||||
		follower.save();
 | 
			
		||||
		this.save();		
 | 
			
		||||
	}*/
 | 
			
		||||
	
 | 
			
		||||
	public ArrayList<Player> getOnlinePlayers() {
 | 
			
		||||
		ArrayList<Player> ret = new ArrayList<Player>();
 | 
			
		||||
		for (Player player: Factions.instance.getServer().getOnlinePlayers()) {
 | 
			
		||||
@@ -314,7 +298,7 @@ public class Faction {
 | 
			
		||||
	//----------------------------------------------//
 | 
			
		||||
	
 | 
			
		||||
	public static boolean save() {
 | 
			
		||||
		Factions.log("Saving factions to disk");
 | 
			
		||||
		//Factions.log("Saving factions to disk");
 | 
			
		||||
		
 | 
			
		||||
		try {
 | 
			
		||||
			DiscUtil.write(file, Factions.gson.toJson(instances));
 | 
			
		||||
@@ -403,9 +387,5 @@ public class Faction {
 | 
			
		||||
		
 | 
			
		||||
		// Clean the fplayers
 | 
			
		||||
		FPlayer.clean();
 | 
			
		||||
		
 | 
			
		||||
		// SAVE files
 | 
			
		||||
		Board.save();
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,9 @@ import com.nijikokun.bukkit.Permissions.Permissions;
 | 
			
		||||
 | 
			
		||||
import me.taylorkelly.help.Help;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The data is saved to disk every 30min and on plugin disable.
 | 
			
		||||
 */
 | 
			
		||||
public class Factions extends JavaPlugin {
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Fields
 | 
			
		||||
@@ -136,14 +139,16 @@ public class Factions extends JavaPlugin {
 | 
			
		||||
		pm.registerEvent(Event.Type.BLOCK_PLACED, this.blockListener, Event.Priority.Normal, this);
 | 
			
		||||
		pm.registerEvent(Event.Type.BLOCK_INTERACT, this.blockListener, Event.Priority.Normal, this);
 | 
			
		||||
		
 | 
			
		||||
		// Register recurring tasks
 | 
			
		||||
		long saveTicks = 20 * 60 * 30; // Approximately every 30 min
 | 
			
		||||
		this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(), saveTicks, saveTicks);
 | 
			
		||||
		
 | 
			
		||||
		log("=== INIT DONE (Took "+(System.currentTimeMillis()-timeInitStart)+"ms) ===");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void onDisable() {
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
		Faction.save();
 | 
			
		||||
		Board.save();
 | 
			
		||||
		saveAll();
 | 
			
		||||
		log("Disabled");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -233,4 +238,14 @@ public class Factions extends JavaPlugin {
 | 
			
		||||
		Logger.getLogger("Minecraft").log(level, "["+instance.getDescription().getFullName()+"] "+msg);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	// Save all
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
	
 | 
			
		||||
	public static void saveAll() {
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
		Faction.save();
 | 
			
		||||
		Board.save();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								src/com/bukkit/mcteam/factions/SaveTask.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/com/bukkit/mcteam/factions/SaveTask.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
package com.bukkit.mcteam.factions;
 | 
			
		||||
 | 
			
		||||
public class SaveTask implements Runnable {
 | 
			
		||||
 | 
			
		||||
	//TODO are they removed on disable?
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	public void run() {
 | 
			
		||||
		Factions.saveAll();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -47,8 +47,6 @@ public class FCommandCreate extends FBaseCommand {
 | 
			
		||||
		faction.setTag(tag);
 | 
			
		||||
		me.setRole(Role.ADMIN);
 | 
			
		||||
		me.setFaction(faction);
 | 
			
		||||
		Faction.save();
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
		
 | 
			
		||||
		for (FPlayer follower : FPlayer.getAllOnline()) {
 | 
			
		||||
			follower.sendMessage(me.getNameAndRelevant(follower)+Conf.colorSystem+" created a new faction "+faction.getTag(follower));
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,6 @@ public class FCommandDeinvite extends FBaseCommand {
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		myFaction.deinvite(you);
 | 
			
		||||
		Faction.save();
 | 
			
		||||
		
 | 
			
		||||
		you.sendMessage(me.getNameAndRelevant(you)+Conf.colorSystem+" revoked your invitation to "+myFaction.getTag(you));
 | 
			
		||||
		myFaction.sendMessage(me.getNameAndRelevant(me)+Conf.colorSystem+" revoked "+you.getNameAndRelevant(me)+"'s"+Conf.colorSystem+" invitation.");
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,7 @@ public class FCommandDescription extends FBaseCommand {
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		me.getFaction().setDescription(TextUtil.implode(parameters));
 | 
			
		||||
		
 | 
			
		||||
		// Broadcast the description to everyone
 | 
			
		||||
		for (FPlayer fplayer : FPlayer.getAllOnline()) {
 | 
			
		||||
			fplayer.sendMessage("The faction "+fplayer.getRelationColor(me)+me.getFaction().getTag()+Conf.colorSystem+" changed their description to:");
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,6 @@ public class FCommandInvite extends FBaseCommand {
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		myFaction.invite(you);
 | 
			
		||||
		Faction.save();
 | 
			
		||||
		
 | 
			
		||||
		you.sendMessage(me.getNameAndRelevant(you)+Conf.colorSystem+" invited you to "+myFaction.getTag(you));
 | 
			
		||||
		myFaction.sendMessage(me.getNameAndRelevant(me)+Conf.colorSystem+" invited "+you.getNameAndRelevant(me)+Conf.colorSystem+" to your faction.");
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,6 @@ package com.bukkit.mcteam.factions.commands;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
import com.bukkit.mcteam.factions.Conf;
 | 
			
		||||
import com.bukkit.mcteam.factions.FPlayer;
 | 
			
		||||
import com.bukkit.mcteam.factions.Faction;
 | 
			
		||||
 | 
			
		||||
public class FCommandJoin extends FBaseCommand {
 | 
			
		||||
@@ -53,7 +52,6 @@ public class FCommandJoin extends FBaseCommand {
 | 
			
		||||
		me.resetFactionData();
 | 
			
		||||
		me.setFaction(faction);
 | 
			
		||||
		faction.deinvite(me);
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -51,8 +51,6 @@ public class FCommandKick extends FBaseCommand {
 | 
			
		||||
		
 | 
			
		||||
		myFaction.deinvite(you);
 | 
			
		||||
		you.resetFactionData();
 | 
			
		||||
		FPlayer.save();
 | 
			
		||||
		Faction.save();	
 | 
			
		||||
		
 | 
			
		||||
		myFaction.sendMessage(me.getNameAndRelevant(myFaction)+Conf.colorSystem+" kicked "+you.getNameAndRelevant(myFaction)+Conf.colorSystem+" from the faction! :O");
 | 
			
		||||
		you.sendMessage(me.getNameAndRelevant(you)+Conf.colorSystem+" kicked you from "+myFaction.getTag(you)+Conf.colorSystem+"! :O");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user