1
0
mirror of https://github.com/nkomarn/harbor.git synced 2024-11-16 07:05:22 +01:00

Update notifier message on join!

This commit is contained in:
BuildTools 2019-03-06 20:12:59 -08:00
parent cf4e586677
commit d2431bd56d
8 changed files with 73 additions and 38 deletions

View File

@ -61,7 +61,7 @@ messages:
# Shown when a player tries to sleep and sleeping is blocked # Shown when a player tries to sleep and sleeping is blocked
blocked: "&cSleeping is disabled." blocked: "&cSleeping is disabled."
miscellaneous: miscellaneous:
# Prefix for Harbor command messages # Prefix for Harbor command/miscellaneous messages
prefix: "&8&l(&6&lHarbor&8&l) " prefix: "&8&l(&6&lHarbor&8&l) "
# Display server version in console # Display server version in console
running: "&7Running on version [version]." running: "&7Running on version [version]."

View File

@ -1,7 +0,0 @@
package mykyta.Harbor.Actionbar;
import org.bukkit.entity.Player;
public interface Actionbar {
public void sendActionbar(Player player, String message);
}

View File

@ -0,0 +1,23 @@
package mykyta.Harbor.Events;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import mykyta.Harbor.Config;
import mykyta.Harbor.Updater;
import mykyta.Harbor.Util;
public class PlayerJoin implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Updater updater = new Updater();
Config config = new Config();
Util util = new Util();
String json = "[{\"text\":\"[prefix]§7Hey there, Harbor [version] was released! \"},{\"text\":\"§7§oClick §7§ome §7§oto §7§oupdate!\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/harbor update\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"§a§l↑ §7Update Harbor.\"}}]";
if (event.getPlayer().isOp() && updater.check()) util.sendJSONMessage(event.getPlayer(), json.replace("[version]", updater.getLatest()).replace("[prefix]", config.getString("messages.miscellaneous.prefix")).replace("&", "§"));
}
}

View File

@ -7,6 +7,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import mykyta.Harbor.Events.BedEnter; import mykyta.Harbor.Events.BedEnter;
import mykyta.Harbor.Events.BedLeave; import mykyta.Harbor.Events.BedLeave;
import mykyta.Harbor.Events.PlayerJoin;
public class Harbor extends JavaPlugin { public class Harbor extends JavaPlugin {
private Logger log = Bukkit.getLogger(); private Logger log = Bukkit.getLogger();
@ -19,6 +20,7 @@ public class Harbor extends JavaPlugin {
saveDefaultConfig(); saveDefaultConfig();
Bukkit.getPluginManager().registerEvents(new BedEnter(), this); Bukkit.getPluginManager().registerEvents(new BedEnter(), this);
Bukkit.getPluginManager().registerEvents(new BedLeave(), this); Bukkit.getPluginManager().registerEvents(new BedLeave(), this);
if (config.getBoolean("features.notifier")) Bukkit.getPluginManager().registerEvents(new PlayerJoin(), this);
util.setupNMS(); util.setupNMS();
// Check for updates // Check for updates

View File

@ -0,0 +1,8 @@
package mykyta.Harbor.NMS;
import org.bukkit.entity.Player;
public interface NMS {
public void sendActionbar(Player player, String message);
public void sendJSONMessage(Player player, String json);
}

View File

@ -1,17 +1,26 @@
package mykyta.Harbor.Actionbar; package mykyta.Harbor.NMS;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import net.minecraft.server.v1_13_R2.IChatBaseComponent; import net.minecraft.server.v1_13_R2.IChatBaseComponent;
import net.minecraft.server.v1_13_R2.PacketPlayOutChat;
import net.minecraft.server.v1_13_R2.PacketPlayOutTitle; import net.minecraft.server.v1_13_R2.PacketPlayOutTitle;
import net.minecraft.server.v1_13_R2.IChatBaseComponent.ChatSerializer;
public class Actionbar_1_13_R2 implements Actionbar { public class NMS_1_13_R2 implements NMS {
@Override @Override
public void sendActionbar(Player player, String message) { public void sendActionbar(Player player, String message) {
IChatBaseComponent titleComponent = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', message) + "\"}"); IChatBaseComponent titleComponent = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', message) + "\"}");
PacketPlayOutTitle titlePacket = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.ACTIONBAR, titleComponent); PacketPlayOutTitle titlePacket = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.ACTIONBAR, titleComponent);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(titlePacket); ((CraftPlayer) player).getHandle().playerConnection.sendPacket(titlePacket);
} }
@Override
public void sendJSONMessage(Player player, String json) {
IChatBaseComponent component = ChatSerializer.a(json);
PacketPlayOutChat packet = new PacketPlayOutChat(component);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
} }

View File

@ -13,6 +13,8 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
public class Updater { public class Updater {
private String latest = "";
/** /**
* Checks for an update using the Spiget API * Checks for an update using the Spiget API
* @see https://spiget.org/ * @see https://spiget.org/
@ -44,32 +46,21 @@ public class Updater {
return false; return false;
} }
else { else {
System.out.println("Running an outdated version! Latest is " + releases.get(releases.size() - 1)); latest = releases.get(releases.size() - 1);
System.out.println("Running an outdated version! Latest is " + latest);
return true; return true;
} }
/*
int current = Integer.parseInt(String.valueOf(util.version).replace(".", ""));
int latest = releases.get(releases.size() - 1);
System.out.println("Current version: " + current);
System.out.println("Latest release: " + latest);
if (util.version < latest) {
System.out.println("Update available! Version " + String.valueOf(latest));
return true;
}
else if (util.version < latest) {
System.out.println("Hmm... you're using some sort of time travel technology (your version is newer than the latest release). Welp, at least you don't have updates to worry about any time soon.");
return true;
}
else {
System.out.println("Using the latest version.");
return false;
} */
} }
catch (IOException e) { catch (IOException e) {
System.out.println("Failed to check for updates."); System.out.println("Failed to check for updates.");
return false; return false;
} }
} }
/**
* Returns the latest version number
*/
public String getLatest() {
return latest;
}
} }

View File

@ -8,16 +8,16 @@ import org.bukkit.GameMode;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import mykyta.Harbor.Actionbar.Actionbar; import mykyta.Harbor.NMS.NMS;
import mykyta.Harbor.Actionbar.Actionbar_1_13_R2; import mykyta.Harbor.NMS.NMS_1_13_R2;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
public class Util { public class Util {
public static HashMap<World, Integer> sleeping = new HashMap<World, Integer>(); public static HashMap<World, Integer> sleeping = new HashMap<World, Integer>();
public String version = "1.5"; public String version = "1.4.2";
public static boolean debug = false; public static boolean debug = false;
private Logger log = Bukkit.getLogger(); private Logger log = Bukkit.getLogger();
private static Actionbar actionbar; private static NMS nms;
Config config = new Config(); Config config = new Config();
/** /**
@ -33,7 +33,7 @@ public class Util {
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', config.getString("messages.miscellaneous.prefix") + config.getString("messages.miscellaneous.running").replace("[version]", version))); Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', config.getString("messages.miscellaneous.prefix") + config.getString("messages.miscellaneous.running").replace("[version]", version)));
if (version.equals("v1_13_R2")) { if (version.equals("v1_13_R2")) {
actionbar = new Actionbar_1_13_R2(); nms = new NMS_1_13_R2();
} }
} }
@ -76,7 +76,7 @@ public class Util {
* @param message Actionbar message with color codes * @param message Actionbar message with color codes
*/ */
public void sendActionbar(Player player, String message) { public void sendActionbar(Player player, String message) {
actionbar.sendActionbar(player, message); nms.sendActionbar(player, message);
} }
/** /**
@ -88,7 +88,7 @@ public class Util {
*/ */
public void sendActionbar(Player player, String message, World world) { public void sendActionbar(Player player, String message, World world) {
Config config = new Config(); Config config = new Config();
actionbar.sendActionbar(player, message nms.sendActionbar(player, message
.replace("[sleeping]", String.valueOf(sleeping.get(world))) .replace("[sleeping]", String.valueOf(sleeping.get(world)))
//TODO add bypassers functionaliyt .replace("[online]", String.valueOf(world.getPlayers().size() - bypassers.size())) //TODO add bypassers functionaliyt .replace("[online]", String.valueOf(world.getPlayers().size() - bypassers.size()))
// .replace("[needed]", String.valueOf(Math.max(0, Math.round(world.getPlayers().size() * Float.parseFloat(plugin.getConfig().getString("values.percent")) - bypassers.size() - ((Integer)worlds.get(world)).intValue()))))); // .replace("[needed]", String.valueOf(Math.max(0, Math.round(world.getPlayers().size() * Float.parseFloat(plugin.getConfig().getString("values.percent")) - bypassers.size() - ((Integer)worlds.get(world)).intValue())))));
@ -96,6 +96,15 @@ public class Util {
.replace("[needed]", String.valueOf(Math.max(0, Math.round(world.getPlayers().size() * Float.parseFloat(config.getString("values.percent")) - (sleeping.get(world)).intValue()))))); .replace("[needed]", String.valueOf(Math.max(0, Math.round(world.getPlayers().size() * Float.parseFloat(config.getString("values.percent")) - (sleeping.get(world)).intValue())))));
} }
/**
* Sends a custom JSON message to selected player
* @param player Player to send message to
* @param JSON Message in JSON format
*/
public void sendJSONMessage(Player player, String JSON) {
nms.sendJSONMessage(player, JSON);
}
/** /**
* Returns true if player is in survival mode * Returns true if player is in survival mode
* @param player Target player * @param player Target player