This commit is contained in:
MeexReay 2024-03-25 00:59:10 +03:00
parent 522cdee07f
commit c0fc86c812
5 changed files with 183 additions and 94 deletions

30
pom.xml
View File

@ -6,7 +6,7 @@
<groupId>ru.froggymonitor</groupId> <groupId>ru.froggymonitor</groupId>
<artifactId>rewardplugin</artifactId> <artifactId>rewardplugin</artifactId>
<version>1.4.1</version> <version>1.4.3</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>FroggyMonitorReward</name> <name>FroggyMonitorReward</name>
@ -89,16 +89,14 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.MilkBowl</groupId> <groupId>net.kyori</groupId>
<artifactId>VaultAPI</artifactId> <artifactId>adventure-api</artifactId>
<version>1.7</version> <version>4.16.0</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>me.clip</groupId> <groupId>net.kyori</groupId>
<artifactId>placeholderapi</artifactId> <artifactId>adventure-text-minimessage</artifactId>
<version>2.11.5</version> <version>4.16.0</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
@ -111,14 +109,16 @@
<version>4.16.0</version> <version>4.16.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>com.github.MilkBowl</groupId>
<artifactId>adventure-text-minimessage</artifactId> <artifactId>VaultAPI</artifactId>
<version>4.16.0</version> <version>1.7</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>me.clip</groupId>
<artifactId>adventure-api</artifactId> <artifactId>placeholderapi</artifactId>
<version>4.16.0</version> <version>2.11.5</version>
<scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -9,13 +9,15 @@ import org.bukkit.block.data.type.TripwireHook;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.io.File; import java.io.*;
import java.io.IOException; import java.net.HttpURLConnection;
import java.net.URI; import java.net.URI;
import java.net.URL;
import java.net.http.HttpClient; import java.net.http.HttpClient;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse; import java.net.http.HttpResponse;
@ -198,14 +200,34 @@ public final class Main extends JavaPlugin implements Listener {
"\"comment_url\": \""+start_url+comment_page+"\"}"; "\"comment_url\": \""+start_url+comment_page+"\"}";
try { try {
httpClient.send(HttpRequest.newBuilder() URL url = new URL("http://froggymonitor.ru/api/set_reward_urls");
.POST(HttpRequest.BodyPublishers.ofString(body)) HttpURLConnection connection = (HttpURLConnection) url.openConnection();
.uri(URI.create("http://froggymonitor.ru/api/set_reward_urls")) connection.setRequestMethod("POST");
.build(), HttpResponse.BodyHandlers.ofString());
} catch (IOException e) { connection.setRequestProperty("Content-Type", "application/json");
throw new RuntimeException(e); connection.setRequestProperty("Content-Length", Integer.toString(body.getBytes().length));
} catch (InterruptedException e) {
throw new RuntimeException(e); 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();
} }
} }

View File

@ -1,20 +1,20 @@
package ru.froggymonitor.rewardplugin; package ru.froggymonitor.rewardplugin;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.text.serializer.json.JSONComponentSerializer; import net.kyori.adventure.text.serializer.json.JSONComponentSerializer;
import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer; import net.md_5.bungee.chat.ComponentSerializer;
public enum MessageFormatting { public enum MessageFormatting {
AMPERSAND("ampersand", (str) -> LegacyComponentSerializer.legacyAmpersand().deserialize(str)), AMPERSAND("ampersand", (str) -> TextComponent.fromLegacyText(str.replace("&", "§"))),
SECTION("section", (str) -> LegacyComponentSerializer.legacySection().deserialize(str)), SECTION("section", (str) -> TextComponent.fromLegacyText(str)),
MINIMESSAGE("minimessage", (str) -> (TextComponent) MiniMessage.miniMessage().deserialize(str)), MINIMESSAGE("minimessage", (str) -> kyoriToBungee((net.kyori.adventure.text.TextComponent) MiniMessage.miniMessage().deserialize(str))),
JSON("json", (str) -> (TextComponent) JSONComponentSerializer.json().deserialize(str)); JSON("json", (str) -> ComponentSerializer.parse(str));
public interface MessageFormat { public interface MessageFormat {
TextComponent format(String input); BaseComponent[] format(String input);
} }
private MessageFormat format_func; private MessageFormat format_func;
@ -29,7 +29,7 @@ public enum MessageFormatting {
} }
public BaseComponent[] format(String str) { 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) { public static MessageFormatting getFormatting(String name) {
@ -40,4 +40,12 @@ public enum MessageFormatting {
} }
return SECTION; 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));
}
} }

View File

@ -6,6 +6,7 @@ import org.bukkit.Material;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -23,43 +24,85 @@ public class Reward {
} }
public void execute(String nickname) { public void execute(String nickname) {
new BukkitRunnable() {
public void run() {
// System.out.println("nickname "+nickname);
Player player = Bukkit.getPlayer(nickname); Player player = Bukkit.getPlayer(nickname);
// System.out.println("player "+player);
// System.out.println("data "+data);
if (player != null) { if (player != null) {
later(player); later(player);
} else { } else {
Main.me.cache.put(nickname, name); Main.me.cache.put(nickname, name);
} }
// System.out.println("cache "+Main.me.cache);
OfflinePlayer offlinePlayer = player != null ? player : Main.getOfflinePlayer(nickname); OfflinePlayer offlinePlayer = player != null ? player : Main.getOfflinePlayer(nickname);
// System.out.println("offlineplayer "+offlinePlayer);
if (offlinePlayer != null) { if (offlinePlayer != null) {
if (data.containsKey("vault")) { if (data.containsKey("vault")) {
// System.out.println("vault "+data.get("vault"));
try {
Main.me.giveVault(offlinePlayer, Main.me.giveVault(offlinePlayer,
((Number) data.get("vault")).doubleValue()); ((Number) data.get("vault")).doubleValue());
} catch (Exception e) {
e.printStackTrace();
}
} }
if (data.containsKey("commands")) { if (data.containsKey("commands")) {
// System.out.println("commands "+data.get("commands"));
try {
for (String c : new ArrayList<>((List<String>) data.get("commands"))) { for (String c : new ArrayList<>((List<String>) data.get("commands"))) {
if (c.startsWith("/")) c = c.substring(1); if (c.startsWith("/")) c = c.substring(1);
getServer().dispatchCommand(getServer().getConsoleSender(),PlaceholderAPI.setPlaceholders(offlinePlayer, c)); 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) { public void later(Player player) {
if (data.containsKey("item")) { if (data.containsKey("item")) {
// System.out.println("item "+data.get("item"));
try {
String[] ss = ((String)data.get("item")).split(" "); String[] ss = ((String)data.get("item")).split(" ");
ItemStack item = new ItemStack(Material.valueOf(ss[0].toUpperCase()), ss.length == 1 ? 1 : Integer.parseInt(ss[1])); ItemStack item = new ItemStack(Material.valueOf(ss[0].toUpperCase()), ss.length == 1 ? 1 : Integer.parseInt(ss[1]));
player.getInventory().addItem(item); player.getInventory().addItem(item);
} catch (Exception e) {
e.printStackTrace();
}
} }
if (data.containsKey("message")) { if (data.containsKey("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"))); player.spigot().sendMessage(Main.me.formatMessage(player, (String) data.get("message")));
} catch (Exception e) {
e.printStackTrace();
}
} }
if (data.containsKey("as_player")) { if (data.containsKey("as_player")) {
// System.out.println("as_player "+data.get("as_player"));
try {
for (String c : new ArrayList<>((List<String>) data.get("as_player"))) { for (String c : new ArrayList<>((List<String>) data.get("as_player"))) {
// System.out.println("as_player c "+c);
player.chat(c); player.chat(c);
} }
} catch (Exception e) {
e.printStackTrace();
}
} }
} }
} }

View File

@ -4,12 +4,24 @@ import com.google.common.base.Charsets;
import com.google.common.hash.Hashing; import com.google.common.hash.Hashing;
import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpServer; 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.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.util.Map; import java.util.Map;
import static org.bukkit.Bukkit.getServer;
public class SitePart extends FormDataHandler { public class SitePart extends FormDataHandler {
public HttpServer server; public HttpServer server;
@ -51,6 +63,7 @@ public class SitePart extends FormDataHandler {
String method = e.getRequestMethod(); String method = e.getRequestMethod();
String path = e.getRequestURI().getPath(); String path = e.getRequestURI().getPath();
try {
if (method.equals("GET")) { if (method.equals("GET")) {
if (path.equals(Main.me.vote_page)) { if (path.equals(Main.me.vote_page)) {
if (params.containsKey("nickname") && if (params.containsKey("nickname") &&
@ -60,7 +73,9 @@ public class SitePart extends FormDataHandler {
String timestamp = (String) params.get("timestamp"); String timestamp = (String) params.get("timestamp");
String secret = (String) params.get("secret"); String secret = (String) params.get("secret");
if (sha256(nickname + timestamp + Main.me.secret_token).equals(secret)) { String secret_gen = sha256(nickname + timestamp + Main.me.secret_token);
if (secret_gen.equals(secret)) {
Main.me.vote_reward.execute(nickname); Main.me.vote_reward.execute(nickname);
response = "ok"; response = "ok";
status_code = 200; status_code = 200;
@ -80,7 +95,9 @@ public class SitePart extends FormDataHandler {
String timestamp = (String) params.get("timestamp"); String timestamp = (String) params.get("timestamp");
String secret = (String) params.get("secret"); String secret = (String) params.get("secret");
if (sha256(username + nickname + timestamp + Main.me.secret_token).equals(secret)) { String secret_gen = sha256(username + nickname + timestamp + Main.me.secret_token);
if (secret_gen.equals(secret)) {
if (type.equals("insert")) { if (type.equals("insert")) {
Main.me.add_comment_reward.execute(nickname); Main.me.add_comment_reward.execute(nickname);
@ -101,12 +118,11 @@ public class SitePart extends FormDataHandler {
} }
} }
try {
e.sendResponseHeaders(status_code, response.length()); e.sendResponseHeaders(status_code, response.length());
OutputStream os = e.getResponseBody(); OutputStream os = e.getResponseBody();
os.write(response.getBytes()); os.write(response.getBytes());
} catch (IOException ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
} }