diff --git a/pom.xml b/pom.xml
index 5316a49..bdc8e1a 100755
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
ru.froggymonitor
rewardplugin
- 1.4.1
+ 1.4.3
jar
FroggyMonitorReward
@@ -89,16 +89,14 @@
provided
- com.github.MilkBowl
- VaultAPI
- 1.7
- provided
+ net.kyori
+ adventure-api
+ 4.16.0
- me.clip
- placeholderapi
- 2.11.5
- provided
+ net.kyori
+ adventure-text-minimessage
+ 4.16.0
net.kyori
@@ -111,14 +109,16 @@
4.16.0
- net.kyori
- adventure-text-minimessage
- 4.16.0
+ com.github.MilkBowl
+ VaultAPI
+ 1.7
+ provided
- net.kyori
- adventure-api
- 4.16.0
+ me.clip
+ placeholderapi
+ 2.11.5
+ provided
diff --git a/src/main/java/ru.froggymonitor/rewardplugin/Main.java b/src/main/java/ru.froggymonitor/rewardplugin/Main.java
index 07c643b..25fb860 100755
--- a/src/main/java/ru.froggymonitor/rewardplugin/Main.java
+++ b/src/main/java/ru.froggymonitor/rewardplugin/Main.java
@@ -9,13 +9,15 @@ import org.bukkit.block.data.type.TripwireHook;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
+import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
+import java.net.HttpURLConnection;
import java.net.URI;
+import java.net.URL;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
@@ -198,14 +200,34 @@ public final class Main extends JavaPlugin implements Listener {
"\"comment_url\": \""+start_url+comment_page+"\"}";
try {
- httpClient.send(HttpRequest.newBuilder()
- .POST(HttpRequest.BodyPublishers.ofString(body))
- .uri(URI.create("http://froggymonitor.ru/api/set_reward_urls"))
- .build(), HttpResponse.BodyHandlers.ofString());
- } catch (IOException e) {
- throw new RuntimeException(e);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
+ URL url = new URL("http://froggymonitor.ru/api/set_reward_urls");
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("POST");
+
+ connection.setRequestProperty("Content-Type", "application/json");
+ connection.setRequestProperty("Content-Length", Integer.toString(body.getBytes().length));
+
+ connection.setUseCaches(false);
+ connection.setDoOutput(true);
+
+ DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
+ wr.writeBytes(body);
+ wr.close();
+
+ InputStream is = connection.getInputStream();
+ BufferedReader rd = new BufferedReader(new InputStreamReader(is));
+ StringBuilder response = new StringBuilder();
+ String line;
+
+ while ((line = rd.readLine()) != null) {
+ response.append(line);
+ response.append('\r');
+ }
+ rd.close();
+
+ connection.disconnect();
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
diff --git a/src/main/java/ru.froggymonitor/rewardplugin/MessageFormatting.java b/src/main/java/ru.froggymonitor/rewardplugin/MessageFormatting.java
index 1bfd5a5..669f1b3 100644
--- a/src/main/java/ru.froggymonitor/rewardplugin/MessageFormatting.java
+++ b/src/main/java/ru.froggymonitor/rewardplugin/MessageFormatting.java
@@ -1,20 +1,20 @@
package ru.froggymonitor.rewardplugin;
-import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.text.serializer.json.JSONComponentSerializer;
import net.md_5.bungee.api.chat.BaseComponent;
+import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer;
public enum MessageFormatting {
- AMPERSAND("ampersand", (str) -> LegacyComponentSerializer.legacyAmpersand().deserialize(str)),
- SECTION("section", (str) -> LegacyComponentSerializer.legacySection().deserialize(str)),
- MINIMESSAGE("minimessage", (str) -> (TextComponent) MiniMessage.miniMessage().deserialize(str)),
- JSON("json", (str) -> (TextComponent) JSONComponentSerializer.json().deserialize(str));
+ AMPERSAND("ampersand", (str) -> TextComponent.fromLegacyText(str.replace("&", "ยง"))),
+ SECTION("section", (str) -> TextComponent.fromLegacyText(str)),
+ MINIMESSAGE("minimessage", (str) -> kyoriToBungee((net.kyori.adventure.text.TextComponent) MiniMessage.miniMessage().deserialize(str))),
+ JSON("json", (str) -> ComponentSerializer.parse(str));
public interface MessageFormat {
- TextComponent format(String input);
+ BaseComponent[] format(String input);
}
private MessageFormat format_func;
@@ -29,7 +29,7 @@ public enum MessageFormatting {
}
public BaseComponent[] format(String str) {
- return ComponentSerializer.parse(JSONComponentSerializer.json().serialize(format_func.format(str)));
+ return format_func.format(str);
}
public static MessageFormatting getFormatting(String name) {
@@ -40,4 +40,12 @@ public enum MessageFormatting {
}
return SECTION;
}
+
+ public static BaseComponent[] kyoriToBungee(net.kyori.adventure.text.TextComponent text) {
+ return ComponentSerializer.parse(JSONComponentSerializer.json().serialize(text));
+ }
+
+ public static net.kyori.adventure.text.TextComponent bungeeToKyori(BaseComponent[] text) {
+ return (net.kyori.adventure.text.TextComponent) JSONComponentSerializer.json().deserialize(ComponentSerializer.toString(text));
+ }
}
diff --git a/src/main/java/ru.froggymonitor/rewardplugin/Reward.java b/src/main/java/ru.froggymonitor/rewardplugin/Reward.java
index ac269f1..a998797 100644
--- a/src/main/java/ru.froggymonitor/rewardplugin/Reward.java
+++ b/src/main/java/ru.froggymonitor/rewardplugin/Reward.java
@@ -6,6 +6,7 @@ import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
import java.util.List;
@@ -23,42 +24,84 @@ public class Reward {
}
public void execute(String nickname) {
- Player player = Bukkit.getPlayer(nickname);
+ new BukkitRunnable() {
+ public void run() {
+// System.out.println("nickname "+nickname);
- if (player != null) {
- later(player);
- } else {
- Main.me.cache.put(nickname, name);
- }
+ Player player = Bukkit.getPlayer(nickname);
- OfflinePlayer offlinePlayer = player != null ? player : Main.getOfflinePlayer(nickname);
+// System.out.println("player "+player);
- if (offlinePlayer != null) {
- if (data.containsKey("vault")) {
- Main.me.giveVault(offlinePlayer,
- ((Number) data.get("vault")).doubleValue());
- }
- if (data.containsKey("commands")) {
- for (String c : new ArrayList<>((List) data.get("commands"))) {
- if (c.startsWith("/")) c = c.substring(1);
- getServer().dispatchCommand(getServer().getConsoleSender(),PlaceholderAPI.setPlaceholders(offlinePlayer, c));
+// System.out.println("data "+data);
+
+ if (player != null) {
+ later(player);
+ } else {
+ Main.me.cache.put(nickname, name);
+ }
+
+// System.out.println("cache "+Main.me.cache);
+
+ OfflinePlayer offlinePlayer = player != null ? player : Main.getOfflinePlayer(nickname);
+
+// System.out.println("offlineplayer "+offlinePlayer);
+
+ if (offlinePlayer != null) {
+ if (data.containsKey("vault")) {
+// System.out.println("vault "+data.get("vault"));
+ try {
+ Main.me.giveVault(offlinePlayer,
+ ((Number) data.get("vault")).doubleValue());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ if (data.containsKey("commands")) {
+// System.out.println("commands "+data.get("commands"));
+ try {
+ for (String c : new ArrayList<>((List) data.get("commands"))) {
+ if (c.startsWith("/")) c = c.substring(1);
+ getServer().dispatchCommand(getServer().getConsoleSender(),PlaceholderAPI.setPlaceholders(offlinePlayer, c));
+// System.out.println("commands c "+c);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}
}
- }
+ }.runTask(Main.me);
}
public void later(Player player) {
if (data.containsKey("item")) {
- String[] ss = ((String)data.get("item")).split(" ");
- ItemStack item = new ItemStack(Material.valueOf(ss[0].toUpperCase()), ss.length == 1 ? 1 : Integer.parseInt(ss[1]));
- player.getInventory().addItem(item);
+// System.out.println("item "+data.get("item"));
+ try {
+ String[] ss = ((String)data.get("item")).split(" ");
+ ItemStack item = new ItemStack(Material.valueOf(ss[0].toUpperCase()), ss.length == 1 ? 1 : Integer.parseInt(ss[1]));
+ player.getInventory().addItem(item);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
if (data.containsKey("message")) {
- player.spigot().sendMessage(Main.me.formatMessage(player, (String) data.get("message")));
+// System.out.println("message "+data.get("message"));
+ try {
+// System.out.println("basecomponents "+Main.me.formatMessage(player, (String) data.get("message")));
+ player.spigot().sendMessage(Main.me.formatMessage(player, (String) data.get("message")));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
if (data.containsKey("as_player")) {
- for (String c : new ArrayList<>((List) data.get("as_player"))) {
- player.chat(c);
+// System.out.println("as_player "+data.get("as_player"));
+ try {
+ for (String c : new ArrayList<>((List) data.get("as_player"))) {
+// System.out.println("as_player c "+c);
+ player.chat(c);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
}
diff --git a/src/main/java/ru.froggymonitor/rewardplugin/SitePart.java b/src/main/java/ru.froggymonitor/rewardplugin/SitePart.java
index 4ddbd6d..9b94075 100755
--- a/src/main/java/ru.froggymonitor/rewardplugin/SitePart.java
+++ b/src/main/java/ru.froggymonitor/rewardplugin/SitePart.java
@@ -4,12 +4,24 @@ import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpServer;
+import me.clip.placeholderapi.PlaceholderAPI;
+import org.bukkit.Bukkit;
+import org.bukkit.GameMode;
+import org.bukkit.Material;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.scheduler.BukkitRunnable;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.net.InetSocketAddress;
import java.util.Map;
+import static org.bukkit.Bukkit.getServer;
+
public class SitePart extends FormDataHandler {
public HttpServer server;
@@ -51,62 +63,66 @@ public class SitePart extends FormDataHandler {
String method = e.getRequestMethod();
String path = e.getRequestURI().getPath();
- if (method.equals("GET")) {
- if (path.equals(Main.me.vote_page)) {
- if (params.containsKey("nickname") &&
- params.containsKey("timestamp") &&
- params.containsKey("secret")) {
- String nickname = (String) params.get("nickname");
- String timestamp = (String) params.get("timestamp");
- String secret = (String) params.get("secret");
+ try {
+ if (method.equals("GET")) {
+ if (path.equals(Main.me.vote_page)) {
+ if (params.containsKey("nickname") &&
+ params.containsKey("timestamp") &&
+ params.containsKey("secret")) {
+ String nickname = (String) params.get("nickname");
+ String timestamp = (String) params.get("timestamp");
+ String secret = (String) params.get("secret");
- if (sha256(nickname + timestamp + Main.me.secret_token).equals(secret)) {
- Main.me.vote_reward.execute(nickname);
- response = "ok";
- status_code = 200;
+ String secret_gen = sha256(nickname + timestamp + Main.me.secret_token);
- if (Main.me.enable_logs) Main.me.getLogger().info("Reward \"vote\" gave to player "+nickname);
+ if (secret_gen.equals(secret)) {
+ Main.me.vote_reward.execute(nickname);
+ response = "ok";
+ status_code = 200;
+
+ if (Main.me.enable_logs) Main.me.getLogger().info("Reward \"vote\" gave to player "+nickname);
+ }
}
- }
- } else if (path.equals(Main.me.comment_page)) {
- if (params.containsKey("nickname") &&
- params.containsKey("type") &&
- params.containsKey("username") &&
- params.containsKey("timestamp") &&
- params.containsKey("secret")) {
- String type = (String) params.get("type");
- String username = (String) params.get("username");
- String nickname = (String) params.get("nickname");
- String timestamp = (String) params.get("timestamp");
- String secret = (String) params.get("secret");
+ } else if (path.equals(Main.me.comment_page)) {
+ if (params.containsKey("nickname") &&
+ params.containsKey("type") &&
+ params.containsKey("username") &&
+ params.containsKey("timestamp") &&
+ params.containsKey("secret")) {
+ String type = (String) params.get("type");
+ String username = (String) params.get("username");
+ String nickname = (String) params.get("nickname");
+ String timestamp = (String) params.get("timestamp");
+ String secret = (String) params.get("secret");
- if (sha256(username + nickname + timestamp + Main.me.secret_token).equals(secret)) {
- if (type.equals("insert")) {
- Main.me.add_comment_reward.execute(nickname);
+ String secret_gen = sha256(username + nickname + timestamp + Main.me.secret_token);
- response = "ok";
- status_code = 200;
+ if (secret_gen.equals(secret)) {
+ if (type.equals("insert")) {
+ Main.me.add_comment_reward.execute(nickname);
- if (Main.me.enable_logs) Main.me.getLogger().info("Reward \"add_comment\" gave to player "+nickname);
- } else if (type.equals("delete")) {
- Main.me.del_comment_reward.execute(nickname);
+ response = "ok";
+ status_code = 200;
- response = "ok";
- status_code = 200;
+ if (Main.me.enable_logs) Main.me.getLogger().info("Reward \"add_comment\" gave to player "+nickname);
+ } else if (type.equals("delete")) {
+ Main.me.del_comment_reward.execute(nickname);
- if (Main.me.enable_logs) Main.me.getLogger().info("Reward \"del_comment\" gave to player "+nickname);
+ response = "ok";
+ status_code = 200;
+
+ if (Main.me.enable_logs) Main.me.getLogger().info("Reward \"del_comment\" gave to player "+nickname);
+ }
}
}
}
}
- }
- try {
e.sendResponseHeaders(status_code, response.length());
OutputStream os = e.getResponseBody();
os.write(response.getBytes());
- } catch (IOException ex) {
+ } catch (Exception ex) {
ex.printStackTrace();
}
}