mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-27 01:05:38 +00:00
No more waiting for windows to update TFM
This commit is contained in:
parent
d5a3742849
commit
1080893be4
@ -91,6 +91,7 @@ public class TotalFreedomMod extends AeroPlugin<TotalFreedomMod>
|
|||||||
public EntityWiper ew;
|
public EntityWiper ew;
|
||||||
public FrontDoor fd;
|
public FrontDoor fd;
|
||||||
public ServerPing sp;
|
public ServerPing sp;
|
||||||
|
public Updater ud;
|
||||||
public ItemFun it;
|
public ItemFun it;
|
||||||
public Landminer lm;
|
public Landminer lm;
|
||||||
public MP44 mp;
|
public MP44 mp;
|
||||||
@ -178,7 +179,6 @@ public class TotalFreedomMod extends AeroPlugin<TotalFreedomMod>
|
|||||||
pm = services.registerService(PermbanList.class);
|
pm = services.registerService(PermbanList.class);
|
||||||
pa = services.registerService(ProtectArea.class);
|
pa = services.registerService(ProtectArea.class);
|
||||||
gr = services.registerService(GameRuleHandler.class);
|
gr = services.registerService(GameRuleHandler.class);
|
||||||
|
|
||||||
snp = services.registerService(SignBlocker.class);
|
snp = services.registerService(SignBlocker.class);
|
||||||
|
|
||||||
// Single admin utils
|
// Single admin utils
|
||||||
@ -200,6 +200,7 @@ public class TotalFreedomMod extends AeroPlugin<TotalFreedomMod>
|
|||||||
ew = services.registerService(EntityWiper.class);
|
ew = services.registerService(EntityWiper.class);
|
||||||
fd = services.registerService(FrontDoor.class);
|
fd = services.registerService(FrontDoor.class);
|
||||||
sp = services.registerService(ServerPing.class);
|
sp = services.registerService(ServerPing.class);
|
||||||
|
ud = services.registerService(Updater.class);
|
||||||
pv = services.registerService(PlayerVerification.class);
|
pv = services.registerService(PlayerVerification.class);
|
||||||
|
|
||||||
// Fun
|
// Fun
|
||||||
|
97
src/main/java/me/totalfreedom/totalfreedommod/Updater.java
Normal file
97
src/main/java/me/totalfreedom/totalfreedommod/Updater.java
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
package me.totalfreedom.totalfreedommod;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.channels.Channels;
|
||||||
|
import java.nio.channels.ReadableByteChannel;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/*
|
||||||
|
This class exists primarily due to the fact that it takes too long to get new builds onto the official
|
||||||
|
TotalFreedom server. If you wish to delete this class you may do so.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Updater extends FreedomService
|
||||||
|
{
|
||||||
|
|
||||||
|
private final String UPDATE_SERVER_URL = "https://tfm.zeroepoch1969.rip";
|
||||||
|
private final TotalFreedomMod.BuildProperties build = TotalFreedomMod.build;
|
||||||
|
public boolean updateAvailable = false;
|
||||||
|
|
||||||
|
public Updater(TotalFreedomMod plugin)
|
||||||
|
{
|
||||||
|
super(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart()
|
||||||
|
{
|
||||||
|
if (build.number != null)
|
||||||
|
{
|
||||||
|
checkForUpdates();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkForUpdates()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
URL url = new URL(UPDATE_SERVER_URL + "/build");
|
||||||
|
String webBuild = new Scanner(url.openStream()).useDelimiter("\\Z").next();
|
||||||
|
if (!build.number.equals(webBuild))
|
||||||
|
{
|
||||||
|
updateAvailable = true;
|
||||||
|
}
|
||||||
|
FLog.info((updateAvailable ? "A new update is a available!" : "TFM is up-to-date!"));
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
FLog.warning("Failed to connect to the update server.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void update()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
URL url = new URL(UPDATE_SERVER_URL + "/TotalFreedomMod.jar");
|
||||||
|
ReadableByteChannel input = Channels.newChannel(url.openStream());
|
||||||
|
FileOutputStream output = new FileOutputStream("plugins/TotalFreedomMod.jar");
|
||||||
|
FLog.info("Downloading latest version...");
|
||||||
|
output.getChannel().transferFrom(input, 0, Long.MAX_VALUE);
|
||||||
|
input.close();
|
||||||
|
output.close();
|
||||||
|
FLog.info("The latest version has been installed! Restarting server...");
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Player player : server.getOnlinePlayers())
|
||||||
|
{
|
||||||
|
player.kickPlayer("The server has restarted as TotalFreedomMod was just updated.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!plugin.amp.enabled)
|
||||||
|
{
|
||||||
|
server.shutdown();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
plugin.amp.restartServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -5,6 +5,7 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
|||||||
import me.totalfreedom.totalfreedommod.config.MainConfig;
|
import me.totalfreedom.totalfreedommod.config.MainConfig;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -14,7 +15,7 @@ import org.bukkit.entity.Player;
|
|||||||
* See https://github.com/TotalFreedom/License - This file may not be edited or removed.
|
* See https://github.com/TotalFreedom/License - This file may not be edited or removed.
|
||||||
*/
|
*/
|
||||||
@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH)
|
@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH)
|
||||||
@CommandParameters(description = "Shows information about TotalFreedomMod or reloads it", usage = "/<command> [reload]", aliases = "tfm")
|
@CommandParameters(description = "Shows information about TotalFreedomMod or reloads it", usage = "/<command> [reload | update]", aliases = "tfm")
|
||||||
public class Command_totalfreedommod extends FreedomCommand
|
public class Command_totalfreedommod extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -23,28 +24,50 @@ public class Command_totalfreedommod extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (args.length == 1)
|
if (args.length == 1)
|
||||||
{
|
{
|
||||||
if (!args[0].equals("reload"))
|
if (args[0].equals("reload"))
|
||||||
|
{
|
||||||
|
if (!plugin.al.isAdmin(sender))
|
||||||
|
{
|
||||||
|
noPerms();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.config.load();
|
||||||
|
plugin.services.stop();
|
||||||
|
plugin.services.start();
|
||||||
|
|
||||||
|
final String message = String.format("%s v%s reloaded.",
|
||||||
|
TotalFreedomMod.pluginName,
|
||||||
|
TotalFreedomMod.pluginVersion);
|
||||||
|
|
||||||
|
msg(message);
|
||||||
|
FLog.info(message);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (args[0].equals("update"))
|
||||||
|
{
|
||||||
|
if (plugin.al.isAdmin(sender) && FUtil.DEVELOPERS.contains(sender.getName()))
|
||||||
|
{
|
||||||
|
if (plugin.ud.updateAvailable)
|
||||||
|
{
|
||||||
|
FUtil.adminAction(sender.getName(), "Updating TotalFreedomMod", false);
|
||||||
|
plugin.ud.update();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg("TFM is already up to date!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
noPerms();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!plugin.al.isAdmin(sender))
|
|
||||||
{
|
|
||||||
noPerms();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
plugin.config.load();
|
|
||||||
plugin.services.stop();
|
|
||||||
plugin.services.start();
|
|
||||||
|
|
||||||
final String message = String.format("%s v%s reloaded.",
|
|
||||||
TotalFreedomMod.pluginName,
|
|
||||||
TotalFreedomMod.pluginVersion);
|
|
||||||
|
|
||||||
msg(message);
|
|
||||||
FLog.info(message);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TotalFreedomMod.BuildProperties build = TotalFreedomMod.build;
|
TotalFreedomMod.BuildProperties build = TotalFreedomMod.build;
|
||||||
|
Loading…
Reference in New Issue
Block a user