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