Compare commits
No commits in common. "b08fb8e5a4c2776ed506d12e0af791ecdfdfe0b1" and "2df9d0c2938f4791910131df1ab2070cfdcf0bc1" have entirely different histories.
b08fb8e5a4
...
2df9d0c293
8
TODO.md
8
TODO.md
@ -1,8 +0,0 @@
|
|||||||
# TODO list
|
|
||||||
|
|
||||||
- [ ] i18n
|
|
||||||
- [-] Make Discord Webhoook for item changes
|
|
||||||
- [x] deathBan reset
|
|
||||||
- [ ] voids exchanges
|
|
||||||
- [ ] chest name
|
|
||||||
- [ ] /void manage bring
|
|
@ -2,7 +2,6 @@ package ovh.herisson.thevoidroad.Commands;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -15,7 +14,6 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import ovh.herisson.thevoidroad.DatabaseManager;
|
import ovh.herisson.thevoidroad.DatabaseManager;
|
||||||
import ovh.herisson.thevoidroad.DiscordWebhook;
|
|
||||||
import ovh.herisson.thevoidroad.TheVoidRoad;
|
import ovh.herisson.thevoidroad.TheVoidRoad;
|
||||||
import ovh.herisson.thevoidroad.Voids;
|
import ovh.herisson.thevoidroad.Voids;
|
||||||
import ovh.herisson.thevoidroad.Entity.Merchand;
|
import ovh.herisson.thevoidroad.Entity.Merchand;
|
||||||
@ -42,11 +40,8 @@ public class VoidCommands implements CommandExecutor, TabCompleter{
|
|||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
case "give":
|
case "give":
|
||||||
if(args.length < 2) return false;
|
//TODO(Balance): Give to a player
|
||||||
Player target = Bukkit.getPlayer(args[1]);
|
return true;
|
||||||
if(target != null && sender instanceof Player ply)
|
|
||||||
Voids.give(ply,target, Integer.parseInt(args[2]));
|
|
||||||
break;
|
|
||||||
case "event":
|
case "event":
|
||||||
//TODO(event) manage event
|
//TODO(event) manage event
|
||||||
return true;
|
return true;
|
||||||
@ -63,25 +58,8 @@ public class VoidCommands implements CommandExecutor, TabCompleter{
|
|||||||
case "reset":
|
case "reset":
|
||||||
DatabaseManager.getInstance().setConfig("init", "false");
|
DatabaseManager.getInstance().setConfig("init", "false");
|
||||||
break;
|
break;
|
||||||
case "unban":
|
|
||||||
UUID target_uuid = Bukkit.getPlayerUniqueId(args[2]);
|
|
||||||
DatabaseManager.getInstance().unban(target_uuid);
|
|
||||||
return true;
|
|
||||||
case "skip":
|
case "skip":
|
||||||
//TODO(Merchand): Skip trade
|
//TODO(Merchand): Skip trade
|
||||||
break;
|
|
||||||
case "discord":
|
|
||||||
String link = DatabaseManager.getInstance().getConfig("discord-wh");
|
|
||||||
if(!link.equals("")){
|
|
||||||
DiscordWebhook discord = new DiscordWebhook(link);
|
|
||||||
discord.setContent("Item mis en vente pendant une heure: " + Merchand.current.x + " au prix de " + Merchand.current.y + TheVoidRoad.CoinGlyph);
|
|
||||||
try {
|
|
||||||
discord.execute();
|
|
||||||
} catch(Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "goto":
|
case "goto":
|
||||||
if(sender instanceof Player ply && m.getLocation() != null){
|
if(sender instanceof Player ply && m.getLocation() != null){
|
||||||
@ -94,8 +72,8 @@ public class VoidCommands implements CommandExecutor, TabCompleter{
|
|||||||
if(args.length < 5) return false;
|
if(args.length < 5) return false;
|
||||||
switch (args[2]) {
|
switch (args[2]) {
|
||||||
case "set":
|
case "set":
|
||||||
Player target_ = Bukkit.getPlayer(args[3]);
|
Player target = Bukkit.getPlayer(args[3]);
|
||||||
Voids.set(target_, Integer.parseInt(args[4]));
|
Voids.set(target, Integer.parseInt(args[4]));
|
||||||
return true;
|
return true;
|
||||||
case "add":
|
case "add":
|
||||||
case "sub":
|
case "sub":
|
||||||
@ -122,7 +100,7 @@ public class VoidCommands implements CommandExecutor, TabCompleter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) { //TODO: add all commands
|
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||||
ArrayList<String> list = new ArrayList<>();
|
ArrayList<String> list = new ArrayList<>();
|
||||||
|
|
||||||
if(args.length == 1){
|
if(args.length == 1){
|
||||||
@ -139,7 +117,7 @@ public class VoidCommands implements CommandExecutor, TabCompleter{
|
|||||||
return list;
|
return list;
|
||||||
case "manage":
|
case "manage":
|
||||||
if(sender.hasPermission("void.manage")){
|
if(sender.hasPermission("void.manage")){
|
||||||
if(args[1] == "balance" && args.length <= 3){
|
if(args[1] == "balance"){
|
||||||
list.addAll(List.of("set", "add", "sub"));
|
list.addAll(List.of("set", "add", "sub"));
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,6 @@ import java.util.HashMap;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class DatabaseManager {
|
public class DatabaseManager {
|
||||||
@ -177,18 +176,6 @@ public class DatabaseManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unban(UUID uuid) {
|
|
||||||
try {
|
|
||||||
Statement st = con.createStatement();
|
|
||||||
String query = "INSERT OR REPLACE INTO deaths (uuid, lastDeath) SELECT uuid, lastDeath - 1 FROM deaths WHERE uuid = ?";
|
|
||||||
PreparedStatement p = con.prepareStatement(query);
|
|
||||||
p.setString(1, uuid.toString());
|
|
||||||
p.execute();
|
|
||||||
st.close();
|
|
||||||
} catch(Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void close(){
|
public void close(){
|
||||||
try {
|
try {
|
||||||
|
@ -1,392 +0,0 @@
|
|||||||
package ovh.herisson.thevoidroad;
|
|
||||||
|
|
||||||
import javax.net.ssl.HttpsURLConnection;
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class used to execute Discord Webhooks with low effort
|
|
||||||
* @source https://gist.github.com/k3kdude/fba6f6b37594eae3d6f9475330733bdb
|
|
||||||
*/
|
|
||||||
public class DiscordWebhook {
|
|
||||||
|
|
||||||
private final String url;
|
|
||||||
private String content;
|
|
||||||
private String username;
|
|
||||||
private String avatarUrl;
|
|
||||||
private boolean tts;
|
|
||||||
private List<EmbedObject> embeds = new ArrayList<>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new DiscordWebhook instance
|
|
||||||
*
|
|
||||||
* @param url The webhook URL obtained in Discord
|
|
||||||
*/
|
|
||||||
public DiscordWebhook(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setContent(String content) {
|
|
||||||
this.content = content;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUsername(String username) {
|
|
||||||
this.username = username;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAvatarUrl(String avatarUrl) {
|
|
||||||
this.avatarUrl = avatarUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTts(boolean tts) {
|
|
||||||
this.tts = tts;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addEmbed(EmbedObject embed) {
|
|
||||||
this.embeds.add(embed);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void execute() throws IOException {
|
|
||||||
if (this.content == null && this.embeds.isEmpty()) {
|
|
||||||
throw new IllegalArgumentException("Set content or add at least one EmbedObject");
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject json = new JSONObject();
|
|
||||||
|
|
||||||
json.put("content", this.content);
|
|
||||||
json.put("username", this.username);
|
|
||||||
json.put("avatar_url", this.avatarUrl);
|
|
||||||
json.put("tts", this.tts);
|
|
||||||
|
|
||||||
if (!this.embeds.isEmpty()) {
|
|
||||||
List<JSONObject> embedObjects = new ArrayList<>();
|
|
||||||
|
|
||||||
for (EmbedObject embed : this.embeds) {
|
|
||||||
JSONObject jsonEmbed = new JSONObject();
|
|
||||||
|
|
||||||
jsonEmbed.put("title", embed.getTitle());
|
|
||||||
jsonEmbed.put("description", embed.getDescription());
|
|
||||||
jsonEmbed.put("url", embed.getUrl());
|
|
||||||
|
|
||||||
if (embed.getColor() != null) {
|
|
||||||
Color color = embed.getColor();
|
|
||||||
int rgb = color.getRed();
|
|
||||||
rgb = (rgb << 8) + color.getGreen();
|
|
||||||
rgb = (rgb << 8) + color.getBlue();
|
|
||||||
|
|
||||||
jsonEmbed.put("color", rgb);
|
|
||||||
}
|
|
||||||
|
|
||||||
EmbedObject.Footer footer = embed.getFooter();
|
|
||||||
EmbedObject.Image image = embed.getImage();
|
|
||||||
EmbedObject.Thumbnail thumbnail = embed.getThumbnail();
|
|
||||||
EmbedObject.Author author = embed.getAuthor();
|
|
||||||
List<EmbedObject.Field> fields = embed.getFields();
|
|
||||||
|
|
||||||
if (footer != null) {
|
|
||||||
JSONObject jsonFooter = new JSONObject();
|
|
||||||
|
|
||||||
jsonFooter.put("text", footer.getText());
|
|
||||||
jsonFooter.put("icon_url", footer.getIconUrl());
|
|
||||||
jsonEmbed.put("footer", jsonFooter);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (image != null) {
|
|
||||||
JSONObject jsonImage = new JSONObject();
|
|
||||||
|
|
||||||
jsonImage.put("url", image.getUrl());
|
|
||||||
jsonEmbed.put("image", jsonImage);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (thumbnail != null) {
|
|
||||||
JSONObject jsonThumbnail = new JSONObject();
|
|
||||||
|
|
||||||
jsonThumbnail.put("url", thumbnail.getUrl());
|
|
||||||
jsonEmbed.put("thumbnail", jsonThumbnail);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (author != null) {
|
|
||||||
JSONObject jsonAuthor = new JSONObject();
|
|
||||||
|
|
||||||
jsonAuthor.put("name", author.getName());
|
|
||||||
jsonAuthor.put("url", author.getUrl());
|
|
||||||
jsonAuthor.put("icon_url", author.getIconUrl());
|
|
||||||
jsonEmbed.put("author", jsonAuthor);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<JSONObject> jsonFields = new ArrayList<>();
|
|
||||||
for (EmbedObject.Field field : fields) {
|
|
||||||
JSONObject jsonField = new JSONObject();
|
|
||||||
|
|
||||||
jsonField.put("name", field.getName());
|
|
||||||
jsonField.put("value", field.getValue());
|
|
||||||
jsonField.put("inline", field.isInline());
|
|
||||||
|
|
||||||
jsonFields.add(jsonField);
|
|
||||||
}
|
|
||||||
|
|
||||||
jsonEmbed.put("fields", jsonFields.toArray());
|
|
||||||
embedObjects.add(jsonEmbed);
|
|
||||||
}
|
|
||||||
|
|
||||||
json.put("embeds", embedObjects.toArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
URL url = new URL(this.url);
|
|
||||||
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
|
|
||||||
connection.addRequestProperty("Content-Type", "application/json");
|
|
||||||
connection.addRequestProperty("User-Agent", "Java-DiscordWebhook-BY-Gelox_");
|
|
||||||
connection.setDoOutput(true);
|
|
||||||
connection.setRequestMethod("POST");
|
|
||||||
|
|
||||||
OutputStream stream = connection.getOutputStream();
|
|
||||||
stream.write(json.toString().getBytes());
|
|
||||||
stream.flush();
|
|
||||||
stream.close();
|
|
||||||
|
|
||||||
connection.getInputStream().close(); //I'm not sure why but it doesn't work without getting the InputStream
|
|
||||||
connection.disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class EmbedObject {
|
|
||||||
private String title;
|
|
||||||
private String description;
|
|
||||||
private String url;
|
|
||||||
private Color color;
|
|
||||||
|
|
||||||
private Footer footer;
|
|
||||||
private Thumbnail thumbnail;
|
|
||||||
private Image image;
|
|
||||||
private Author author;
|
|
||||||
private List<Field> fields = new ArrayList<>();
|
|
||||||
|
|
||||||
public String getTitle() {
|
|
||||||
return title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color getColor() {
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Footer getFooter() {
|
|
||||||
return footer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Thumbnail getThumbnail() {
|
|
||||||
return thumbnail;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Image getImage() {
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Author getAuthor() {
|
|
||||||
return author;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Field> getFields() {
|
|
||||||
return fields;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setTitle(String title) {
|
|
||||||
this.title = title;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setDescription(String description) {
|
|
||||||
this.description = description;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setUrl(String url) {
|
|
||||||
this.url = url;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setColor(Color color) {
|
|
||||||
this.color = color;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setFooter(String text, String icon) {
|
|
||||||
this.footer = new Footer(text, icon);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setThumbnail(String url) {
|
|
||||||
this.thumbnail = new Thumbnail(url);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setImage(String url) {
|
|
||||||
this.image = new Image(url);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject setAuthor(String name, String url, String icon) {
|
|
||||||
this.author = new Author(name, url, icon);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmbedObject addField(String name, String value, boolean inline) {
|
|
||||||
this.fields.add(new Field(name, value, inline));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Footer {
|
|
||||||
private String text;
|
|
||||||
private String iconUrl;
|
|
||||||
|
|
||||||
private Footer(String text, String iconUrl) {
|
|
||||||
this.text = text;
|
|
||||||
this.iconUrl = iconUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getText() {
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getIconUrl() {
|
|
||||||
return iconUrl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Thumbnail {
|
|
||||||
private String url;
|
|
||||||
|
|
||||||
private Thumbnail(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Image {
|
|
||||||
private String url;
|
|
||||||
|
|
||||||
private Image(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Author {
|
|
||||||
private String name;
|
|
||||||
private String url;
|
|
||||||
private String iconUrl;
|
|
||||||
|
|
||||||
private Author(String name, String url, String iconUrl) {
|
|
||||||
this.name = name;
|
|
||||||
this.url = url;
|
|
||||||
this.iconUrl = iconUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getIconUrl() {
|
|
||||||
return iconUrl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class Field {
|
|
||||||
private String name;
|
|
||||||
private String value;
|
|
||||||
private boolean inline;
|
|
||||||
|
|
||||||
private Field(String name, String value, boolean inline) {
|
|
||||||
this.name = name;
|
|
||||||
this.value = value;
|
|
||||||
this.inline = inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isInline() {
|
|
||||||
return inline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class JSONObject {
|
|
||||||
|
|
||||||
private final HashMap<String, Object> map = new HashMap<>();
|
|
||||||
|
|
||||||
void put(String key, Object value) {
|
|
||||||
if (value != null) {
|
|
||||||
map.put(key, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
Set<Map.Entry<String, Object>> entrySet = map.entrySet();
|
|
||||||
builder.append("{");
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
for (Map.Entry<String, Object> entry : entrySet) {
|
|
||||||
Object val = entry.getValue();
|
|
||||||
builder.append(quote(entry.getKey())).append(":");
|
|
||||||
|
|
||||||
if (val instanceof String) {
|
|
||||||
builder.append(quote(String.valueOf(val)));
|
|
||||||
} else if (val instanceof Integer) {
|
|
||||||
builder.append(Integer.valueOf(String.valueOf(val)));
|
|
||||||
} else if (val instanceof Boolean) {
|
|
||||||
builder.append(val);
|
|
||||||
} else if (val instanceof JSONObject) {
|
|
||||||
builder.append(val.toString());
|
|
||||||
} else if (val.getClass().isArray()) {
|
|
||||||
builder.append("[");
|
|
||||||
int len = Array.getLength(val);
|
|
||||||
for (int j = 0; j < len; j++) {
|
|
||||||
builder.append(Array.get(val, j).toString()).append(j != len - 1 ? "," : "");
|
|
||||||
}
|
|
||||||
builder.append("]");
|
|
||||||
}
|
|
||||||
|
|
||||||
builder.append(++i == entrySet.size() ? "}" : ",");
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private String quote(String string) {
|
|
||||||
return "\"" + string + "\"";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -15,7 +15,9 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryAction;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.world.EntitiesLoadEvent;
|
import org.bukkit.event.world.EntitiesLoadEvent;
|
||||||
@ -25,7 +27,6 @@ import org.bukkit.persistence.PersistentDataType;
|
|||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import ovh.herisson.thevoidroad.DatabaseManager;
|
import ovh.herisson.thevoidroad.DatabaseManager;
|
||||||
import ovh.herisson.thevoidroad.DiscordWebhook;
|
|
||||||
import ovh.herisson.thevoidroad.TheVoidRoad;
|
import ovh.herisson.thevoidroad.TheVoidRoad;
|
||||||
import ovh.herisson.thevoidroad.Voids;
|
import ovh.herisson.thevoidroad.Voids;
|
||||||
import ovh.herisson.thevoidroad.Event.HourEvent;
|
import ovh.herisson.thevoidroad.Event.HourEvent;
|
||||||
@ -36,7 +37,6 @@ public class Merchand implements Listener{
|
|||||||
public static Tuple<Material, Integer> current, next;
|
public static Tuple<Material, Integer> current, next;
|
||||||
private static Merchand instance;
|
private static Merchand instance;
|
||||||
private static final ArrayList<Material> mat = new ArrayList<>();
|
private static final ArrayList<Material> mat = new ArrayList<>();
|
||||||
private static final ArrayList<String> names = new ArrayList<>();
|
|
||||||
private final Inventory inv;
|
private final Inventory inv;
|
||||||
private Villager m ;
|
private Villager m ;
|
||||||
|
|
||||||
@ -50,8 +50,6 @@ public class Merchand implements Listener{
|
|||||||
|
|
||||||
private Merchand() {
|
private Merchand() {
|
||||||
inv = Bukkit.createInventory(null, 9);
|
inv = Bukkit.createInventory(null, 9);
|
||||||
|
|
||||||
//Get file materials
|
|
||||||
File f = new File(TheVoidRoad.instance.getDataFolder(), "materials.txt");
|
File f = new File(TheVoidRoad.instance.getDataFolder(), "materials.txt");
|
||||||
try {
|
try {
|
||||||
for (String s : Files.readAllLines(f.toPath())) {
|
for (String s : Files.readAllLines(f.toPath())) {
|
||||||
@ -60,22 +58,10 @@ public class Merchand implements Listener{
|
|||||||
} catch(Exception e){
|
} catch(Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
f = new File(TheVoidRoad.instance.getDataFolder(), "names.txt");
|
|
||||||
try {
|
|
||||||
for (String s : Files.readAllLines(f.toPath())) {
|
|
||||||
names.add(s);
|
|
||||||
}
|
|
||||||
} catch(Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
//Is the game inited
|
|
||||||
if(DatabaseManager.getInstance().getConfig("init") != null &&
|
if(DatabaseManager.getInstance().getConfig("init") != null &&
|
||||||
DatabaseManager.getInstance().getConfig("init").equalsIgnoreCase("true")){
|
DatabaseManager.getInstance().getConfig("init").equalsIgnoreCase("true")){
|
||||||
regenerate();
|
regenerate();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Webhook connection
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void regenerate(){
|
public void regenerate(){
|
||||||
@ -88,7 +74,6 @@ public class Merchand implements Listener{
|
|||||||
m.getPersistentDataContainer().set(tagger, PersistentDataType.BOOLEAN, true);
|
m.getPersistentDataContainer().set(tagger, PersistentDataType.BOOLEAN, true);
|
||||||
m.setGlowing(true);
|
m.setGlowing(true);
|
||||||
m.setInvulnerable(true);
|
m.setInvulnerable(true);
|
||||||
m.customName(Component.text(names.get(new Random().nextInt(names.size()))));
|
|
||||||
Bukkit.getServer().forEachAudience((a) -> {
|
Bukkit.getServer().forEachAudience((a) -> {
|
||||||
if(a instanceof Player ply){
|
if(a instanceof Player ply){
|
||||||
ply.setCompassTarget(m.getLocation());
|
ply.setCompassTarget(m.getLocation());
|
||||||
@ -120,11 +105,6 @@ public class Merchand implements Listener{
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onHour(HourEvent e){
|
public void onHour(HourEvent e){
|
||||||
current = genTrade(e.unixhour);
|
current = genTrade(e.unixhour);
|
||||||
String link = DatabaseManager.getInstance().getConfig("discord-wh");
|
|
||||||
if(!link.equals("")){
|
|
||||||
DiscordWebhook discord = new DiscordWebhook(link);
|
|
||||||
discord.setContent("Item mis en vente pendant une heure: " + current.x + " au prix de " + current.y + TheVoidRoad.CoinGlyph);
|
|
||||||
}
|
|
||||||
next = genTrade(e.unixhour + 1);
|
next = genTrade(e.unixhour + 1);
|
||||||
regenerate();
|
regenerate();
|
||||||
}
|
}
|
||||||
@ -158,7 +138,7 @@ public class Merchand implements Listener{
|
|||||||
//Do we have the item and if so remove them
|
//Do we have the item and if so remove them
|
||||||
if(ply.getInventory().contains(current.x)){
|
if(ply.getInventory().contains(current.x)){
|
||||||
for (ItemStack i : ply.getInventory().getContents()) {
|
for (ItemStack i : ply.getInventory().getContents()) {
|
||||||
if(i != null && i.getType() == current.x){
|
if(i.getType() == current.x){
|
||||||
i.subtract(1);
|
i.subtract(1);
|
||||||
Voids.add(ply, current.y);
|
Voids.add(ply, current.y);
|
||||||
return;
|
return;
|
||||||
|
@ -21,7 +21,6 @@ public class TheVoidRoad extends JavaPlugin{
|
|||||||
public void onEnable(){
|
public void onEnable(){
|
||||||
|
|
||||||
saveResource("materials.txt", false);
|
saveResource("materials.txt", false);
|
||||||
saveResource("names.txt", false);
|
|
||||||
|
|
||||||
//Commands
|
//Commands
|
||||||
getCommand("void").setExecutor(new VoidCommands());
|
getCommand("void").setExecutor(new VoidCommands());
|
||||||
|
@ -1,365 +0,0 @@
|
|||||||
Ave
|
|
||||||
Civi
|
|
||||||
Denni
|
|
||||||
Gen
|
|
||||||
Genner
|
|
||||||
Gennie
|
|
||||||
Habbie
|
|
||||||
Nary
|
|
||||||
Norm
|
|
||||||
Norma
|
|
||||||
Norman
|
|
||||||
Ordie
|
|
||||||
Reg
|
|
||||||
Reggie
|
|
||||||
Ressie
|
|
||||||
Settler
|
|
||||||
Sitti
|
|
||||||
Sity
|
|
||||||
Stan
|
|
||||||
Standa
|
|
||||||
Unem
|
|
||||||
Urbie
|
|
||||||
Verage
|
|
||||||
Aegis
|
|
||||||
Armsworth
|
|
||||||
Bell
|
|
||||||
Boots
|
|
||||||
Bootsmith
|
|
||||||
Buckle
|
|
||||||
Buckler
|
|
||||||
Bullwark
|
|
||||||
Busby
|
|
||||||
Chains
|
|
||||||
Chestington
|
|
||||||
Coal
|
|
||||||
Cole
|
|
||||||
Diamonds
|
|
||||||
Feaver
|
|
||||||
Gow
|
|
||||||
Guard
|
|
||||||
Helms
|
|
||||||
Helmut
|
|
||||||
Ingot
|
|
||||||
Irons
|
|
||||||
Koval
|
|
||||||
Kowal
|
|
||||||
Lava
|
|
||||||
Magma
|
|
||||||
Mails
|
|
||||||
Schmits
|
|
||||||
Shieldrick
|
|
||||||
Shields
|
|
||||||
Ward
|
|
||||||
Barry
|
|
||||||
Beefs
|
|
||||||
Berry
|
|
||||||
Bones
|
|
||||||
Boucher
|
|
||||||
Brawn
|
|
||||||
Brawnworth
|
|
||||||
Brew
|
|
||||||
Butch
|
|
||||||
Chows
|
|
||||||
Cole
|
|
||||||
Fleischer
|
|
||||||
Grubs
|
|
||||||
Hash
|
|
||||||
Kelps
|
|
||||||
Metzner
|
|
||||||
Porkington
|
|
||||||
Rabbits
|
|
||||||
Rations
|
|
||||||
Slager
|
|
||||||
Stewie
|
|
||||||
Stews
|
|
||||||
Atlas
|
|
||||||
Banner
|
|
||||||
Bannerman
|
|
||||||
Banners
|
|
||||||
Compass
|
|
||||||
Discovery
|
|
||||||
Entrepid
|
|
||||||
Explorer
|
|
||||||
Geo
|
|
||||||
Glaser
|
|
||||||
Glass
|
|
||||||
Glazer
|
|
||||||
Globetrots
|
|
||||||
Globetrotter
|
|
||||||
Journeyman
|
|
||||||
Journeys
|
|
||||||
Path
|
|
||||||
Paths
|
|
||||||
Pioneer
|
|
||||||
Roamer
|
|
||||||
Strider
|
|
||||||
Tracer
|
|
||||||
Trailer
|
|
||||||
Trails
|
|
||||||
Trekker
|
|
||||||
Treks
|
|
||||||
Trips
|
|
||||||
Voyage
|
|
||||||
Voyager
|
|
||||||
Wander
|
|
||||||
Wayfare
|
|
||||||
Chapman
|
|
||||||
Clark
|
|
||||||
Docs
|
|
||||||
Ender
|
|
||||||
Enders
|
|
||||||
Foot
|
|
||||||
Foots
|
|
||||||
Glaser
|
|
||||||
Glass
|
|
||||||
Glazer
|
|
||||||
Glow
|
|
||||||
Heals
|
|
||||||
Ingot
|
|
||||||
Ingots
|
|
||||||
Lapis
|
|
||||||
Lazuli
|
|
||||||
Mendings
|
|
||||||
Mends
|
|
||||||
Patches
|
|
||||||
Rot
|
|
||||||
Rott
|
|
||||||
Salve
|
|
||||||
Scute
|
|
||||||
Scutes
|
|
||||||
Soothe
|
|
||||||
Warts
|
|
||||||
Akkerman
|
|
||||||
Apple
|
|
||||||
Appleton
|
|
||||||
Beetington
|
|
||||||
Beets
|
|
||||||
Boer
|
|
||||||
Carrots
|
|
||||||
Cookie
|
|
||||||
Cowman
|
|
||||||
Crops
|
|
||||||
Gorter
|
|
||||||
Grows
|
|
||||||
Harrow
|
|
||||||
Harvester
|
|
||||||
Harvests
|
|
||||||
Koeman
|
|
||||||
Landman
|
|
||||||
Miller
|
|
||||||
Morar
|
|
||||||
Moraru
|
|
||||||
Mulder
|
|
||||||
Plants
|
|
||||||
Plower
|
|
||||||
Plowright
|
|
||||||
Pumpkin
|
|
||||||
Pumpking
|
|
||||||
Ranch
|
|
||||||
Rancher
|
|
||||||
Reaper
|
|
||||||
Seeds
|
|
||||||
Sow
|
|
||||||
Tater
|
|
||||||
Taters
|
|
||||||
Tender
|
|
||||||
Till
|
|
||||||
Tiller
|
|
||||||
Tots
|
|
||||||
Wheats
|
|
||||||
Angle
|
|
||||||
Angler
|
|
||||||
Angles
|
|
||||||
Baits
|
|
||||||
Baitsman
|
|
||||||
Boatman
|
|
||||||
Boatwright
|
|
||||||
Bob
|
|
||||||
Cast
|
|
||||||
Casts
|
|
||||||
Chum
|
|
||||||
Coal
|
|
||||||
Cod
|
|
||||||
Cole
|
|
||||||
Fisch
|
|
||||||
Fisher
|
|
||||||
Haul
|
|
||||||
Lure
|
|
||||||
Marin
|
|
||||||
Marine
|
|
||||||
Net
|
|
||||||
Nets
|
|
||||||
Piscator
|
|
||||||
Pisces
|
|
||||||
Puff
|
|
||||||
Puffer
|
|
||||||
Rod
|
|
||||||
Rodman
|
|
||||||
Rods
|
|
||||||
Strings
|
|
||||||
Trawler
|
|
||||||
Trawlie
|
|
||||||
Waters
|
|
||||||
Wave
|
|
||||||
Archer
|
|
||||||
Arrowsmith
|
|
||||||
Bo
|
|
||||||
Bolt
|
|
||||||
Bowman
|
|
||||||
Bows
|
|
||||||
Bowyer
|
|
||||||
Bullseye
|
|
||||||
Dart
|
|
||||||
Feathers
|
|
||||||
Flint
|
|
||||||
Hook
|
|
||||||
Hooks
|
|
||||||
Plume
|
|
||||||
Quiver
|
|
||||||
Sticks
|
|
||||||
Trips
|
|
||||||
Attire
|
|
||||||
Boots
|
|
||||||
Cap
|
|
||||||
Caps
|
|
||||||
Flint
|
|
||||||
Garb
|
|
||||||
Glover
|
|
||||||
Hide
|
|
||||||
Hides
|
|
||||||
Hyde
|
|
||||||
Leatherman
|
|
||||||
Pantington
|
|
||||||
Raggers
|
|
||||||
Rags
|
|
||||||
Riggings
|
|
||||||
Sadler
|
|
||||||
Sandler
|
|
||||||
Scute
|
|
||||||
Shoemaker
|
|
||||||
Skinner
|
|
||||||
Skins
|
|
||||||
Tailor
|
|
||||||
Tan
|
|
||||||
Tanner
|
|
||||||
Threads
|
|
||||||
Tunics
|
|
||||||
Book
|
|
||||||
Books
|
|
||||||
Clocks
|
|
||||||
Compass
|
|
||||||
Dinter
|
|
||||||
Glass
|
|
||||||
Ink
|
|
||||||
Inkworth
|
|
||||||
Lerner
|
|
||||||
Page
|
|
||||||
Papers
|
|
||||||
Quill
|
|
||||||
Quills
|
|
||||||
Reads
|
|
||||||
Scriver
|
|
||||||
Shriver
|
|
||||||
Andy
|
|
||||||
Baumann
|
|
||||||
Boulder
|
|
||||||
Brick
|
|
||||||
Bricks
|
|
||||||
Brock
|
|
||||||
Chisel
|
|
||||||
Chisels
|
|
||||||
Clay
|
|
||||||
Claye
|
|
||||||
Cotta
|
|
||||||
Dio
|
|
||||||
Granite
|
|
||||||
Mason
|
|
||||||
Pebble
|
|
||||||
Pillars
|
|
||||||
Quartz
|
|
||||||
Rock
|
|
||||||
Rocky
|
|
||||||
Stone
|
|
||||||
Terra
|
|
||||||
Tyler
|
|
||||||
Blockhead
|
|
||||||
Bonehead
|
|
||||||
Dimdim
|
|
||||||
Dimwit
|
|
||||||
Dingbat
|
|
||||||
Dolt
|
|
||||||
Doofus
|
|
||||||
Dope
|
|
||||||
Dumbbell
|
|
||||||
Dummydum
|
|
||||||
Dummydumdum
|
|
||||||
Dunce
|
|
||||||
Ignoramus
|
|
||||||
Loony
|
|
||||||
Muttonhead
|
|
||||||
Nincompoop
|
|
||||||
Nitty
|
|
||||||
Nutters
|
|
||||||
Pinhead
|
|
||||||
Simpleton
|
|
||||||
Simpleton II
|
|
||||||
Slowpoke
|
|
||||||
Tomfool
|
|
||||||
Beds
|
|
||||||
Color
|
|
||||||
Dye
|
|
||||||
Dyer
|
|
||||||
Fuller
|
|
||||||
Paint
|
|
||||||
Paints
|
|
||||||
Pigment
|
|
||||||
Shear
|
|
||||||
Shears
|
|
||||||
Sleep
|
|
||||||
Sleeps
|
|
||||||
Wool
|
|
||||||
Wools
|
|
||||||
Woolsworth
|
|
||||||
Apparatus
|
|
||||||
Ax
|
|
||||||
Axington
|
|
||||||
Carpenter
|
|
||||||
Flint
|
|
||||||
Gizmo
|
|
||||||
Hammer
|
|
||||||
Hammers
|
|
||||||
Hatchet
|
|
||||||
Ingot
|
|
||||||
Ingots
|
|
||||||
Iron
|
|
||||||
Irons
|
|
||||||
Pick
|
|
||||||
Steels
|
|
||||||
Tools
|
|
||||||
Toolsworth
|
|
||||||
Arm
|
|
||||||
Arming
|
|
||||||
Arms
|
|
||||||
Axe
|
|
||||||
Bell
|
|
||||||
Blade
|
|
||||||
Blades
|
|
||||||
Brand
|
|
||||||
Claymore
|
|
||||||
Coal
|
|
||||||
Cole
|
|
||||||
Dirk
|
|
||||||
Edge
|
|
||||||
Epee
|
|
||||||
Falchio
|
|
||||||
Falchion
|
|
||||||
Glaive
|
|
||||||
Glaives
|
|
||||||
Hatchet
|
|
||||||
Ingot
|
|
||||||
Kris
|
|
||||||
Saber
|
|
||||||
Shank
|
|
||||||
Swords
|
|
||||||
Swordsmith
|
|
Loading…
Reference in New Issue
Block a user