You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.1 KiB
76 lines
2.1 KiB
package kcauldron.updater; |
|
|
|
import kcauldron.KCauldron; |
|
import kcauldron.KCauldronCommand; |
|
import kcauldron.updater.KVersionRetriever.IVersionCheckCallback; |
|
import net.minecraft.server.MinecraftServer; |
|
|
|
import org.bukkit.Bukkit; |
|
import org.bukkit.command.CommandSender; |
|
import org.bukkit.entity.Player; |
|
import org.bukkit.event.player.PlayerJoinEvent; |
|
|
|
public class DefaultUpdateCallback implements IVersionCheckCallback { |
|
public static DefaultUpdateCallback INSTANCE; |
|
|
|
static { |
|
INSTANCE = new DefaultUpdateCallback(); |
|
} |
|
|
|
public void onPlayerJoin(PlayerJoinEvent event) { |
|
Player player = event.getPlayer(); |
|
if (mHasUpdate && hasPermission(player)) { |
|
sendUpdate(player); |
|
} |
|
} |
|
|
|
private boolean hasPermission(CommandSender player) { |
|
return player.hasPermission(KCauldronCommand.UPDATE); |
|
} |
|
|
|
private void sendUpdate(CommandSender player) { |
|
CommandSenderUpdateCallback.newVersion(player, mCurrentVersion, |
|
mNewVersion); |
|
} |
|
|
|
private boolean mHasUpdate; |
|
private String mCurrentVersion; |
|
private String mNewVersion; |
|
|
|
private DefaultUpdateCallback() { |
|
} |
|
|
|
@Override |
|
public void upToDate() { |
|
mHasUpdate = false; |
|
mCurrentVersion = KCauldron.getCurrentVersion(); |
|
mNewVersion = null; |
|
} |
|
|
|
@Override |
|
public void newVersion(String newVersion) { |
|
mCurrentVersion = KCauldron.getCurrentVersion(); |
|
mNewVersion = newVersion; |
|
if (!mHasUpdate) { |
|
Bukkit.getConsoleSender().sendMessage( |
|
"New version of KCauldron avaiable: " + newVersion); |
|
for (Player player : Bukkit.getOnlinePlayers()) { |
|
if (hasPermission(player)) { |
|
sendUpdate(player); |
|
} |
|
} |
|
} |
|
mHasUpdate = true; |
|
if (MinecraftServer.kcauldronConfig.updatecheckerAutoinstall.getValue() |
|
&& !mNewVersion.equals(KCauldron.sNewServerVersion) |
|
&& !KCauldron.sUpdateInProgress) { |
|
Bukkit.getConsoleSender().sendMessage("Triggering auto update"); |
|
KCauldronUpdater.initUpdate(Bukkit.getConsoleSender(), newVersion); |
|
} |
|
} |
|
|
|
@Override |
|
public void error(Throwable t) { |
|
|
|
} |
|
}
|
|
|