mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-02 00:30:07 +01:00
Version updater code.
This commit is contained in:
parent
9da14a9163
commit
a0be77fe4f
@ -16,11 +16,16 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
@ -59,6 +64,7 @@ public class mcMMO extends JavaPlugin
|
|||||||
|
|
||||||
public static String maindirectory = "plugins" + File.separator + "mcMMO";
|
public static String maindirectory = "plugins" + File.separator + "mcMMO";
|
||||||
File file = new File(maindirectory + File.separator + "config.yml");
|
File file = new File(maindirectory + File.separator + "config.yml");
|
||||||
|
static File versionFile = new File(maindirectory + File.separator + "VERSION");
|
||||||
public static final Logger log = Logger.getLogger("Minecraft");
|
public static final Logger log = Logger.getLogger("Minecraft");
|
||||||
private final mcPlayerListener playerListener = new mcPlayerListener(this);
|
private final mcPlayerListener playerListener = new mcPlayerListener(this);
|
||||||
private final mcBlockListener blockListener = new mcBlockListener(this);
|
private final mcBlockListener blockListener = new mcBlockListener(this);
|
||||||
@ -81,6 +87,20 @@ public class mcMMO extends JavaPlugin
|
|||||||
{
|
{
|
||||||
new File(maindirectory).mkdir();
|
new File(maindirectory).mkdir();
|
||||||
|
|
||||||
|
if(!versionFile.exists()) {
|
||||||
|
updateVersion();
|
||||||
|
} else {
|
||||||
|
String vnum = readVersion();
|
||||||
|
//This will be changed to whatever version preceded when we actually need updater code.
|
||||||
|
//Version 1.0.48 is the first to implement this, no checking before that version can be done.
|
||||||
|
if(vnum.equalsIgnoreCase("1.0.48")) {
|
||||||
|
updateFrom(1);
|
||||||
|
}
|
||||||
|
//Just add in more else if blocks for versions that need updater code. Increment the updateFrom age int as we do so.
|
||||||
|
//Catch all for versions not matching and no specific code being needed
|
||||||
|
else if(!vnum.equalsIgnoreCase(this.getDescription().getVersion())) updateFrom(-1);
|
||||||
|
}
|
||||||
|
|
||||||
mcPermissions.initialize(getServer());
|
mcPermissions.initialize(getServer());
|
||||||
config.configCheck();
|
config.configCheck();
|
||||||
|
|
||||||
@ -1437,6 +1457,60 @@ public class mcMMO extends JavaPlugin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* It is important to always assume that you are updating from the lowest possible version.
|
||||||
|
* Thus, every block of updater code should be complete and self-contained; finishing all
|
||||||
|
* SQL transactions and closing all file handlers, such that the next block of updater code
|
||||||
|
* if called will handle updating as expected.
|
||||||
|
*/
|
||||||
|
public void updateFrom(int age) {
|
||||||
|
//No updater code needed, just update the version.
|
||||||
|
if(age == -1) {
|
||||||
|
updateVersion();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Updater code from age 1 goes here
|
||||||
|
if(age <= 1) {
|
||||||
|
//Since age 1 is an example for now, we will just let it do nothing.
|
||||||
|
|
||||||
|
}
|
||||||
|
//If we are updating from age 1 but we need more to reach age 2, this will run too.
|
||||||
|
if(age <= 2) {
|
||||||
|
|
||||||
|
}
|
||||||
|
updateVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateVersion() {
|
||||||
|
try {
|
||||||
|
versionFile.createNewFile();
|
||||||
|
BufferedWriter vout = new BufferedWriter(new FileWriter(versionFile));
|
||||||
|
vout.write(this.getDescription().getVersion());
|
||||||
|
vout.close();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} catch (SecurityException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String readVersion() {
|
||||||
|
byte[] buffer = new byte[(int) versionFile.length()];
|
||||||
|
BufferedInputStream f = null;
|
||||||
|
try {
|
||||||
|
f = new BufferedInputStream(new FileInputStream(versionFile));
|
||||||
|
f.read(buffer);
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (f != null) try { f.close(); } catch (IOException ignored) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
return new String(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
public Player getPlayer(String playerName){
|
public Player getPlayer(String playerName){
|
||||||
for(Player herp : getPlayersOnline()){
|
for(Player herp : getPlayersOnline()){
|
||||||
if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
|
if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
|
||||||
|
Loading…
Reference in New Issue
Block a user