Improve Bungee GUI
Add SWListInv for Schem GUI
Dieser Commit ist enthalten in:
Ursprung
51db5a8ad4
Commit
7559012a9b
@ -20,7 +20,8 @@
|
|||||||
package de.steamwar.bungeecore;
|
package de.steamwar.bungeecore;
|
||||||
|
|
||||||
import de.steamwar.bungeecore.commands.*;
|
import de.steamwar.bungeecore.commands.*;
|
||||||
import de.steamwar.bungeecore.coms.receiver.PacketHandler;
|
import de.steamwar.bungeecore.comms.handlers.InventoryCallbackHandler;
|
||||||
|
import de.steamwar.bungeecore.comms.SpigotReceiver;
|
||||||
import de.steamwar.bungeecore.listeners.*;
|
import de.steamwar.bungeecore.listeners.*;
|
||||||
import de.steamwar.bungeecore.listeners.mods.Fabric;
|
import de.steamwar.bungeecore.listeners.mods.Fabric;
|
||||||
import de.steamwar.bungeecore.listeners.mods.Forge;
|
import de.steamwar.bungeecore.listeners.mods.Forge;
|
||||||
@ -43,9 +44,7 @@ import net.md_5.bungee.config.YamlConfiguration;
|
|||||||
import org.yaml.snakeyaml.error.YAMLException;
|
import org.yaml.snakeyaml.error.YAMLException;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.MalformedInputException;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -75,7 +74,6 @@ public class BungeeCore extends Plugin {
|
|||||||
public void onEnable(){
|
public void onEnable(){
|
||||||
|
|
||||||
getProxy().registerChannel("sw:bridge");
|
getProxy().registerChannel("sw:bridge");
|
||||||
getProxy().registerChannel("sw:return");
|
|
||||||
|
|
||||||
setInstance(this);
|
setInstance(this);
|
||||||
loadConfig();
|
loadConfig();
|
||||||
@ -134,7 +132,7 @@ public class BungeeCore extends Plugin {
|
|||||||
new EventStarter();
|
new EventStarter();
|
||||||
new Broadcaster();
|
new Broadcaster();
|
||||||
new SessionManager();
|
new SessionManager();
|
||||||
new PacketHandler();
|
new SpigotReceiver();
|
||||||
|
|
||||||
new TablistManager();
|
new TablistManager();
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package de.steamwar.bungeecore.commands;
|
package de.steamwar.bungeecore.commands;
|
||||||
|
|
||||||
import de.steamwar.bungeecore.coms.packets.inventory.SWInventory;
|
import de.steamwar.bungeecore.comms.packets.inventory.SWInventory;
|
||||||
import de.steamwar.bungeecore.coms.packets.inventory.SWItem;
|
import de.steamwar.bungeecore.comms.packets.inventory.SWItem;
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ public class TestCommand extends BasicCommand {
|
|||||||
if(!(commandSender instanceof ProxiedPlayer))
|
if(!(commandSender instanceof ProxiedPlayer))
|
||||||
return;
|
return;
|
||||||
SWInventory inventory = new SWInventory((ProxiedPlayer) commandSender, 3*9, "Test Inventory");
|
SWInventory inventory = new SWInventory((ProxiedPlayer) commandSender, 3*9, "Test Inventory");
|
||||||
SWItem item = new SWItem("DIRT", 13, "§e§lTest Item");
|
SWItem item = new SWItem("DIRT1", 13, "§e§lTest Item");
|
||||||
item.setSkullOwner(commandSender.getName());
|
item.setSkullOwner(commandSender.getName());
|
||||||
for (ProxiedPlayer player:
|
for (ProxiedPlayer player:
|
||||||
((ProxiedPlayer) commandSender).getServer().getInfo().getPlayers()) {
|
((ProxiedPlayer) commandSender).getServer().getInfo().getPlayers()) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package de.steamwar.bungeecore.coms.sender;
|
package de.steamwar.bungeecore.comms;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
@ -7,23 +7,27 @@ import net.md_5.bungee.api.connection.Server;
|
|||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
|
||||||
public class PacketSender {
|
public abstract class BungeePacket {
|
||||||
|
|
||||||
public static void sendPacket(Packet packet, ProxiedPlayer player) {
|
public void send(Server server) {
|
||||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||||
out.writeUTF(packet.getName());
|
out.writeInt(getId());
|
||||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
packet.writeVars(out);
|
writeVars(out);
|
||||||
|
out.writeUTF(outputStream.toByteArray().toString());
|
||||||
|
server.sendData("sw:bridge", out.toByteArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void send(ProxiedPlayer player) {
|
||||||
|
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||||
|
out.writeInt(getId());
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
|
writeVars(out);
|
||||||
out.writeUTF(outputStream.toByteArray().toString());
|
out.writeUTF(outputStream.toByteArray().toString());
|
||||||
player.getServer().sendData("sw:bridge", out.toByteArray());
|
player.getServer().sendData("sw:bridge", out.toByteArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendPacket(Packet packet, Server server) {
|
public abstract int getId();
|
||||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
|
||||||
out.writeUTF(packet.getName());
|
public abstract void writeVars(ByteArrayDataOutput byteArrayDataOutput);
|
||||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
||||||
packet.writeVars(out);
|
|
||||||
out.writeUTF(outputStream.toByteArray().toString());
|
|
||||||
server.sendData("sw:bridge", out.toByteArray());
|
|
||||||
}
|
|
||||||
}
|
}
|
8
src/de/steamwar/bungeecore/comms/SpigotHandler.java
Normale Datei
8
src/de/steamwar/bungeecore/comms/SpigotHandler.java
Normale Datei
@ -0,0 +1,8 @@
|
|||||||
|
package de.steamwar.bungeecore.comms;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
|
public interface SpigotHandler {
|
||||||
|
|
||||||
|
void handle(ByteArrayDataInput byteArrayDataInput);
|
||||||
|
}
|
37
src/de/steamwar/bungeecore/comms/SpigotReceiver.java
Normale Datei
37
src/de/steamwar/bungeecore/comms/SpigotReceiver.java
Normale Datei
@ -0,0 +1,37 @@
|
|||||||
|
package de.steamwar.bungeecore.comms;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
import com.google.common.io.ByteStreams;
|
||||||
|
import de.steamwar.bungeecore.comms.handlers.InventoryCallbackHandler;
|
||||||
|
import de.steamwar.bungeecore.listeners.BasicListener;
|
||||||
|
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||||
|
import net.md_5.bungee.event.EventHandler;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class SpigotReceiver extends BasicListener {
|
||||||
|
|
||||||
|
private static final Map<Integer, SpigotHandler> handlerMap = new HashMap<>();
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPluginMessage(PluginMessageEvent event) {
|
||||||
|
if(!event.getTag().equalsIgnoreCase("sw:bridge"))
|
||||||
|
return;
|
||||||
|
ByteArrayDataInput in = ByteStreams.newDataInput(event.getData());
|
||||||
|
int handler = in.readInt();
|
||||||
|
handlerMap.get(handler).handle(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerHandler(int id, SpigotHandler handler) {
|
||||||
|
handlerMap.put(id, handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerHandler(String name, SpigotHandler handler) {
|
||||||
|
handlerMap.put(name.hashCode(), handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
registerHandler("InventoryCallback", new InventoryCallbackHandler());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package de.steamwar.bungeecore.comms.handlers;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
import de.steamwar.bungeecore.comms.SpigotHandler;
|
||||||
|
import de.steamwar.bungeecore.comms.packets.inventory.InvCallback;
|
||||||
|
import de.steamwar.bungeecore.comms.packets.inventory.SWInventory;
|
||||||
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class InventoryCallbackHandler implements SpigotHandler {
|
||||||
|
|
||||||
|
public static final Map<Integer, SWInventory> inventoryHashMap = new HashMap<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(ByteArrayDataInput byteArrayDataInput) {
|
||||||
|
SteamwarUser owner = SteamwarUser.get(byteArrayDataInput.readInt());
|
||||||
|
CallbackType type = CallbackType.valueOf(byteArrayDataInput.readUTF());
|
||||||
|
if(type == CallbackType.CLICK) {
|
||||||
|
int pos = byteArrayDataInput.readInt();
|
||||||
|
InvCallback.ClickType clickType = InvCallback.ClickType.valueOf(byteArrayDataInput.readUTF());
|
||||||
|
inventoryHashMap.get(owner.getId()).handleCallback(clickType, pos);
|
||||||
|
}else if(type == CallbackType.CLOSE) {
|
||||||
|
inventoryHashMap.get(owner.getId()).handleClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CallbackType {
|
||||||
|
CLICK,
|
||||||
|
CLOSE,
|
||||||
|
}
|
||||||
|
}
|
@ -1,21 +1,22 @@
|
|||||||
package de.steamwar.bungeecore.coms.packets;
|
package de.steamwar.bungeecore.comms.packets;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
import de.steamwar.bungeecore.coms.sender.Packet;
|
import de.steamwar.bungeecore.comms.BungeePacket;
|
||||||
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
public class CloseInventoryPacket extends Packet {
|
public class CloseInventoryPacket extends BungeePacket {
|
||||||
|
|
||||||
ProxiedPlayer player;
|
ProxiedPlayer player;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public int getId() {
|
||||||
return "InvClose";
|
return "CloseInventory".hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeVars(ByteArrayDataOutput byteArrayDataOutput) {
|
public void writeVars(ByteArrayDataOutput byteArrayDataOutput) {
|
||||||
byteArrayDataOutput.writeUTF(player.getUniqueId().toString());
|
byteArrayDataOutput.writeInt(SteamwarUser.get(player).getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CloseInventoryPacket setPlayer(ProxiedPlayer player) {
|
public CloseInventoryPacket setPlayer(ProxiedPlayer player) {
|
51
src/de/steamwar/bungeecore/comms/packets/InventoryPacket.java
Normale Datei
51
src/de/steamwar/bungeecore/comms/packets/InventoryPacket.java
Normale Datei
@ -0,0 +1,51 @@
|
|||||||
|
package de.steamwar.bungeecore.comms.packets;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import de.steamwar.bungeecore.comms.packets.inventory.SWItem;
|
||||||
|
import de.steamwar.bungeecore.comms.BungeePacket;
|
||||||
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class InventoryPacket extends BungeePacket {
|
||||||
|
|
||||||
|
String title;
|
||||||
|
int player;
|
||||||
|
int size;
|
||||||
|
HashMap<Integer, SWItem> items;
|
||||||
|
|
||||||
|
public InventoryPacket(int size, String title, ProxiedPlayer player) {
|
||||||
|
items = new HashMap<>();
|
||||||
|
this.title = title;
|
||||||
|
this.size = size;
|
||||||
|
this.player = SteamwarUser.get(player).getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getId() {
|
||||||
|
return "InventoryHandler".hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeVars(ByteArrayDataOutput byteArrayDataOutput) {
|
||||||
|
JsonObject object = new JsonObject();
|
||||||
|
object.addProperty("id", player);
|
||||||
|
object.addProperty("title", title);
|
||||||
|
object.addProperty("size", size);
|
||||||
|
object.addProperty("itemcount", items.size());
|
||||||
|
JsonArray array = new JsonArray();
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
if(items.get(i) != null)
|
||||||
|
array.add(items.get(i).writeToString());
|
||||||
|
}
|
||||||
|
object.add("items", array);
|
||||||
|
byteArrayDataOutput.writeUTF(object.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItem(int index, SWItem item) {
|
||||||
|
items.put(index, item);
|
||||||
|
}
|
||||||
|
}
|
24
src/de/steamwar/bungeecore/comms/packets/PingPacket.java
Normale Datei
24
src/de/steamwar/bungeecore/comms/packets/PingPacket.java
Normale Datei
@ -0,0 +1,24 @@
|
|||||||
|
package de.steamwar.bungeecore.comms.packets;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
|
import de.steamwar.bungeecore.comms.BungeePacket;
|
||||||
|
|
||||||
|
public class PingPacket extends BungeePacket {
|
||||||
|
|
||||||
|
int id;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getId() {
|
||||||
|
return "PingHandler".hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeVars(ByteArrayDataOutput byteArrayDataOutput) {
|
||||||
|
byteArrayDataOutput.writeInt(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PingPacket setUser(int id) {
|
||||||
|
this.id = id;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package de.steamwar.bungeecore.coms.packets.inventory;
|
package de.steamwar.bungeecore.comms.packets.inventory;
|
||||||
|
|
||||||
public interface InvCallback {
|
public interface InvCallback {
|
||||||
|
|
||||||
@ -19,9 +19,6 @@ public interface InvCallback {
|
|||||||
CREATIVE,
|
CREATIVE,
|
||||||
UNKNOWN;
|
UNKNOWN;
|
||||||
|
|
||||||
private ClickType() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isKeyboardClick() {
|
public boolean isKeyboardClick() {
|
||||||
return this == NUMBER_KEY || this == DROP || this == CONTROL_DROP;
|
return this == NUMBER_KEY || this == DROP || this == CONTROL_DROP;
|
||||||
}
|
}
|
90
src/de/steamwar/bungeecore/comms/packets/inventory/SWInventory.java
Normale Datei
90
src/de/steamwar/bungeecore/comms/packets/inventory/SWInventory.java
Normale Datei
@ -0,0 +1,90 @@
|
|||||||
|
package de.steamwar.bungeecore.comms.packets.inventory;
|
||||||
|
|
||||||
|
import de.steamwar.bungeecore.comms.handlers.InventoryCallbackHandler;
|
||||||
|
import de.steamwar.bungeecore.comms.packets.CloseInventoryPacket;
|
||||||
|
import de.steamwar.bungeecore.comms.packets.InventoryPacket;
|
||||||
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class SWInventory {
|
||||||
|
|
||||||
|
private final Map<Integer, SWItem> itemMap;
|
||||||
|
private InvCallback close;
|
||||||
|
private ProxiedPlayer player;
|
||||||
|
private int size;
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
public SWInventory(ProxiedPlayer proxiedPlayer, int size, String title) {
|
||||||
|
itemMap = new HashMap<>();
|
||||||
|
InventoryCallbackHandler.inventoryHashMap.put(SteamwarUser.get(proxiedPlayer).getId(), this);
|
||||||
|
this.player = proxiedPlayer;
|
||||||
|
this.size = size;
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addItem(SWItem item) {
|
||||||
|
itemMap.put(item.getPosition(), item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addItem(int position, SWItem item) {
|
||||||
|
itemMap.put(position, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addItem(int pos, SWItem item, InvCallback callback) {
|
||||||
|
item.setCallback(callback);
|
||||||
|
itemMap.put(pos, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addItem(int pos, SWItem item, String name, InvCallback callback) {
|
||||||
|
item.setCallback(callback);
|
||||||
|
itemMap.put(pos, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeItem(SWItem item) {
|
||||||
|
itemMap.remove(item.getPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeItem(int position) {
|
||||||
|
itemMap.remove(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSize() {
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSize(int size) {
|
||||||
|
this.size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCallback(int pos, InvCallback callback) {
|
||||||
|
itemMap.get(pos).setCallback(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleCallback(InvCallback.ClickType type, int pos) {
|
||||||
|
itemMap.get(pos).getCallback().clicked(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleClose() {
|
||||||
|
if(close != null)
|
||||||
|
close.clicked(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void open() {
|
||||||
|
InventoryPacket inv = new InventoryPacket(size, title, player);
|
||||||
|
for (Map.Entry<Integer, SWItem> entry : itemMap.entrySet()) {
|
||||||
|
inv.setItem(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
inv.send(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
new CloseInventoryPacket().setPlayer(player).send(player);
|
||||||
|
}
|
||||||
|
}
|
@ -1,51 +1,50 @@
|
|||||||
package de.steamwar.bungeecore.coms.packets.inventory;
|
package de.steamwar.bungeecore.comms.packets.inventory;
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class SWItem {
|
public class SWItem {
|
||||||
|
|
||||||
String material, title, skullOwner;
|
private String material, title, skullOwner;
|
||||||
boolean enchanted, hideAttributes;
|
private boolean enchanted, hideAttributes;
|
||||||
int position;
|
private int position;
|
||||||
List<String> lore;
|
private List<String> lore;
|
||||||
InvCallback callback;
|
private InvCallback callback;
|
||||||
|
private int color;
|
||||||
|
|
||||||
public SWItem(String material, int position, String title) {
|
public SWItem(String material, int position, String title) {
|
||||||
this.material = material.toUpperCase();
|
this.material = material.toUpperCase();
|
||||||
lore = new ArrayList<>();
|
lore = new ArrayList<>();
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.title = title;
|
this.title = title;
|
||||||
|
color = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SWItem(String json) {
|
public SWItem(int position, String title, int color) {
|
||||||
JsonObject object = new JsonParser().parse(json).getAsJsonObject();
|
this.material = "DYE";
|
||||||
material = object.get("material").getAsString();
|
lore = new ArrayList<>();
|
||||||
position = object.get("position").getAsInt();
|
this.position = position;
|
||||||
title = object.get("title").getAsString();
|
this.title = title;
|
||||||
if(object.has("skullOwner")) {
|
this.color = color;
|
||||||
skullOwner = object.get("skullOwner").getAsString();
|
|
||||||
}
|
|
||||||
if(object.has("enchanted"))
|
|
||||||
enchanted = true;
|
|
||||||
if(object.has("hideAttributes"))
|
|
||||||
hideAttributes = true;
|
|
||||||
if(object.has("lore")) {
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
JsonArray array = object.getAsJsonArray("lore");
|
|
||||||
array.forEach(jsonElement -> lore.add(jsonElement.getAsString()));
|
|
||||||
this.lore = lore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SWItem getSkull(String skullOwner) {
|
||||||
|
SWItem item = new SWItem("SKULL", 1, skullOwner);
|
||||||
|
item.setSkullOwner(skullOwner);
|
||||||
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCallback(InvCallback callback) {
|
public void setCallback(InvCallback callback) {
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setColor(int color) {
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
public InvCallback getCallback() {
|
public InvCallback getCallback() {
|
||||||
return callback;
|
return callback;
|
||||||
}
|
}
|
||||||
@ -82,11 +81,19 @@ public class SWItem {
|
|||||||
this.hideAttributes = hideAttributes;
|
this.hideAttributes = hideAttributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getPosition() {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
title = name;
|
||||||
|
}
|
||||||
|
|
||||||
public void addLore(String lore) {
|
public void addLore(String lore) {
|
||||||
this.lore.add(lore);
|
this.lore.add(lore);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String writeToString() {
|
public JsonObject writeToString() {
|
||||||
JsonObject object = new JsonObject();
|
JsonObject object = new JsonObject();
|
||||||
object.addProperty("material", material);
|
object.addProperty("material", material);
|
||||||
object.addProperty("position", position);
|
object.addProperty("position", position);
|
||||||
@ -97,6 +104,8 @@ public class SWItem {
|
|||||||
object.addProperty("enchanted", true);
|
object.addProperty("enchanted", true);
|
||||||
if(hideAttributes)
|
if(hideAttributes)
|
||||||
object.addProperty("hideAttributes", true);
|
object.addProperty("hideAttributes", true);
|
||||||
|
if(color != 0)
|
||||||
|
object.addProperty("color", color);
|
||||||
if(lore != null) {
|
if(lore != null) {
|
||||||
JsonArray array = new JsonArray();
|
JsonArray array = new JsonArray();
|
||||||
for (String lores:
|
for (String lores:
|
||||||
@ -106,11 +115,7 @@ public class SWItem {
|
|||||||
object.add("lore", array);
|
object.add("lore", array);
|
||||||
}
|
}
|
||||||
|
|
||||||
return object.toString();
|
return object;
|
||||||
}
|
|
||||||
|
|
||||||
public static SWItem getFromJson(String json) {
|
|
||||||
return new SWItem(json);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
126
src/de/steamwar/bungeecore/comms/packets/inventory/SWListInv.java
Normale Datei
126
src/de/steamwar/bungeecore/comms/packets/inventory/SWListInv.java
Normale Datei
@ -0,0 +1,126 @@
|
|||||||
|
package de.steamwar.bungeecore.comms.packets.inventory;
|
||||||
|
|
||||||
|
import de.steamwar.bungeecore.sql.Schematic;
|
||||||
|
import de.steamwar.bungeecore.sql.SchematicType;
|
||||||
|
import net.md_5.bungee.BungeeCord;
|
||||||
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class SWListInv<T> extends SWInventory {
|
||||||
|
private ListCallback<T> callback;
|
||||||
|
private List<SWListEntry<T>> elements;
|
||||||
|
private int page;
|
||||||
|
|
||||||
|
public SWListInv(ProxiedPlayer p, String t, List<SWListEntry<T>> l, ListCallback<T> c){
|
||||||
|
super(p, (l.size()>45) ? 54 : (l.size() + 9-l.size()%9), t);
|
||||||
|
callback = c;
|
||||||
|
elements = l;
|
||||||
|
page = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void open(){
|
||||||
|
setCallback(-999, (InvCallback.ClickType click) -> close());
|
||||||
|
if(elements.size() > 54){
|
||||||
|
if(page != 0)
|
||||||
|
addItem(45, new SWItem(45, "§eSeite zurück", 10), (InvCallback.ClickType click) -> {
|
||||||
|
page--;
|
||||||
|
open();
|
||||||
|
});
|
||||||
|
else
|
||||||
|
addItem(45, new SWItem(45, "§7Seite zurück", 8), (InvCallback.ClickType click) -> {});
|
||||||
|
if(page < elements.size()/45)
|
||||||
|
addItem(53, new SWItem( 53, "§eSeite vor", 10), "§eSeite vor", (InvCallback.ClickType click) -> {
|
||||||
|
page++;
|
||||||
|
open();
|
||||||
|
});
|
||||||
|
else
|
||||||
|
addItem(53, new SWItem(53, "§eSeite vor", 8), (InvCallback.ClickType click) -> {});
|
||||||
|
}
|
||||||
|
|
||||||
|
int ipageLimit = elements.size() - page*45;
|
||||||
|
if(ipageLimit > 45 && elements.size() > 54){
|
||||||
|
ipageLimit = 45;
|
||||||
|
}
|
||||||
|
int i = page*45;
|
||||||
|
for(int ipage=0; ipage < ipageLimit; ipage++ ){
|
||||||
|
SWItem e = elements.get(i).getItem();
|
||||||
|
|
||||||
|
final int pos = i;
|
||||||
|
addItem(ipage, e);
|
||||||
|
setCallback(ipage, (InvCallback.ClickType click) -> callback.clicked(click, elements.get(pos).getObject()));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
super.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCallback(ListCallback<T> c){
|
||||||
|
callback = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ListCallback<T>{
|
||||||
|
void clicked(InvCallback.ClickType click, T element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SWListEntry<UUID>> createPlayerList(UUID without){
|
||||||
|
List<SWListEntry<UUID>> onlinePlayers = new ArrayList<>();
|
||||||
|
for(ProxiedPlayer player : BungeeCord.getInstance().getPlayer(without).getServer().getInfo().getPlayers()){
|
||||||
|
if(without != null && player.getUniqueId().equals(without))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
onlinePlayers.add(new SWListEntry<>(SWItem.getSkull(player.getName()), player.getUniqueId()));
|
||||||
|
}
|
||||||
|
return onlinePlayers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SWListEntry<UUID>> createGlobalPlayerList(UUID without){
|
||||||
|
List<SWListEntry<UUID>> onlinePlayers = new ArrayList<>();
|
||||||
|
for(ProxiedPlayer player : BungeeCord.getInstance().getPlayers()){
|
||||||
|
if(without != null && player.getUniqueId().equals(without))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
onlinePlayers.add(new SWListEntry<>(SWItem.getSkull(player.getName()), player.getUniqueId()));
|
||||||
|
}
|
||||||
|
return onlinePlayers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SWListEntry<Schematic>> getSchemList(SchematicType type, int steamwarUserId){
|
||||||
|
List<SWListEntry<Schematic>> schemList = new ArrayList<>();
|
||||||
|
|
||||||
|
List<Schematic> schems;
|
||||||
|
if(type == null)
|
||||||
|
schems = Schematic.getSchemsAccessibleByUser(steamwarUserId);
|
||||||
|
else
|
||||||
|
schems = Schematic.getSchemsOfType(steamwarUserId, type);
|
||||||
|
|
||||||
|
for(Schematic s : schems){
|
||||||
|
String m;
|
||||||
|
if(s.getSchemItem().isEmpty())
|
||||||
|
m = "CAULDRON_ITEM";
|
||||||
|
else
|
||||||
|
m = s.getSchemItem();
|
||||||
|
SWItem item = new SWItem(m, 0, "§e" + s.getSchemName());
|
||||||
|
schemList.add(new SWListEntry<>(item, s));
|
||||||
|
}
|
||||||
|
return schemList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class SWListEntry<T>{
|
||||||
|
final SWItem item;
|
||||||
|
final T object;
|
||||||
|
|
||||||
|
public SWListEntry(SWItem item, T object){
|
||||||
|
this.item = item;
|
||||||
|
this.object = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SWItem getItem(){
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getObject(){
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,38 +0,0 @@
|
|||||||
package de.steamwar.bungeecore.coms.handlers;
|
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
|
||||||
import de.steamwar.bungeecore.coms.packets.inventory.InvCallback;
|
|
||||||
import de.steamwar.bungeecore.coms.packets.inventory.SWInventory;
|
|
||||||
import de.steamwar.bungeecore.coms.packets.inventory.SWItem;
|
|
||||||
import de.steamwar.bungeecore.coms.receiver.Handler;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class InventoryCallbackHandler extends Handler {
|
|
||||||
|
|
||||||
public static final Map<String, SWInventory> inventoryHashMap = new HashMap<>();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String getName() {
|
|
||||||
return "InventoryCallback";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handle(ByteArrayDataInput byteArrayDataInput) {
|
|
||||||
String owner = byteArrayDataInput.readUTF();
|
|
||||||
CallbackType type = CallbackType.valueOf(byteArrayDataInput.readUTF());
|
|
||||||
if(type == CallbackType.CLICK) {
|
|
||||||
SWItem item = SWItem.getFromJson(byteArrayDataInput.readUTF());
|
|
||||||
InvCallback.ClickType clickType = InvCallback.ClickType.valueOf(byteArrayDataInput.readUTF());
|
|
||||||
inventoryHashMap.get(owner).handleCallback(clickType, item);
|
|
||||||
}else if(type == CallbackType.CLOSE) {
|
|
||||||
inventoryHashMap.get(owner).handleClose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum CallbackType {
|
|
||||||
CLICK,
|
|
||||||
CLOSE,
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
package de.steamwar.bungeecore.coms.packets;
|
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
|
||||||
import de.steamwar.bungeecore.coms.packets.inventory.SWItem;
|
|
||||||
import de.steamwar.bungeecore.coms.sender.Packet;
|
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
public class InventoryPacket extends Packet {
|
|
||||||
|
|
||||||
String title;
|
|
||||||
String player;
|
|
||||||
int size;
|
|
||||||
HashMap<Integer, SWItem> items;
|
|
||||||
|
|
||||||
public InventoryPacket(int size, String title, ProxiedPlayer player) {
|
|
||||||
items = new HashMap<>();
|
|
||||||
this.title = title;
|
|
||||||
this.size = size;
|
|
||||||
this.player = player.getUniqueId().toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "Inventory";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeVars(ByteArrayDataOutput byteArrayDataOutput) {
|
|
||||||
byteArrayDataOutput.writeUTF(player);
|
|
||||||
byteArrayDataOutput.writeUTF(title);
|
|
||||||
byteArrayDataOutput.writeInt(size);
|
|
||||||
byteArrayDataOutput.writeInt(items.size());
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
if(items.get(i) != null)
|
|
||||||
byteArrayDataOutput.writeUTF(items.get(i).writeToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addItem(SWItem item) {
|
|
||||||
for (int i = 0; i < items.size(); i++) {
|
|
||||||
if (items.get(i) != null) {
|
|
||||||
items.put(i, item);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItem(int index, SWItem item) {
|
|
||||||
items.put(index, item);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
package de.steamwar.bungeecore.coms.packets;
|
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
|
||||||
import de.steamwar.bungeecore.coms.sender.Packet;
|
|
||||||
|
|
||||||
public class PingPacket extends Packet {
|
|
||||||
|
|
||||||
String UUID;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "Ping";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeVars(ByteArrayDataOutput byteArrayDataOutput) {
|
|
||||||
byteArrayDataOutput.writeUTF(UUID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PingPacket setUUID(String UUID) {
|
|
||||||
this.UUID = UUID;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
package de.steamwar.bungeecore.coms.packets.inventory;
|
|
||||||
|
|
||||||
import de.steamwar.bungeecore.coms.handlers.InventoryCallbackHandler;
|
|
||||||
import de.steamwar.bungeecore.coms.packets.CloseInventoryPacket;
|
|
||||||
import de.steamwar.bungeecore.coms.packets.InventoryPacket;
|
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class SWInventory {
|
|
||||||
|
|
||||||
Map<Integer, SWItem> itemMap;
|
|
||||||
InvCallback close;
|
|
||||||
ProxiedPlayer player;
|
|
||||||
int size;
|
|
||||||
String title;
|
|
||||||
|
|
||||||
public SWInventory(ProxiedPlayer proxiedPlayer, int size, String title) {
|
|
||||||
itemMap = new HashMap<>();
|
|
||||||
InventoryCallbackHandler.inventoryHashMap.put(proxiedPlayer.getUniqueId().toString(), this);
|
|
||||||
this.player = proxiedPlayer;
|
|
||||||
this.size = size;
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addItem(SWItem item) {
|
|
||||||
itemMap.put(item.position, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeItem(SWItem item) {
|
|
||||||
itemMap.remove(item.position);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeItem(int position) {
|
|
||||||
itemMap.remove(position);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSize() {
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSize(int size) {
|
|
||||||
this.size = size;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTitle() {
|
|
||||||
return title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTitle(String title) {
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleCallback(InvCallback.ClickType type, SWItem item) {
|
|
||||||
itemMap.get(item.position).callback.clicked(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleClose() {
|
|
||||||
if(close != null)
|
|
||||||
close.clicked(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void open() {
|
|
||||||
InventoryPacket inv = new InventoryPacket(size, title, player);
|
|
||||||
for (Map.Entry<Integer, SWItem> entry : itemMap.entrySet()) {
|
|
||||||
inv.setItem(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
inv.send(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void close() {
|
|
||||||
new CloseInventoryPacket().setPlayer(player).send(player);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
package de.steamwar.bungeecore.coms.receiver;
|
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
|
||||||
|
|
||||||
public abstract class Handler {
|
|
||||||
|
|
||||||
protected abstract String getName();
|
|
||||||
|
|
||||||
public abstract void handle(ByteArrayDataInput byteArrayDataInput);
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
package de.steamwar.bungeecore.coms.receiver;
|
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
|
||||||
import com.google.common.io.ByteStreams;
|
|
||||||
import de.steamwar.bungeecore.coms.handlers.InventoryCallbackHandler;
|
|
||||||
import de.steamwar.bungeecore.listeners.BasicListener;
|
|
||||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
|
||||||
import net.md_5.bungee.event.EventHandler;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class PacketHandler extends BasicListener {
|
|
||||||
|
|
||||||
private static final Map<String, Handler> handlerMap = new HashMap<>();
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPluginMessage(PluginMessageEvent event) {
|
|
||||||
if(!event.getTag().equalsIgnoreCase("sw:return"))
|
|
||||||
return;
|
|
||||||
ByteArrayDataInput in = ByteStreams.newDataInput(event.getData());
|
|
||||||
String handler = in.readUTF();
|
|
||||||
handlerMap.get(handler).handle(in);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void registerHandler(Handler handler) {
|
|
||||||
handlerMap.put(handler.getName(), handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
static {
|
|
||||||
registerHandler(new InventoryCallbackHandler());
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
package de.steamwar.bungeecore.coms.sender;
|
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
|
||||||
import net.md_5.bungee.api.connection.Server;
|
|
||||||
|
|
||||||
public abstract class Packet {
|
|
||||||
|
|
||||||
public void send(Server server) {
|
|
||||||
PacketSender.sendPacket(this, server);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void send(ProxiedPlayer player) {
|
|
||||||
PacketSender.sendPacket(this, player);
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract String getName();
|
|
||||||
|
|
||||||
//TODO Write Variables Automatic
|
|
||||||
public abstract void writeVars(ByteArrayDataOutput byteArrayDataOutput);
|
|
||||||
}
|
|
@ -24,7 +24,7 @@ import de.steamwar.bungeecore.Servertype;
|
|||||||
import de.steamwar.bungeecore.Subserver;
|
import de.steamwar.bungeecore.Subserver;
|
||||||
import de.steamwar.bungeecore.commands.BauCommand;
|
import de.steamwar.bungeecore.commands.BauCommand;
|
||||||
import de.steamwar.bungeecore.commands.TpCommand;
|
import de.steamwar.bungeecore.commands.TpCommand;
|
||||||
import de.steamwar.bungeecore.coms.packets.PingPacket;
|
import de.steamwar.bungeecore.comms.packets.PingPacket;
|
||||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
import de.steamwar.bungeecore.sql.Team;
|
import de.steamwar.bungeecore.sql.Team;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
@ -189,7 +189,7 @@ public class ChatListener extends BasicListener {
|
|||||||
for (String curr : msgSplits) {
|
for (String curr : msgSplits) {
|
||||||
if(curr.equalsIgnoreCase("@" + target.getName())) {
|
if(curr.equalsIgnoreCase("@" + target.getName())) {
|
||||||
builder.append("§e@").append(target.getName()).append(chatcolor).append(" ");
|
builder.append("§e@").append(target.getName()).append(chatcolor).append(" ");
|
||||||
new PingPacket().setUUID(target.getUniqueId().toString()).send(target);
|
new PingPacket().setUser(SteamwarUser.get(target).getId()).send(target);
|
||||||
}else {
|
}else {
|
||||||
builder.append(curr).append(" ");
|
builder.append(curr).append(" ");
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,23 @@ public class Schematic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<Schematic> getSchemsAccessibleByUser(int schemOwner){
|
||||||
|
try{
|
||||||
|
ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, Rank, SchemFormat FROM Schematic WHERE SchemOwner = ? ORDER BY SchemName", schemOwner);
|
||||||
|
List<Schematic> schematics = new ArrayList<>();
|
||||||
|
while(schematic.next()){
|
||||||
|
schematics.add(new Schematic(schematic));
|
||||||
|
}
|
||||||
|
List<SchematicMember> addedSchems = SchematicMember.getAccessibleSchems(schemOwner);
|
||||||
|
for(SchematicMember schem : addedSchems){
|
||||||
|
schematics.add(getSchemFromDB(schem.getSchemName(), schem.getSchemOwner()));
|
||||||
|
}
|
||||||
|
return schematics;
|
||||||
|
}catch(SQLException e){
|
||||||
|
throw new SecurityException("Failed listing schematics", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public int getSchemID() {
|
public int getSchemID() {
|
||||||
return schemID;
|
return schemID;
|
||||||
}
|
}
|
||||||
@ -107,6 +124,15 @@ public class Schematic {
|
|||||||
return schemType;
|
return schemType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSchemItem() {
|
||||||
|
try {
|
||||||
|
ResultSet set = SQL.select("SELECT Item WHERE SchemID = ? AND SchemOwner = ?", schemID, schemOwner);
|
||||||
|
return set.getString("Item");
|
||||||
|
} catch (SQLException throwables) {
|
||||||
|
return "CAULDRON_ITEM";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setSchemType(SchematicType schemType) {
|
public void setSchemType(SchematicType schemType) {
|
||||||
this.schemType = schemType;
|
this.schemType = schemType;
|
||||||
SQL.update("UPDATE Schematic SET SchemType = ? WHERE SchemID = ?", schemType.toDB(), schemID);
|
SQL.update("UPDATE Schematic SET SchemType = ? WHERE SchemID = ?", schemType.toDB(), schemID);
|
||||||
|
115
src/de/steamwar/bungeecore/sql/SchematicMember.java
Normale Datei
115
src/de/steamwar/bungeecore/sql/SchematicMember.java
Normale Datei
@ -0,0 +1,115 @@
|
|||||||
|
package de.steamwar.bungeecore.sql;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class SchematicMember {
|
||||||
|
private final int schemOwner;
|
||||||
|
private final String schemName;
|
||||||
|
private final int member;
|
||||||
|
|
||||||
|
private SchematicMember(String schemName, int schemOwner, int schemMember, boolean updateDB){
|
||||||
|
this.schemOwner = schemOwner;
|
||||||
|
member = schemMember;
|
||||||
|
this.schemName = schemName;
|
||||||
|
if(updateDB)
|
||||||
|
updateDB();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SchematicMember(String schemName, int schemOwner, int schemMember){
|
||||||
|
this(schemName, schemOwner, schemMember, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SchematicMember(String schemName, UUID schemOwner, UUID schemMember){
|
||||||
|
this(schemName, SteamwarUser.get(schemOwner).getId(), SteamwarUser.get(schemMember).getId(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateDB(){
|
||||||
|
SQL.update("INSERT INTO SchemMember (SchemName, SchemOwner, Member) VALUES (?, ?, ?)", schemName, schemOwner, member);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SchematicMember getSchemMemberFromDB(String schemName, UUID schemOwner, UUID schemMember){
|
||||||
|
return getSchemMemberFromDB(schemName, SteamwarUser.get(schemOwner).getId(), SteamwarUser.get(schemMember).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SchematicMember getSchemMemberFromDB(String schemName, int schemOwner, int schemMember){
|
||||||
|
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = ? AND SchemOwner = ? AND Member = ?", schemName, schemOwner, schemMember);
|
||||||
|
try {
|
||||||
|
if(schematicMember == null || !schematicMember.next()){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new SchematicMember(schemName, schemOwner, schemMember, false);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new SecurityException("Could not get schemmember", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SchematicMember getMemberBySchematic(String schemName, int schemMember){
|
||||||
|
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = ? AND Member = ?", schemName, schemMember);
|
||||||
|
try {
|
||||||
|
if(schematicMember == null || !schematicMember.next()){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
int schemOwner = schematicMember.getInt("SchemOwner");
|
||||||
|
return new SchematicMember(schemName, schemOwner, schemMember, false);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new SecurityException("Could not get member", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SchematicMember> getSchemMembers(String schemName, UUID schemOwner){
|
||||||
|
return getSchemMembers(schemName, SteamwarUser.get(schemOwner).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SchematicMember> getSchemMembers(String schemName, int schemOwner){
|
||||||
|
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = ? AND SchemOwner = ?", schemName, schemOwner);
|
||||||
|
try {
|
||||||
|
List<SchematicMember> schematicMembers = new ArrayList<>();
|
||||||
|
while(schematicMember.next()){
|
||||||
|
int schemMember = schematicMember.getInt("Member");
|
||||||
|
schematicMembers.add(new SchematicMember(schemName, schemOwner, schemMember, false));
|
||||||
|
}
|
||||||
|
return schematicMembers;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new SecurityException("Could not get schemmembers", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SchematicMember> getAccessibleSchems(UUID schemMember){
|
||||||
|
return getAccessibleSchems(SteamwarUser.get(schemMember).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SchematicMember> getAccessibleSchems(int schemMember){
|
||||||
|
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE Member = ?", schemMember);
|
||||||
|
try {
|
||||||
|
List<SchematicMember> schematicMembers = new ArrayList<>();
|
||||||
|
while(schematicMember.next()){
|
||||||
|
String schemName = schematicMember.getString("SchemName");
|
||||||
|
int schemOwner = schematicMember.getInt("SchemOwner");
|
||||||
|
schematicMembers.add(new SchematicMember(schemName, schemOwner, schemMember, false));
|
||||||
|
}
|
||||||
|
return schematicMembers;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new SecurityException("Could not get accessible schems", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSchemOwner() {
|
||||||
|
return schemOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSchemName() {
|
||||||
|
return schemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMember() {
|
||||||
|
return member;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove(){
|
||||||
|
SQL.update("DELETE FROM SchemMember WHERE SchemOwner = ? AND SchemName = ? AND Member = ?", schemOwner, schemName, member);
|
||||||
|
}
|
||||||
|
}
|
In neuem Issue referenzieren
Einen Benutzer sperren