Rework
Dieser Commit ist enthalten in:
Ursprung
bc8f0bae8c
Commit
8f8db48af7
10
pom.xml
10
pom.xml
@ -19,10 +19,6 @@
|
||||
<id>maven</id>
|
||||
<url>https://steamwar.de:81/maven/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>spigotmc-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
@ -51,9 +47,9 @@
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.12.2-R0.1-SNAPSHOT</version>
|
||||
<groupId>steamwar</groupId>
|
||||
<artifactId>Spigot</artifactId>
|
||||
<version>1.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
127
src/de/steamwar/schematicsystem/CheckSchemType.java
Normale Datei
127
src/de/steamwar/schematicsystem/CheckSchemType.java
Normale Datei
@ -0,0 +1,127 @@
|
||||
package de.steamwar.schematicsystem;
|
||||
|
||||
import com.boydti.fawe.FaweAPI;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||
import com.sk89q.worldedit.regions.Region;
|
||||
import de.warking.hunjy.MySQL.Schematic;
|
||||
import de.warking.hunjy.MySQL.SchematicType;
|
||||
import de.warking.hunjy.MySQL.WarkingUser;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class CheckSchemType {
|
||||
|
||||
private static final int TNT = Material.TNT.getId();
|
||||
private static final int SLIME = Material.SLIME_BLOCK.getId();
|
||||
private static final int DISPENSER = Material.DISPENSER.getId();
|
||||
|
||||
private static final Map<SchematicType, CheckSchemType> types = new EnumMap<>(SchematicType.class);
|
||||
|
||||
private final String name;
|
||||
|
||||
private final int width;
|
||||
private final int height;
|
||||
private final int depth;
|
||||
|
||||
private final int maxTNT;
|
||||
private final int maxSlime;
|
||||
private final int maxTNTSlime;
|
||||
private final int maxDispenser;
|
||||
private final List<Integer> forbiddenIds;
|
||||
private final LinkedList<String> checkList;
|
||||
|
||||
CheckSchemType(ConfigurationSection section) {
|
||||
name = section.getName();
|
||||
width = section.getInt("width");
|
||||
height = section.getInt("height");
|
||||
depth = section.getInt("depth");
|
||||
|
||||
maxTNT = section.getInt("maxTNT");
|
||||
maxSlime = section.getInt("maxSlime");
|
||||
maxTNTSlime = section.getInt("maxTNTSlime");
|
||||
maxDispenser = section.getInt("maxDispenser");
|
||||
|
||||
forbiddenIds = section.getIntegerList("forbiddenIds");
|
||||
checkList = new LinkedList<>(section.getStringList("checkList"));
|
||||
types.put(SchematicType.fromDB(name), this);
|
||||
types.put(SchematicType.fromDB("c" + name), this);
|
||||
}
|
||||
|
||||
public static CheckSchemType get(SchematicType type){
|
||||
return types.get(type);
|
||||
}
|
||||
|
||||
public LinkedList<String> getCheckList() {
|
||||
return checkList;
|
||||
}
|
||||
|
||||
public SchematicType getAcceptedType(){
|
||||
return SchematicType.fromDB(name);
|
||||
}
|
||||
|
||||
public String autoCheck(Schematic schematic) {
|
||||
Clipboard clipboard;
|
||||
|
||||
try {
|
||||
clipboard = FaweAPI.load(new File(SchematicSystem.SCHEM_DIR + WarkingUser.get(schematic.getSchemOwner()).getUUID(), schematic.getSchemName() + ".schematic")).getClipboard();
|
||||
if(clipboard == null)
|
||||
throw new IOException();
|
||||
} catch (IOException e) {
|
||||
Bukkit.getLogger().log(Level.SEVERE, "Schematic could not be loaded", e);
|
||||
return "Die Schematic konnte nicht geladen werden";
|
||||
}
|
||||
|
||||
Vector dimensions = clipboard.getDimensions();
|
||||
|
||||
if(dimensions.getBlockX() > width || dimensions.getBlockY() > height || dimensions.getBlockZ() > depth)
|
||||
return "Das " + name + " überschreitet die Maximalmaße";
|
||||
|
||||
Region region = clipboard.getRegion();
|
||||
Vector min = region.getMinimumPoint();
|
||||
Vector max = region.getMaximumPoint();
|
||||
|
||||
int tnt = 0;
|
||||
int slime = 0;
|
||||
int dispenser = 0;
|
||||
|
||||
for(int x = min.getBlockX(); x <= max.getBlockX(); x++){
|
||||
for(int y = min.getBlockY(); y <= max.getBlockY(); y++){
|
||||
for(int z = min.getBlockZ(); z <= max.getBlockZ(); z++){
|
||||
Vector vector = new Vector(x, y, z);
|
||||
final int blockId = clipboard.getBlock(vector).getId();
|
||||
|
||||
if(blockId == TNT)
|
||||
tnt++;
|
||||
|
||||
if(blockId == SLIME)
|
||||
slime++;
|
||||
|
||||
if(blockId == DISPENSER)
|
||||
dispenser++;
|
||||
|
||||
if(forbiddenIds.contains(blockId))
|
||||
return "Der Block " + Material.getMaterial(blockId).name() + " ist verboten";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int tntSlime = tnt + slime;
|
||||
if(maxTNT != 0 && tnt > maxTNT)
|
||||
return "Zu viele TNT-Blöcke";
|
||||
if(maxSlime != 0 && slime > maxSlime)
|
||||
return "Zu viele Schleim-Blöcke";
|
||||
if(maxDispenser != 0 && dispenser > maxDispenser)
|
||||
return "Zu viele Werfer";
|
||||
if(maxTNTSlime != 0 && tntSlime > maxTNTSlime)
|
||||
return "Zu viel Schleim+TNT";
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -2,63 +2,53 @@ package de.steamwar.schematicsystem;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||
import de.steamwar.schematicsystem.check.CheckUtils;
|
||||
import de.steamwar.schematicsystem.utils.CommandRemover;
|
||||
import de.steamwar.schematicsystem.commands.CheckCommand;
|
||||
import de.steamwar.schematicsystem.commands.SchematicCommand;
|
||||
import de.steamwar.schematicsystem.listener.PlayerCommandPreProcessListener;
|
||||
import de.steamwar.schematicsystem.listener.PlayerJoinListener;
|
||||
import de.steamwar.schematicsystem.listener.PlayerQuitListener;
|
||||
import de.steamwar.schematicsystem.utils.Config;
|
||||
import de.steamwar.schematicsystem.utils.CommandRemover;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class SchematicSystem extends JavaPlugin {
|
||||
|
||||
public static final String SCHEM_DIR = "/home/minecraft/schematics/";
|
||||
public static final String PREFIX = "§6Schematic§8» §7";
|
||||
|
||||
private static SchematicSystem instance;
|
||||
public static final String PREFIX = "§eSchematic§8» §7";
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
|
||||
Config.load();
|
||||
|
||||
try {
|
||||
CommandRemover.removeAll("/schematic", "/schem", "//schematic", "//schem");
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
if (!new File("plugins/" + getName() + "/config.yml").exists()) {
|
||||
saveDefaultConfig();
|
||||
Bukkit.getLogger().info(SchematicSystem.PREFIX + "config.yml erstellt und geladen!");
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
FileConfiguration config = getConfig();
|
||||
|
||||
ConfigurationSection types = config.getConfigurationSection("Schematics");
|
||||
for(String sectionName : types.getKeys(false))
|
||||
new CheckSchemType(types.getConfigurationSection(sectionName));
|
||||
|
||||
CommandRemover.removeAll("/schematic", "/schem", "//schematic", "//schem");
|
||||
|
||||
getCommand("schematic").setExecutor(new SchematicCommand());
|
||||
getCommand("/schematic").setExecutor(new SchematicCommand());
|
||||
getCommand("schem").setExecutor(new SchematicCommand());
|
||||
getCommand("/schem").setExecutor(new SchematicCommand());
|
||||
getCommand("check").setExecutor(new CheckCommand());
|
||||
|
||||
init();
|
||||
PluginManager pm = Bukkit.getPluginManager();
|
||||
pm.registerEvents(new PlayerJoinListener(), this);
|
||||
pm.registerEvents(new PlayerQuitListener(), this);
|
||||
pm.registerEvents(new PlayerCommandPreProcessListener(), this);
|
||||
|
||||
Bukkit.getScheduler().scheduleAsyncRepeatingTask(instance, () -> {
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> {
|
||||
if(CheckUtils.getCSchematicsSize() > 0)
|
||||
CheckUtils.sendTeamMembersCSchematics(CheckUtils.sendTeamMembersCSchematicsInfo());
|
||||
}, 0, 20*60*10);
|
||||
}
|
||||
|
||||
public void onDisable() {
|
||||
|
||||
}
|
||||
|
||||
public void init() {
|
||||
PluginManager pm = Bukkit.getPluginManager();
|
||||
pm.registerEvents(new PlayerJoinListener(), instance);
|
||||
pm.registerEvents(new PlayerQuitListener(), instance);
|
||||
pm.registerEvents(new PlayerCommandPreProcessListener(), instance);
|
||||
}
|
||||
|
||||
|
||||
public static SchematicSystem getInstance() {
|
||||
return instance;
|
||||
}, 0, 6000);
|
||||
}
|
||||
|
||||
public static WorldEditPlugin getWorldEditPlugin() {
|
||||
|
@ -1,11 +1,12 @@
|
||||
package de.steamwar.schematicsystem.check;
|
||||
|
||||
import com.sk89q.worldedit.EditSession;
|
||||
import de.steamwar.schematicsystem.CheckSchemType;
|
||||
import de.steamwar.schematicsystem.SchematicSystem;
|
||||
import de.steamwar.schematicsystem.utils.CheckedSchematic;
|
||||
import de.warking.hunjy.MySQL.Schematic;
|
||||
import de.warking.hunjy.MySQL.SchematicType;
|
||||
import de.warking.hunjy.MySQL.WarkingUser;
|
||||
import de.steamwar.schematicsystem.utils.CheckedSchematic;
|
||||
import de.steamwar.schematicsystem.utils.Config;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
@ -17,50 +18,57 @@ import java.util.*;
|
||||
|
||||
public class CheckSession {
|
||||
|
||||
public static ArrayList<CheckSession> checkSessions = new ArrayList<>();
|
||||
private static Set<CheckSession> checkSessions = new HashSet<>();
|
||||
|
||||
private UUID uuid; //player
|
||||
private Schematic schematic;
|
||||
private int position; //position in checklist
|
||||
private ListIterator<String> checkList;
|
||||
|
||||
private Timestamp startTime;
|
||||
private Timestamp stopTime;
|
||||
|
||||
EditSession editSession;
|
||||
private EditSession editSession;
|
||||
|
||||
public CheckSession(UUID uuid, Schematic schematic, int position) {
|
||||
public CheckSession(UUID uuid, Schematic schematic) {
|
||||
this.uuid = uuid;
|
||||
this.schematic = schematic;
|
||||
this.position = position;
|
||||
checkList = CheckSchemType.get(schematic.getSchemType()).getCheckList().listIterator();
|
||||
|
||||
checkSessions.add(this);
|
||||
setStartTime();
|
||||
}
|
||||
|
||||
public static boolean doesPlayerCheck(Player player) {
|
||||
UUID uuid = player.getUniqueId();
|
||||
public static boolean currentChecking(){
|
||||
return !checkSessions.isEmpty();
|
||||
}
|
||||
|
||||
for(CheckSession checkSession : checkSessions) {
|
||||
if(checkSession.getUuid().equals(uuid))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
public static CheckSession getCheckSession() {
|
||||
return checkSessions.iterator().next();
|
||||
}
|
||||
|
||||
public static CheckSession getCheckSession(Player player) {
|
||||
for(CheckSession checkSession : checkSessions) {
|
||||
if(checkSession.getUuid().equals(player.getUniqueId()))
|
||||
return checkSession;
|
||||
for(CheckSession session : checkSessions){
|
||||
if(session.uuid.equals(player.getUniqueId()))
|
||||
return session;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void sendNextCheck() {
|
||||
if(!checkList.hasNext()){
|
||||
Bukkit.getPlayer(uuid).sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §e" + schematic.getSchemName() + " §avon §e" + WarkingUser.get(schematic.getSchemOwner()).getUserName() + " §aist nun freigegeben!");
|
||||
schematic.setSchemType(CheckSchemType.get(schematic.getSchemType()).getAcceptedType());
|
||||
new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), WarkingUser.get(this.uuid).getId(), this.startTime, this.stopTime, "freigegeben");
|
||||
|
||||
removeSchematic();
|
||||
return;
|
||||
}
|
||||
|
||||
setStopTime();
|
||||
this.position++;
|
||||
setStartTime();
|
||||
if(getChecklist().size() > (this.position + 1)) {
|
||||
Bukkit.getPlayer(uuid).sendMessage(getCheckListEntry(this.position));
|
||||
Bukkit.getPlayer(uuid).sendMessage(checkList.next());
|
||||
|
||||
if(checkList.hasNext()){
|
||||
|
||||
TextComponent next = new TextComponent("next ");
|
||||
next.setColor(ChatColor.GREEN);
|
||||
@ -72,10 +80,7 @@ public class CheckSession {
|
||||
|
||||
next.addExtra(decline);
|
||||
Bukkit.getPlayer(uuid).spigot().sendMessage(next);
|
||||
return;
|
||||
} else if(getChecklist().size() == (this.position + 1)) {
|
||||
Bukkit.getPlayer(uuid).sendMessage(getCheckListEntry(this.position));
|
||||
|
||||
}else{
|
||||
TextComponent accept = new TextComponent("accept ");
|
||||
accept.setColor(ChatColor.GREEN);
|
||||
accept.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check allow"));
|
||||
@ -86,107 +91,33 @@ public class CheckSession {
|
||||
|
||||
accept.addExtra(decline);
|
||||
Bukkit.getPlayer(uuid).spigot().sendMessage(accept);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> getChecklist() {
|
||||
if(schematic.getSchemType() == SchematicType.Cwargear)
|
||||
return Config.WarGearCheckList;
|
||||
if(schematic.getSchemType() == SchematicType.Cminiwargear)
|
||||
return Config.MiniWarGearCheckList;
|
||||
if(schematic.getSchemType() == SchematicType.Cwarship)
|
||||
return Config.WarShipCheckList;
|
||||
if(schematic.getSchemType() == SchematicType.Cairship)
|
||||
return Config.AirShipCheckList;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getCheckListEntry(int position) {
|
||||
return getChecklist().get(position);
|
||||
}
|
||||
|
||||
public void allowSchematic() {
|
||||
if(schematic.getSchemType() == SchematicType.Cwargear) {
|
||||
schematic.setSchemType(SchematicType.wargear);
|
||||
}
|
||||
if(schematic.getSchemType() == SchematicType.Cminiwargear) {
|
||||
schematic.setSchemType(SchematicType.miniwargear);
|
||||
}
|
||||
if(schematic.getSchemType() == SchematicType.Cwarship) {
|
||||
schematic.setSchemType(SchematicType.warship);
|
||||
}
|
||||
if(schematic.getSchemType() == SchematicType.Cairship) {
|
||||
schematic.setSchemType(SchematicType.airship);
|
||||
}
|
||||
CheckedSchematic checkedSchematic = new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), WarkingUser.get(this.uuid).getId(), this.startTime, this.stopTime, "freigegeben");
|
||||
|
||||
removeSchematic();
|
||||
remove();
|
||||
}
|
||||
|
||||
public void declineSchematic(String declineReason) {
|
||||
this.schematic.setSchemType(SchematicType.normal);
|
||||
CheckedSchematic checkedSchematic = new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), WarkingUser.get(this.uuid).getId(), this.startTime, this.stopTime, declineReason);
|
||||
removeSchematic();
|
||||
remove();
|
||||
}
|
||||
schematic.setSchemType(SchematicType.Normal);
|
||||
new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), WarkingUser.get(this.uuid).getId(), this.startTime, this.stopTime, declineReason);
|
||||
|
||||
public void remove() {
|
||||
checkSessions.remove(this);
|
||||
removeSchematic();
|
||||
}
|
||||
|
||||
public void removeSchematic() {
|
||||
this.editSession.undo(editSession);
|
||||
}
|
||||
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public void setUuid(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
checkSessions.remove(this);
|
||||
}
|
||||
|
||||
public Schematic getSchematic() {
|
||||
return schematic;
|
||||
}
|
||||
|
||||
public void setSchematic(Schematic schematic) {
|
||||
this.schematic = schematic;
|
||||
}
|
||||
|
||||
public int getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public void setPosition(int position) {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public Timestamp getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime() {
|
||||
private void setStartTime() {
|
||||
Date date = new Date();
|
||||
Timestamp timestamp = new Timestamp(date.getTime());
|
||||
this.startTime = timestamp;
|
||||
this.startTime = new Timestamp(date.getTime());
|
||||
}
|
||||
|
||||
public Timestamp getStopTime() {
|
||||
return stopTime;
|
||||
}
|
||||
|
||||
public void setStopTime() {
|
||||
private void setStopTime() {
|
||||
Date date = new Date();
|
||||
Timestamp timestamp = new Timestamp(date.getTime());
|
||||
this.stopTime = timestamp;
|
||||
}
|
||||
|
||||
public EditSession getEditSession() {
|
||||
return editSession;
|
||||
this.stopTime = new Timestamp(date.getTime());
|
||||
}
|
||||
|
||||
public void setEditSession(EditSession editSession) {
|
||||
|
@ -1,15 +1,10 @@
|
||||
package de.steamwar.schematicsystem.check;
|
||||
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||
import com.sk89q.worldedit.regions.Region;
|
||||
import de.steamwar.schematicsystem.SchematicSystem;
|
||||
import de.warking.hunjy.MySQL.Schematic;
|
||||
import de.warking.hunjy.MySQL.SchematicType;
|
||||
import de.warking.hunjy.MySQL.UserGroup;
|
||||
import de.warking.hunjy.MySQL.WarkingUser;
|
||||
import de.steamwar.schematicsystem.SchematicSystem;
|
||||
import de.steamwar.schematicsystem.utils.Config;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
import net.md_5.bungee.api.chat.HoverEvent;
|
||||
@ -17,148 +12,29 @@ import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class CheckUtils {
|
||||
private CheckUtils(){}
|
||||
|
||||
public static boolean isSchematicNameAllowed(String schematicName) {
|
||||
if(schematicName.contains("/") ||
|
||||
public static boolean schemnameForbidden(String schematicName) {
|
||||
return schematicName.contains("/") ||
|
||||
schematicName.contains("\\") ||
|
||||
schematicName.contains("<") ||
|
||||
schematicName.contains(">") ||
|
||||
schematicName.contains("^") ||
|
||||
schematicName.contains("°") ||
|
||||
schematicName.contains("'") ||
|
||||
schematicName.contains("\"")) {
|
||||
return false;
|
||||
} else
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Checkresult checkSchematic(Clipboard clipboard, List<Integer> forbiddenBlocks, String modus) {
|
||||
|
||||
Region region = clipboard.getRegion();
|
||||
Vector min = region.getMinimumPoint();
|
||||
Vector max = region.getMaximumPoint();
|
||||
|
||||
int tnt = 0;
|
||||
int slime = 0;
|
||||
int dispenser = 0;
|
||||
|
||||
for (int x = min.getBlockX(); x <= max.getBlockX(); x++) {
|
||||
for (int y = min.getBlockY(); y <= max.getBlockY(); y++) {
|
||||
for (int z = min.getBlockZ(); z <= max.getBlockZ(); z++) {
|
||||
Vector vector = new Vector(x, y, z);
|
||||
|
||||
//tnt check
|
||||
if(clipboard.getBlock(vector).getId() == 46)
|
||||
tnt++;
|
||||
|
||||
//slime check
|
||||
if(clipboard.getBlock(vector).getId() == 165) {
|
||||
if(!modus.equals("WarGear") && !modus.equals("MiniWarGear"))
|
||||
slime++;
|
||||
}
|
||||
|
||||
//dispenser check
|
||||
if(clipboard.getBlock(vector).getId() == 23)
|
||||
dispenser++;
|
||||
|
||||
//forbidden check
|
||||
if (forbiddenBlocks.contains(clipboard.getBlock(vector).getId())) {
|
||||
Checkresult checkresult = new Checkresult(false, "VERBOTENE ID", clipboard.getBlock(vector).getId());
|
||||
return checkresult;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int tntSlime = tnt + slime;
|
||||
if(modus.equalsIgnoreCase("WarGear")) {
|
||||
if(Config.WarGearMaxTNT < tnt) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel TNT");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.WarGearMaxSchleim < slime) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel SCHLEIM");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.WarGearMaxDispenser < dispenser) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viele DISPENSER");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.WarGearTNTSchleim < tntSlime) {
|
||||
Checkresult checkresult = new Checkresult(false, "TNT und SCHLEIM Summe überschritten");
|
||||
return checkresult;
|
||||
}
|
||||
}
|
||||
if(modus.equalsIgnoreCase("MiniWarGear")) {
|
||||
if(Config.MiniWarGearMaxTNT < tnt) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel TNT");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.MiniWarGearMaxSchleim < slime) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel SCHLEIM");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.MiniWarGearMaxDispenser < dispenser) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viele DISPENSER");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.MiniWarGearTNTSchleim < tntSlime) {
|
||||
Checkresult checkresult = new Checkresult(false, "TNT und SCHLEIM Summe überschritten");
|
||||
return checkresult;
|
||||
}
|
||||
}
|
||||
if(modus.equalsIgnoreCase("WarShip")) {
|
||||
if(Config.WarShipMaxTNT < tnt) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel TNT");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.WarShipMaxSchleim < slime) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel SCHLEIM");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.WarShipMaxDispenser < dispenser) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viele DISPENSER");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.WarShipTNTSchleim < tntSlime) {
|
||||
Checkresult checkresult = new Checkresult(false, "TNT und SCHLEIM Summe überschritten");
|
||||
return checkresult;
|
||||
}
|
||||
}
|
||||
if(modus.equalsIgnoreCase("AirShip")) {
|
||||
if(Config.AirShipMaxTNT < tnt) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel TNT");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.AirShipMaxSchleim < slime) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viel SCHLEIM");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.AirShipMaxDispenser < dispenser) {
|
||||
Checkresult checkresult = new Checkresult(false, "zu viele DISPENSER");
|
||||
return checkresult;
|
||||
}
|
||||
if(Config.AirShipTNTSchleim < tntSlime) {
|
||||
Checkresult checkresult = new Checkresult(false, "TNT und SCHLEIM Summe überschritten");
|
||||
return checkresult;
|
||||
}
|
||||
}
|
||||
Checkresult checkresult = new Checkresult(true);
|
||||
return checkresult;
|
||||
schematicName.contains("\"");
|
||||
}
|
||||
|
||||
public static boolean allowedToCheck(Player player) {
|
||||
WarkingUser warkingUser = WarkingUser.get(player.getUniqueId());
|
||||
if(warkingUser.getUserGroup() == UserGroup.Supporter ||
|
||||
return warkingUser.getUserGroup() == UserGroup.Supporter ||
|
||||
warkingUser.getUserGroup() == UserGroup.Developer ||
|
||||
warkingUser.getUserGroup() == UserGroup.Moderator ||
|
||||
warkingUser.getUserGroup() == UserGroup.Admin)
|
||||
return true;
|
||||
return false;
|
||||
warkingUser.getUserGroup() == UserGroup.Admin;
|
||||
}
|
||||
|
||||
public static void sendTeamMembersCSchematics(String message) {
|
||||
@ -169,19 +45,16 @@ public class CheckUtils {
|
||||
}
|
||||
|
||||
public static int getCSchematicsSize() {
|
||||
int size = Schematic.getAllSchemsOfType(SchematicType.Cairship).size() +
|
||||
Schematic.getAllSchemsOfType(SchematicType.Cminiwargear).size() +
|
||||
Schematic.getAllSchemsOfType(SchematicType.Cwargear).size() +
|
||||
Schematic.getAllSchemsOfType(SchematicType.Cwarship).size();
|
||||
|
||||
int size = 0;
|
||||
for(SchematicType type : SchematicType.values()){
|
||||
if(type.check())
|
||||
size += Schematic.getAllSchemsOfType(type).size();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
public static String sendTeamMembersCSchematicsInfo() {
|
||||
int size = Schematic.getAllSchemsOfType(SchematicType.Cairship).size() +
|
||||
Schematic.getAllSchemsOfType(SchematicType.Cminiwargear).size() +
|
||||
Schematic.getAllSchemsOfType(SchematicType.Cwargear).size() +
|
||||
Schematic.getAllSchemsOfType(SchematicType.Cwarship).size();
|
||||
int size = getCSchematicsSize();
|
||||
|
||||
String message = "";
|
||||
if(size == 0)
|
||||
@ -194,108 +67,27 @@ public class CheckUtils {
|
||||
return message;
|
||||
}
|
||||
|
||||
public static void sendTeammemberSchematicList(Player player, int filesPerPage, int currentPage) {
|
||||
public static void sendTeammemberSchematicList(Player player) {
|
||||
List<Schematic> schematicList = new LinkedList<>();
|
||||
|
||||
List<Schematic> schematicList = getAllCSchems();
|
||||
for(SchematicType type : SchematicType.values()) {
|
||||
if (type.check())
|
||||
schematicList.addAll(Schematic.getAllSchemsOfType(type));
|
||||
}
|
||||
|
||||
if(schematicList.isEmpty()) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§aMomentan gibt es keine Schematics zu prüfen!");
|
||||
return;
|
||||
}
|
||||
|
||||
int pages;
|
||||
player.sendMessage("§e" + schematicList.size() + " ungeprüfte Schematics");
|
||||
|
||||
double doublePages = (Double.valueOf(schematicList.size()) / Double.valueOf(filesPerPage));
|
||||
int intPages = schematicList.size() / filesPerPage;
|
||||
|
||||
if(schematicList.size() <= filesPerPage) {
|
||||
pages = 1;
|
||||
} else if(doublePages > intPages) {
|
||||
pages = (intPages + 1);
|
||||
} else
|
||||
pages = intPages;
|
||||
|
||||
int currPage = currentPage;
|
||||
|
||||
if(currPage >= pages) return;
|
||||
|
||||
player.sendMessage("§5======§8[§dSeite " + (currentPage + 1) + " §7/ §d" + pages + " §7| §d" + schematicList.size() + " ungeprüfte Schematic(s)§8]§5======");
|
||||
|
||||
for(int i = currPage * filesPerPage; i < (currPage * filesPerPage) + filesPerPage; i++) {
|
||||
if(schematicList.size() <= i) break;
|
||||
|
||||
Schematic schematic = schematicList.get(i);
|
||||
|
||||
String schematicType = "";
|
||||
if(schematic.getSchemType() == SchematicType.Cairship)
|
||||
schematicType = "§7[§8CAS§7] ";
|
||||
if(schematic.getSchemType() == SchematicType.Cminiwargear)
|
||||
schematicType = "§7[§8CMWG§7] ";
|
||||
if(schematic.getSchemType() == SchematicType.Cwargear)
|
||||
schematicType = "§7[§8CWG§7] ";
|
||||
if(schematic.getSchemType() == SchematicType.Cwarship)
|
||||
schematicType = "§7[§8CWS§7] ";
|
||||
|
||||
String schematicPlayer = "§7[§a" + WarkingUser.get(schematic.getSchemOwner()).getUserName() + "§7] ";
|
||||
|
||||
TextComponent schematics = new TextComponent(schematicType + schematicPlayer + "§b" + schematic.getSchemName());
|
||||
for(Schematic schematic : schematicList) {
|
||||
TextComponent schematics = new TextComponent("§8" + schematic.getSchemType().getKuerzel() + " §7" + WarkingUser.get(schematic.getSchemOwner()).getUserName() + " §e" + schematic.getSchemName());
|
||||
schematics.setBold(true);
|
||||
|
||||
schematics.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic prüfen...").create()));
|
||||
schematics.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic prüfen").create()));
|
||||
schematics.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check schematic " + schematic.getSchemName() + " " + WarkingUser.get(schematic.getSchemOwner()).getUserName()));
|
||||
|
||||
player.spigot().sendMessage(schematics);
|
||||
}
|
||||
|
||||
if(pages <= 1) return;
|
||||
|
||||
if(currPage == 0) {
|
||||
TextComponent nextPage = new TextComponent("Nächste Seite >>");
|
||||
nextPage.setColor(ChatColor.RED);
|
||||
nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create()));
|
||||
nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check checklist 1"));
|
||||
player.spigot().sendMessage(nextPage);
|
||||
} else if((currPage + 1) == pages) {
|
||||
TextComponent beforePage = new TextComponent("<< Vorherige Seite");
|
||||
beforePage.setColor(ChatColor.RED);
|
||||
beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create()));
|
||||
beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check checklist " + (currPage - 1)));
|
||||
player.spigot().sendMessage(beforePage);
|
||||
} else {
|
||||
TextComponent beforePage = new TextComponent("<< Seite ");
|
||||
beforePage.setColor(ChatColor.RED);
|
||||
beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create()));
|
||||
beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check checklist " + (currPage - 1)));
|
||||
|
||||
TextComponent nextPage = new TextComponent(">>");
|
||||
nextPage.setColor(ChatColor.RED);
|
||||
nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create()));
|
||||
nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check checklist " + (currPage + 1)));
|
||||
|
||||
beforePage.addExtra(nextPage);
|
||||
player.spigot().sendMessage(beforePage);
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Schematic> getAllCSchems() {
|
||||
|
||||
List<Schematic> wargears = Schematic.getAllSchemsOfType(SchematicType.Cwargear);
|
||||
List<Schematic> miniwargears = Schematic.getAllSchemsOfType(SchematicType.Cminiwargear);
|
||||
List<Schematic> warships = Schematic.getAllSchemsOfType(SchematicType.Cwarship);
|
||||
List<Schematic> airships = Schematic.getAllSchemsOfType(SchematicType.Cairship);
|
||||
|
||||
List<Schematic> schematicList = new ArrayList<>();
|
||||
|
||||
for(Schematic schematic : wargears)
|
||||
schematicList.add(schematic);
|
||||
for(Schematic schematic : miniwargears)
|
||||
schematicList.add(schematic);
|
||||
for(Schematic schematic : warships)
|
||||
schematicList.add(schematic);
|
||||
for(Schematic schematic : airships)
|
||||
schematicList.add(schematic);
|
||||
|
||||
return schematicList;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,58 +0,0 @@
|
||||
package de.steamwar.schematicsystem.check;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Checkresult {
|
||||
|
||||
public static ArrayList<Checkresult> checkresults = new ArrayList<>();
|
||||
|
||||
private boolean check; //schematic allowed / declined
|
||||
private String reason; //general reason
|
||||
private int blockID = -1; //not allowed block id / must be initialized -1
|
||||
|
||||
public Checkresult(boolean check) {
|
||||
this.check = check;
|
||||
checkresults.add(this);
|
||||
}
|
||||
|
||||
public Checkresult(boolean check, String reason) {
|
||||
this.check = check;
|
||||
this.reason = reason;
|
||||
checkresults.add(this);
|
||||
}
|
||||
|
||||
public Checkresult(boolean check, String reason, int blockID) {
|
||||
this.check = check;
|
||||
this.reason = reason;
|
||||
this.blockID = blockID;
|
||||
checkresults.add(this);
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
checkresults.remove(this);
|
||||
}
|
||||
|
||||
public boolean isCheck() {
|
||||
return check;
|
||||
}
|
||||
|
||||
public void setCheck(boolean check) {
|
||||
this.check = check;
|
||||
}
|
||||
|
||||
public String getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
public void setReason(String reason) {
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
public int getBlockID() {
|
||||
return blockID;
|
||||
}
|
||||
|
||||
public void setBlockID(int blockID) {
|
||||
this.blockID = blockID;
|
||||
}
|
||||
}
|
@ -8,8 +8,8 @@ import de.steamwar.schematicsystem.SchematicSystem;
|
||||
import de.steamwar.schematicsystem.check.CheckSession;
|
||||
import de.steamwar.schematicsystem.check.CheckUtils;
|
||||
import de.warking.hunjy.MySQL.Schematic;
|
||||
import de.warking.hunjy.MySQL.SchematicType;
|
||||
import de.warking.hunjy.MySQL.WarkingUser;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@ -19,6 +19,7 @@ import org.bukkit.entity.Player;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class CheckCommand implements CommandExecutor {
|
||||
|
||||
@ -29,216 +30,136 @@ public class CheckCommand implements CommandExecutor {
|
||||
|
||||
Player player = (Player) sender;
|
||||
if(CheckUtils.allowedToCheck(player)) {
|
||||
|
||||
if(args.length == 0) {
|
||||
sendHelp(player);
|
||||
help(player);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(args.length == 1) {
|
||||
if(args[0].equalsIgnoreCase("list")) {
|
||||
CheckUtils.sendTeammemberSchematicList(player, 15, 0);
|
||||
return false;
|
||||
}
|
||||
CheckSession checkSession;
|
||||
|
||||
if(args[0].equalsIgnoreCase("next")) {
|
||||
CheckSession checkSession = CheckSession.getCheckSession(player);
|
||||
if(checkSession != null) {
|
||||
switch(args[0]){
|
||||
case "list":
|
||||
CheckUtils.sendTeammemberSchematicList(player);
|
||||
break;
|
||||
case "next":
|
||||
case "allow":
|
||||
checkSession = session(player);
|
||||
if(checkSession != null)
|
||||
checkSession.sendNextCheck();
|
||||
} else {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu prüfst momentan keine Schematic!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(args[0].equalsIgnoreCase("allow")) {
|
||||
CheckSession checkSession = CheckSession.getCheckSession(player);
|
||||
if(checkSession != null) {
|
||||
if(checkSession.getPosition() == (checkSession.getChecklist().size() - 1)) {
|
||||
|
||||
String schemType = "";
|
||||
if(checkSession.getSchematic().getSchemType() == SchematicType.Cwargear)
|
||||
schemType = SchematicType.wargear.name();
|
||||
if(checkSession.getSchematic().getSchemType() == SchematicType.Cminiwargear)
|
||||
schemType = SchematicType.miniwargear.name();
|
||||
if(checkSession.getSchematic().getSchemType() == SchematicType.Cwarship)
|
||||
schemType = SchematicType.warship.name();
|
||||
if(checkSession.getSchematic().getSchemType() == SchematicType.Cairship)
|
||||
schemType = SchematicType.airship.name();
|
||||
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §6" + checkSession.getSchematic().getSchemName() + " §avon §6" + WarkingUser.get(checkSession.getSchematic().getSchemOwner()).getUserName() + " §aist nun als §6" + schemType + " §afreigegeben!");
|
||||
checkSession.allowSchematic();
|
||||
return false;
|
||||
} else {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu hast noch nicht alles überprüft!");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu prüfst momentan keine Schematic!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(args[0].equalsIgnoreCase("cancel")) {
|
||||
if(CheckSession.doesPlayerCheck(player)) {
|
||||
CheckSession checkSession = CheckSession.getCheckSession(player);
|
||||
break;
|
||||
case "cancel":
|
||||
checkSession = session(player);
|
||||
if(checkSession != null){
|
||||
checkSession.removeSchematic();
|
||||
checkSession.remove();
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§aDer Prüfvorgang wurde abgebrochen!");
|
||||
return false;
|
||||
} else
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu prüfst momentan keine Schematic!");
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if(args.length == 2) {
|
||||
if(args[0].equalsIgnoreCase("list")) {
|
||||
int currentPage;
|
||||
try {
|
||||
currentPage = Integer.parseInt(args[1]);
|
||||
} catch (NumberFormatException ex) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu musst eine Zahl angeben!");
|
||||
return false;
|
||||
}
|
||||
CheckUtils.sendTeammemberSchematicList(player, 15, currentPage);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(args.length == 3) {
|
||||
|
||||
if(args[0].equalsIgnoreCase("schematic")) {
|
||||
String schemName = args[1];
|
||||
String owner = args[2];
|
||||
|
||||
if(CheckSession.getCheckSession(player) != null) {
|
||||
break;
|
||||
case "schematic":
|
||||
if(!player.getWorld().getName().equals(player.getUniqueId().toString())) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cZum Prüfen musst du dich auf deinem Bauserver befinden!");
|
||||
return false;
|
||||
}else if(args.length < 3){
|
||||
help(player);
|
||||
return false;
|
||||
}else if(CheckSession.getCheckSession(player) != null) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu prüfst schon eine Schematic!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!CheckUtils.isSchematicNameAllowed(schemName)) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDer angegebene Schematic Name enthält verbotene Zeichen!");
|
||||
WarkingUser user = WarkingUser.get(args[2]);
|
||||
if(user.getUUID() == null){
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cUnbekannter Benutzer");
|
||||
return false;
|
||||
}
|
||||
|
||||
WarkingUser warkingUser = WarkingUser.get(owner);
|
||||
if(warkingUser.getUUID() != null) {
|
||||
Schematic schematic = Schematic.getSchemFromDB(args[1], user.getUUID());
|
||||
if(schematic == null){
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cSchematic gibts nicht");
|
||||
return false;
|
||||
}else if(!schematic.getSchemType().check()){
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cSchematic ist nicht zu prüfen");
|
||||
return false;
|
||||
}else if(schematic.getSchemOwner() == WarkingUser.get(player.getUniqueId()).getId()) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst nicht deine eigenen Schematics prüfen");
|
||||
return false;
|
||||
}
|
||||
|
||||
Schematic schematic = Schematic.getSchemFromDB(schemName, warkingUser.getUUID());
|
||||
if(schematic != null) {
|
||||
if(schematic.getSchemType() != SchematicType.normal &&
|
||||
schematic.getSchemType() != SchematicType.airship &&
|
||||
schematic.getSchemType() != SchematicType.warship &&
|
||||
schematic.getSchemType() != SchematicType.wargear &&
|
||||
schematic.getSchemType() != SchematicType.miniwargear) {
|
||||
|
||||
if(schematic.getSchemOwner() == WarkingUser.get(player.getUniqueId()).getId()) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst nicht deine eigenen Schematics prüfen!");
|
||||
return false;
|
||||
}
|
||||
if(!player.getWorld().getName().equals(player.getUniqueId().toString())) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cZum Prüfen musst du dich auf deinem Bauserver befinden!");
|
||||
return false;
|
||||
}
|
||||
|
||||
List<Player> worldPlayers = player.getWorld().getPlayers();
|
||||
for(Player players : worldPlayers) {
|
||||
if(!players.getUniqueId().toString().equals(player.getWorld().getName())) {
|
||||
WarkingUser warkingUsers = WarkingUser.get(players.getUniqueId());
|
||||
if(!CheckUtils.allowedToCheck(players) &&
|
||||
!warkingUsers.getUUID().toString().equals(WarkingUser.get(schematic.getSchemOwner()).getUUID().toString())) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cZum Prüfen darf sich niemand außer dir, " +
|
||||
"der Schematic Owner oder ein anderes zum Prüfen befähigtes Teammitglied auf deinem Bauserver befinden!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(CheckSession checkSession : CheckSession.checkSessions) {
|
||||
if(checkSession.getSchematic().getSchemName().equals(schematic.getSchemName())
|
||||
&& checkSession.getSchematic().getSchemOwner() == schematic.getSchemOwner()) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDiese Schematic wird bereits geprüft!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
File file = new File(SchematicSystem.SCHEM_DIR + warkingUser.getUUID().toString() + "/" + schemName + ".schematic");
|
||||
if(!file.exists()) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cBeim Laden der Schematic ist ein Fehler aufgetreten! NO SUCH FILE");
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
com.boydti.fawe.object.schematic.Schematic schematicFAWE = FaweAPI.load(file);
|
||||
Location playerLocation = player.getLocation();
|
||||
|
||||
World weWorld = new BukkitWorld(player.getWorld());
|
||||
Vector vector = new Vector(playerLocation.getBlockX(), playerLocation.getBlockY(), playerLocation.getBlockZ());
|
||||
Vector offset = new Vector(schematicFAWE.getClipboard().getRegion().getMinimumPoint()).subtract(schematicFAWE.getClipboard().getOrigin());
|
||||
Vector v;
|
||||
Vector dimensions = schematicFAWE.getClipboard().getDimensions();
|
||||
v = vector.subtract(dimensions.getX()/2 - dimensions.getX()%2, 0, dimensions.getZ()).subtract(offset);
|
||||
|
||||
|
||||
CheckSession checkSession = new CheckSession(player.getUniqueId(), schematic, -1);
|
||||
checkSession.sendNextCheck();
|
||||
|
||||
checkSession.setEditSession(schematicFAWE.paste(weWorld, v));
|
||||
} catch (IOException ex) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cBeim Laden der Schematic ist ein Fehler aufgetreten! ERROR: PASTE / CHECK_SESSION");
|
||||
ex.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDiese Schematic ist nicht zum Prüfen eingesendet!");
|
||||
List<Player> worldPlayers = player.getWorld().getPlayers();
|
||||
for(Player players : worldPlayers) {
|
||||
if(!players.getUniqueId().toString().equals(player.getWorld().getName())) {
|
||||
WarkingUser warkingUsers = WarkingUser.get(players.getUniqueId());
|
||||
if(!CheckUtils.allowedToCheck(players) &&
|
||||
!warkingUsers.getUUID().toString().equals(WarkingUser.get(schematic.getSchemOwner()).getUUID().toString())) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cZum Prüfen darf sich kein Unbeteiligter auf deinem Bauserver befinden!");
|
||||
return false;
|
||||
}
|
||||
|
||||
} else {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cBeim Laden der Schematic ist ein Fehler aufgetreten! SCHEMATIC DOES NOT EXIST");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cBeim Laden der Schematic ist ein Fehler aufgetreten! USER DOES NOT EXIST");
|
||||
}
|
||||
|
||||
File file = new File(SchematicSystem.SCHEM_DIR + user.getUUID().toString(),schematic.getSchemName() + ".schematic");
|
||||
if(!file.exists()) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic gibts nicht?!?!");
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(args.length >= 2) {
|
||||
if(args[0].equalsIgnoreCase("decline")) {
|
||||
try {
|
||||
com.boydti.fawe.object.schematic.Schematic schematicFAWE = FaweAPI.load(file);
|
||||
Location playerLocation = player.getLocation();
|
||||
|
||||
CheckSession checkSession = CheckSession.getCheckSession(player);
|
||||
if(checkSession != null) {
|
||||
World weWorld = new BukkitWorld(player.getWorld());
|
||||
Vector vector = new Vector(playerLocation.getBlockX(), playerLocation.getBlockY(), playerLocation.getBlockZ());
|
||||
Vector offset = new Vector(schematicFAWE.getClipboard().getRegion().getMinimumPoint()).subtract(schematicFAWE.getClipboard().getOrigin());
|
||||
Vector v;
|
||||
Vector dimensions = schematicFAWE.getClipboard().getDimensions();
|
||||
v = vector.subtract(dimensions.getX()/2 - dimensions.getX()%2, 0, dimensions.getZ()).subtract(offset);
|
||||
|
||||
String message = "";
|
||||
for (int i = 1; i < args.length; i++) {
|
||||
message = message + args[i] + " ";
|
||||
}
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §6" + checkSession.getSchematic().getSchemName() + " §avon §6" + WarkingUser.get(checkSession.getSchematic().getSchemOwner()).getUserName() + " §awurde aufgrund von §6" + message + " §anicht freigegeben!");
|
||||
checkSession.declineSchematic(message);
|
||||
} else {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu prüfst momentan keine Schematic!");
|
||||
|
||||
checkSession = new CheckSession(player.getUniqueId(), schematic);
|
||||
checkSession.sendNextCheck();
|
||||
checkSession.setEditSession(schematicFAWE.paste(weWorld, v));
|
||||
} catch (IOException ex) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cSchematic konnte nicht geladen/gepastet werden");
|
||||
Bukkit.getLogger().log(Level.SEVERE, "Failed to load schematic", ex);
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "decline":
|
||||
if(args.length < 2) {
|
||||
help(player);
|
||||
return false;
|
||||
}
|
||||
checkSession = CheckSession.getCheckSession(player);
|
||||
if(checkSession == null)
|
||||
return false;
|
||||
|
||||
StringBuilder message = new StringBuilder();
|
||||
for (int i = 1; i < args.length; i++) message.append(args[i]).append(" ");
|
||||
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §6" + checkSession.getSchematic().getSchemName() + " §avon §6" + WarkingUser.get(checkSession.getSchematic().getSchemOwner()).getUserName() + " §awurde aufgrund von §6" + message + " §anicht freigegeben!");
|
||||
checkSession.declineSchematic(message.toString());
|
||||
break;
|
||||
default:
|
||||
help(player);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void sendHelp(Player player) {
|
||||
if(CheckUtils.allowedToCheck(player)) {
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cTeambefehle:");
|
||||
player.sendMessage("§8/ckeck list - §6Zeigt die Liste der ungeprüften Schematics");
|
||||
player.sendMessage("§8/ckeck schematic <SchematicName> <Besitzer> - §6Zum Checken einer Schematic");
|
||||
player.sendMessage("§8/ckeck allow - §6Schematic freigeben");
|
||||
player.sendMessage("§8/ckeck decline <Grund> - §6Schematic nicht freigeben");
|
||||
player.sendMessage("§8/check cancel - §6Bricht das Prüfen ab");
|
||||
private void help(Player player) {
|
||||
if(CheckUtils.allowedToCheck(player)){
|
||||
player.sendMessage("§8/§echeck list §8- §7Zeigt die Liste der ungeprüften Schematics");
|
||||
player.sendMessage("§8/§echeck schematic [SchematicName] [Besitzer] §8- §7Zum Checken einer Schematic");
|
||||
player.sendMessage("§8/§echeck allow §8- §7Schematic freigeben");
|
||||
player.sendMessage("§8/§echeck decline [Grund] §8- §7Schematic nicht freigeben");
|
||||
player.sendMessage("§8/§echeck cancel §8- §7Bricht das Prüfen ab");
|
||||
}
|
||||
}
|
||||
|
||||
private CheckSession session(Player player){
|
||||
CheckSession checkSession = CheckSession.getCheckSession(player);
|
||||
if(checkSession == null)
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDu prüfst momentan keine Schematic!");
|
||||
return checkSession;
|
||||
}
|
||||
}
|
||||
|
188
src/de/steamwar/schematicsystem/commands/GUI.java
Normale Datei
188
src/de/steamwar/schematicsystem/commands/GUI.java
Normale Datei
@ -0,0 +1,188 @@
|
||||
package de.steamwar.schematicsystem.commands;
|
||||
|
||||
import de.steamwar.inventory.SWInventory;
|
||||
import de.steamwar.inventory.SWItem;
|
||||
import de.steamwar.inventory.SWListInv;
|
||||
import de.steamwar.schematicsystem.SchematicSystem;
|
||||
import de.steamwar.schematicsystem.utils.CheckedSchematic;
|
||||
import de.warking.hunjy.MySQL.Schematic;
|
||||
import de.warking.hunjy.MySQL.SchematicMember;
|
||||
import de.warking.hunjy.MySQL.SchematicType;
|
||||
import de.warking.hunjy.MySQL.WarkingUser;
|
||||
import javafx.util.Pair;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
class GUI {
|
||||
private GUI(){}
|
||||
|
||||
static void changeType(Player p, Schematic schem){
|
||||
List<Pair<SWItem, SchematicType>> types = new LinkedList<>();
|
||||
for(SchematicType type : SchematicType.values()){
|
||||
if(!type.isAssignable())
|
||||
continue;
|
||||
|
||||
SWItem item = new SWItem(Material.STONE_BUTTON, type.name());
|
||||
if(type.fightType())
|
||||
item.setEnchanted(true);
|
||||
|
||||
types.add(new Pair<>(item, type));
|
||||
}
|
||||
|
||||
SWListInv<SchematicType> inv = new SWListInv<>(p, "Typ ändern", (clickType, schematicType) -> {
|
||||
SchematicCommand.changetype(p, schem, schematicType);
|
||||
p.closeInventory();
|
||||
}, types);
|
||||
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
|
||||
inv.open();
|
||||
}
|
||||
|
||||
static void delete(Player p, Schematic schem){
|
||||
SWInventory inv = new SWInventory(p, 9, schem.getSchemName() + " löschen");
|
||||
inv.setItem(0, Material.INK_SACK, (byte) 1, "§eLöschen", click -> {
|
||||
File file = new File(SchematicSystem.SCHEM_DIR + p.getUniqueId(), schem.getSchemName() + ".schematic");
|
||||
file.delete();
|
||||
schem.remove();
|
||||
|
||||
List<CheckedSchematic> checkedSchematics = CheckedSchematic.getLastDeclined(p.getUniqueId());
|
||||
for(CheckedSchematic checkedSchematic : checkedSchematics) {
|
||||
if(checkedSchematic.getSchemOwner() == schem.getSchemOwner() &&
|
||||
checkedSchematic.getSchemName().equals(schem.getSchemName()))
|
||||
checkedSchematic.remove();
|
||||
}
|
||||
p.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + schem.getSchemName() + " §7gelöscht");
|
||||
p.closeInventory();
|
||||
});
|
||||
inv.setItem(8, Material.INK_SACK, (byte) 14, "§cAbbruch", click -> p.closeInventory());
|
||||
inv.setCallback(-999, click -> p.closeInventory());
|
||||
inv.open();
|
||||
}
|
||||
|
||||
static void delmembers(Player p, Schematic schem){
|
||||
List<Pair<SWItem, SchematicMember>> members = new LinkedList<>();
|
||||
for(SchematicMember member : SchematicMember.getSchemMembers(schem.getSchemName(), schem.getSchemOwner())){
|
||||
WarkingUser user = WarkingUser.get(member.getMember());
|
||||
|
||||
SWItem item = new SWItem();
|
||||
ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
|
||||
SkullMeta headmeta = (SkullMeta)head.getItemMeta();
|
||||
headmeta.setOwningPlayer(Bukkit.getOfflinePlayer(user.getUUID()));
|
||||
headmeta.setDisplayName(user.getUserName());
|
||||
head.setItemMeta(headmeta);
|
||||
item.setItemStack(head);
|
||||
|
||||
members.add(new Pair<>(item, member));
|
||||
}
|
||||
|
||||
SWListInv<SchematicMember> inv = new SWListInv<>(p, "Mitglieder entfernen", (clickType, member) -> {
|
||||
member.remove();
|
||||
p.closeInventory();
|
||||
delmembers(p, schem);
|
||||
}, members);
|
||||
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
|
||||
inv.open();
|
||||
}
|
||||
|
||||
private static void changeItem(Player p, Schematic schem){
|
||||
List<Pair<SWItem, Material>> materials = new LinkedList<>();
|
||||
for(Material material : Material.values()){
|
||||
SWItem item = new SWItem(material, "§7" + material.name());
|
||||
if(item.getItemMeta() != null && material.isItem())
|
||||
materials.add(new Pair<>(item, material));
|
||||
}
|
||||
|
||||
SWListInv<Material> inv = new SWListInv<>(p, "Item ändern", (clickType, material) -> {
|
||||
schem.setItem(material.name());
|
||||
p.closeInventory();
|
||||
info(p, schem);
|
||||
}, materials);
|
||||
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
|
||||
inv.open();
|
||||
}
|
||||
|
||||
private static void info(Player p, Schematic schem){
|
||||
SWInventory inv = new SWInventory(p, 9, schem.getSchemName());
|
||||
inv.setItem(0, Material.WOOD_AXE, "§eLaden", click -> {
|
||||
SchematicCommand.load(p, schem);
|
||||
p.closeInventory();
|
||||
});
|
||||
|
||||
if(schem.getSchemOwner() == WarkingUser.get(p.getUniqueId()).getId()){
|
||||
if(schem.getSchemType().writeable()){
|
||||
List<CheckedSchematic> checkedSchematics = CheckedSchematic.getLastDeclined(p.getUniqueId());
|
||||
for(CheckedSchematic checkedSchematic : checkedSchematics) {
|
||||
if(checkedSchematic.getSchemName().equals(schem.getSchemName()) &&
|
||||
checkedSchematic.getSchemOwner() == schem.getSchemOwner()) {
|
||||
inv.setItem(1, Material.INK_SACK, (byte) 10, "§eStatus " + schem.getSchemType().name(), Collections.singletonList("§7" + checkedSchematic.getDeclineReason()), false, click -> {});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Material mat = Material.CAULDRON_ITEM;
|
||||
if(schem.getItem() != null && !schem.getItem().equals(""))
|
||||
mat = Material.valueOf(schem.getItem());
|
||||
|
||||
inv.setItem(2, mat, "§e" + mat.name(), Arrays.asList("§7Zum Ändern", "§7anklicken"), false, click -> {
|
||||
p.closeInventory();
|
||||
changeItem(p, schem);
|
||||
});
|
||||
inv.setItem(4, Material.CAULDRON_ITEM, "§e" + schem.getSchemType().name(), Arrays.asList("§7Zum Ändern", "§7anklicken"), false, click -> {
|
||||
p.closeInventory();
|
||||
changeType(p, schem);
|
||||
});
|
||||
inv.setItem(6, Material.SKULL_ITEM, "§eMitglieder", click -> {
|
||||
p.closeInventory();
|
||||
delmembers(p, schem);
|
||||
});
|
||||
inv.setItem(8, Material.INK_SACK, (byte) 1, "§cLöschen", click -> {
|
||||
p.closeInventory();
|
||||
delete(p, schem);
|
||||
});
|
||||
}else{
|
||||
inv.setItem(4, Material.CAULDRON_ITEM, "§e" + schem.getSchemType().name(), click -> {});
|
||||
|
||||
WarkingUser owneruser = WarkingUser.get(schem.getSchemOwner());
|
||||
SWItem owner = new SWItem();
|
||||
ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
|
||||
SkullMeta headmeta = (SkullMeta)head.getItemMeta();
|
||||
headmeta.setOwningPlayer(Bukkit.getOfflinePlayer(owneruser.getUUID()));
|
||||
headmeta.setDisplayName("§7von §e" + owneruser.getUserName());
|
||||
head.setItemMeta(headmeta);
|
||||
owner.setItemStack(head);
|
||||
inv.setItem(6, owner);
|
||||
}
|
||||
|
||||
inv.setCallback(-999, click -> p.closeInventory());
|
||||
inv.open();
|
||||
}
|
||||
|
||||
static void list(Player p){
|
||||
List<Pair<SWItem, Schematic>> schemList = new LinkedList<>();
|
||||
List<Schematic> schems = Schematic.getSchemsAccessibleByUser(p.getUniqueId());
|
||||
|
||||
for(Schematic schem : schems) {
|
||||
Material m;
|
||||
if (schem.getItem().isEmpty())
|
||||
m = Material.CAULDRON_ITEM;
|
||||
else
|
||||
m = Material.valueOf(schem.getItem());
|
||||
|
||||
SWItem item = new SWItem(m, "§e" + schem.getSchemName(), Collections.singletonList("§7" + schem.getSchemType().name()), !schem.getSchemType().writeable(), click -> {});
|
||||
schemList.add(new Pair<>(item, schem));
|
||||
}
|
||||
|
||||
SWListInv<Schematic> inv = new SWListInv<>(p, "§eSchematicliste", (clickType, schem) -> {
|
||||
p.closeInventory();
|
||||
info(p, schem);
|
||||
}, schemList);
|
||||
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
|
||||
inv.open();
|
||||
}
|
||||
}
|
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
@ -15,12 +15,9 @@ public class PlayerCommandPreProcessListener implements Listener {
|
||||
if(!event.getMessage().contains("copy") && !event.getMessage().contains("cut"))
|
||||
return;
|
||||
|
||||
if(CheckSession.doesPlayerCheck(player)) {
|
||||
if(CheckSession.getCheckSession() != null) {
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDieser Befehl ist beim Prüfen gesperrt!");
|
||||
//eventuell Admin Benachrichtigen
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cDieser Befehl ist beim Prüfen gesperrt! Admin wird benachrichtigt.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -21,21 +21,33 @@ public class PlayerJoinListener implements Listener {
|
||||
public void handlePlayerJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
CheckSession currentChecking = null;
|
||||
for(Player players : player.getWorld().getPlayers()) {
|
||||
if(CheckSession.doesPlayerCheck(players))
|
||||
currentChecking = CheckSession.getCheckSession(players);
|
||||
}
|
||||
if(currentChecking != null) {
|
||||
if(!CheckUtils.allowedToCheck(player) && !WarkingUser.get(
|
||||
currentChecking.getSchematic().getSchemOwner()).getUUID().toString()
|
||||
.equals(player.getUniqueId().toString())) {
|
||||
if(CheckSession.currentChecking()){
|
||||
CheckSession current = CheckSession.getCheckSession();
|
||||
if(!CheckUtils.allowedToCheck(player) && !WarkingUser.get(current.getSchematic().getSchemOwner()).getUUID().equals(player.getUniqueId())){
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§cAuf diesem Server wird momentan eine Schematic geprüft!");
|
||||
player.kickPlayer("");
|
||||
return;
|
||||
}
|
||||
}
|
||||
File file = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId() + "/");
|
||||
|
||||
addNewSchems(player);
|
||||
|
||||
if(CheckUtils.allowedToCheck(player))
|
||||
player.sendMessage(CheckUtils.sendTeamMembersCSchematicsInfo());
|
||||
|
||||
List<Schematic> uncheckedSchematics = new ArrayList<>();
|
||||
|
||||
for(SchematicType type : SchematicType.values()){
|
||||
if(type.check())
|
||||
uncheckedSchematics.addAll(Schematic.getSchemsOfType(player.getUniqueId(), type));
|
||||
}
|
||||
|
||||
if(!uncheckedSchematics.isEmpty())
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§7Du hast noch §e" + uncheckedSchematics.size() + " §7ungeprüfte Schematic(s)!");
|
||||
}
|
||||
|
||||
private void addNewSchems(Player player){
|
||||
File file = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId());
|
||||
File[] files = file.listFiles();
|
||||
|
||||
if(files != null && files.length > 0) {
|
||||
@ -48,28 +60,12 @@ public class PlayerJoinListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < files.length; i++) {
|
||||
if(!schematicNames.contains(files[i].getName().substring(0, files[i].getName().lastIndexOf('.')))) {
|
||||
String fileName = files[i].getName();
|
||||
new Schematic(fileName.substring(0, fileName.lastIndexOf('.')), player.getUniqueId(), "", SchematicType.normal);
|
||||
for (File value : files) {
|
||||
if (!schematicNames.contains(value.getName().substring(0, value.getName().lastIndexOf('.')))) {
|
||||
String fileName = value.getName();
|
||||
new Schematic(fileName.substring(0, fileName.lastIndexOf('.')), player.getUniqueId(), "", SchematicType.Normal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(CheckUtils.allowedToCheck(player))
|
||||
player.sendMessage(CheckUtils.sendTeamMembersCSchematicsInfo());
|
||||
|
||||
WarkingUser warkingUser = WarkingUser.get(player.getUniqueId());
|
||||
List<Schematic> uncheckedSchematics = new ArrayList<>();
|
||||
|
||||
uncheckedSchematics.addAll(Schematic.getSchemsOfType(warkingUser.getId(), SchematicType.Cairship));
|
||||
uncheckedSchematics.addAll(Schematic.getSchemsOfType(warkingUser.getId(), SchematicType.Cwarship));
|
||||
uncheckedSchematics.addAll(Schematic.getSchemsOfType(warkingUser.getId(), SchematicType.Cwargear));
|
||||
uncheckedSchematics.addAll(Schematic.getSchemsOfType(warkingUser.getId(), SchematicType.Cminiwargear));
|
||||
|
||||
if(!uncheckedSchematics.isEmpty())
|
||||
player.sendMessage(SchematicSystem.PREFIX + "§7Du hast noch §6" + uncheckedSchematics.size() + " §7ungeprüfte Schematic(s)!");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -11,11 +11,10 @@ public class PlayerQuitListener implements Listener {
|
||||
@EventHandler
|
||||
public void handlePlayerQuit(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if(CheckSession.doesPlayerCheck(player)) {
|
||||
CheckSession.getCheckSession(player).removeSchematic();
|
||||
CheckSession.getCheckSession(player).remove();
|
||||
}
|
||||
CheckSession checkSession = CheckSession.getCheckSession(player);
|
||||
if(checkSession == null)
|
||||
return;
|
||||
|
||||
checkSession.removeSchematic();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -3,32 +3,34 @@ package de.steamwar.schematicsystem.utils;
|
||||
import de.warking.hunjy.Core;
|
||||
import de.warking.hunjy.MySQL.MySQL;
|
||||
import de.warking.hunjy.MySQL.WarkingUser;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import static de.warking.hunjy.Core.sql;
|
||||
|
||||
public class CheckedSchematic {
|
||||
|
||||
private final String SchemName;
|
||||
private final int SchemOwner;
|
||||
private final int Validator;
|
||||
private final Timestamp StartTime;
|
||||
private final Timestamp EndTime;
|
||||
private final String DeclineReason;
|
||||
private final String schemName;
|
||||
private final int schemOwner;
|
||||
private final int validator;
|
||||
private final Timestamp startTime;
|
||||
private final Timestamp endTime;
|
||||
private final String declineReason;
|
||||
|
||||
private CheckedSchematic(String schemName, int schemOwner, int validator, Timestamp startTime, Timestamp endTime, String declineReason, boolean insertDB){
|
||||
SchemName = MySQL.disarmString(schemName);
|
||||
SchemOwner = schemOwner;
|
||||
Validator = validator;
|
||||
StartTime = startTime;
|
||||
EndTime = endTime;
|
||||
DeclineReason = MySQL.disarmString(declineReason);
|
||||
this.schemName = MySQL.disarmString(schemName);
|
||||
this.schemOwner = schemOwner;
|
||||
this.validator = validator;
|
||||
this.startTime = startTime;
|
||||
this.endTime = endTime;
|
||||
this.declineReason = MySQL.disarmString(declineReason);
|
||||
if(insertDB)
|
||||
insertDB();
|
||||
}
|
||||
@ -37,10 +39,6 @@ public class CheckedSchematic {
|
||||
this(schemName, schemOwner, validator, startTime, endTime, declineReason, true);
|
||||
}
|
||||
|
||||
public CheckedSchematic(String schemName, int schemOwner, UUID validator, Timestamp startTime, Timestamp endTime, String declineReason){
|
||||
this(schemName, schemOwner, WarkingUser.get(validator).getId(), startTime, endTime, declineReason, true);
|
||||
}
|
||||
|
||||
public CheckedSchematic(String schemName, UUID schemOwner, UUID validator, Timestamp startTime, Timestamp endTime, String declineReason){
|
||||
this(schemName, WarkingUser.get(schemOwner).getId(), WarkingUser.get(validator).getId(), startTime, endTime, declineReason, true);
|
||||
}
|
||||
@ -49,7 +47,7 @@ public class CheckedSchematic {
|
||||
sql.update("INSERT INTO CheckedSchematic" +
|
||||
" (SchemName, SchemOwner, Validator, StartTime, EndTime, DeclineReason)" +
|
||||
" VALUES" +
|
||||
" ('"+ SchemName + "', '" + SchemOwner + "', '" + Validator + "', '" + StartTime.toString() + "', '" + EndTime.toString() + "', '" + DeclineReason + "')");
|
||||
" ('"+ schemName + "', '" + schemOwner + "', '" + validator + "', '" + startTime.toString() + "', '" + endTime.toString() + "', '" + declineReason + "')");
|
||||
}
|
||||
|
||||
public static List<CheckedSchematic> getLastDeclined(UUID schemOwner){
|
||||
@ -57,7 +55,7 @@ public class CheckedSchematic {
|
||||
}
|
||||
|
||||
public static List<CheckedSchematic> getLastDelined(int schemOwner){
|
||||
List<CheckedSchematic> lastDeclined = new ArrayList<>();
|
||||
List<CheckedSchematic> lastDeclined = new LinkedList<>();
|
||||
try{
|
||||
ResultSet lastRS = sql.select("SELECT * FROM CheckedSchematic WHERE SchemOwner = '" + schemOwner + "' AND DeclineReason != '' ORDER BY EndTime DESC");
|
||||
while(lastRS.next()){
|
||||
@ -69,36 +67,36 @@ public class CheckedSchematic {
|
||||
lastDeclined.add(new CheckedSchematic(schemName, schemOwner, validator, startTime, endTime, declineReason, false));
|
||||
}
|
||||
}catch(SQLException e){
|
||||
e.printStackTrace();
|
||||
Bukkit.getLogger().log(Level.SEVERE, "getLastDeclined failed", e);
|
||||
}
|
||||
return lastDeclined;
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
Core.sql.update("DELETE FROM CheckedSchematic WHERE SchemOwner = " + this.SchemOwner + " AND SchemName = '" + this.SchemName + "'");
|
||||
Core.sql.update("DELETE FROM CheckedSchematic WHERE SchemOwner = " + this.schemOwner + " AND SchemName = '" + this.schemName + "'");
|
||||
}
|
||||
|
||||
public String getSchemName() {
|
||||
return SchemName;
|
||||
return schemName;
|
||||
}
|
||||
|
||||
public int getSchemOwner() {
|
||||
return SchemOwner;
|
||||
return schemOwner;
|
||||
}
|
||||
|
||||
public int getValidator() {
|
||||
return Validator;
|
||||
return validator;
|
||||
}
|
||||
|
||||
public Timestamp getStartTime() {
|
||||
return StartTime;
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public Timestamp getEndTime() {
|
||||
return EndTime;
|
||||
return endTime;
|
||||
}
|
||||
|
||||
public String getDeclineReason() {
|
||||
return DeclineReason;
|
||||
return declineReason;
|
||||
}
|
||||
}
|
||||
|
@ -6,30 +6,36 @@ import org.bukkit.command.SimpleCommandMap;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class CommandRemover {
|
||||
private CommandRemover(){}
|
||||
|
||||
private static String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
private static String version = packageName.substring(packageName.lastIndexOf(".") + 1);
|
||||
private static String version = packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||
|
||||
public static void removeAll(String... cmds) throws Exception {
|
||||
for (int i = 0; i < cmds.length; i++)
|
||||
removeCommand(cmds[i]);
|
||||
public static void removeAll(String... cmds){
|
||||
for (String cmd : cmds) removeCommand(cmd);
|
||||
}
|
||||
|
||||
|
||||
public static boolean removeCommand(String command) throws Exception {
|
||||
Class<?> serverClass = Class.forName("org.bukkit.craftbukkit." + version + ".CraftServer");
|
||||
private static void removeCommand(String command) {
|
||||
try {
|
||||
Class<?> serverClass = Class.forName("org.bukkit.craftbukkit." + version + ".CraftServer");
|
||||
|
||||
Field f1 = serverClass.getDeclaredField("commandMap");
|
||||
f1.setAccessible(true);
|
||||
SimpleCommandMap commandMap = (SimpleCommandMap) f1.get(Bukkit.getServer());
|
||||
|
||||
Field f2 = SimpleCommandMap.class.getDeclaredField("knownCommands");
|
||||
f2.setAccessible(true);
|
||||
Map<String, Command> knownCommands = (Map<String, Command>) f2.get(commandMap);
|
||||
Field f1 = serverClass.getDeclaredField("commandMap");
|
||||
f1.setAccessible(true);
|
||||
SimpleCommandMap commandMap = (SimpleCommandMap) f1.get(Bukkit.getServer());
|
||||
|
||||
return knownCommands.remove(command.toLowerCase()) != null;
|
||||
Field f2 = SimpleCommandMap.class.getDeclaredField("knownCommands");
|
||||
f2.setAccessible(true);
|
||||
Map<String, Command> knownCommands = (Map<String, Command>) f2.get(commandMap);
|
||||
|
||||
knownCommands.remove(command.toLowerCase());
|
||||
} catch (Exception e) {
|
||||
Bukkit.getLogger().log(Level.SEVERE, "Could not remove command", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,100 +0,0 @@
|
||||
package de.steamwar.schematicsystem.utils;
|
||||
|
||||
import de.steamwar.schematicsystem.SchematicSystem;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class Config {
|
||||
|
||||
public static double WarGearBreite;
|
||||
public static double WarGearHöhe;
|
||||
public static double WarGearTiefe;
|
||||
public static int WarGearMaxTNT;
|
||||
public static int WarGearMaxSchleim;
|
||||
public static int WarGearTNTSchleim;
|
||||
public static int WarGearMaxDispenser;
|
||||
public static List<Integer> WarGearForbiddenIds;
|
||||
public static List<String> WarGearCheckList;
|
||||
|
||||
public static double MiniWarGearBreite;
|
||||
public static double MiniWarGearHöhe;
|
||||
public static double MiniWarGearTiefe;
|
||||
public static int MiniWarGearMaxTNT;
|
||||
public static int MiniWarGearMaxSchleim;
|
||||
public static int MiniWarGearTNTSchleim;
|
||||
public static int MiniWarGearMaxDispenser;
|
||||
public static List<Integer> MiniWarGearForbiddenIds;
|
||||
public static List<String> MiniWarGearCheckList;
|
||||
|
||||
public static double WarShipBreite;
|
||||
public static double WarShipHöhe;
|
||||
public static double WarShipTiefe;
|
||||
public static int WarShipMaxTNT;
|
||||
public static int WarShipMaxSchleim;
|
||||
public static int WarShipTNTSchleim;
|
||||
public static int WarShipMaxDispenser;
|
||||
public static List<Integer> WarShipForbiddenIds;
|
||||
public static List<String> WarShipCheckList;
|
||||
|
||||
public static double AirShipBreite;
|
||||
public static double AirShipHöhe;
|
||||
public static double AirShipTiefe;
|
||||
public static int AirShipMaxTNT;
|
||||
public static int AirShipMaxSchleim;
|
||||
public static int AirShipTNTSchleim;
|
||||
public static int AirShipMaxDispenser;
|
||||
public static List<Integer> AirShipForbiddenIds;
|
||||
public static List<String> AirShipCheckList;
|
||||
|
||||
public static void load() {
|
||||
if (!new File("plugins/" + SchematicSystem.getInstance().getName() + "/config.yml").exists()) {
|
||||
SchematicSystem.getInstance().saveDefaultConfig();
|
||||
System.out.println(SchematicSystem.PREFIX + "config.yml erstellt und geladen!");
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
FileConfiguration config = SchematicSystem.getInstance().getConfig();
|
||||
|
||||
WarGearBreite = config.getDouble("Schematics.WarGear.Breite");
|
||||
WarGearHöhe = config.getDouble("Schematics.WarGear.Höhe");
|
||||
WarGearTiefe = config.getDouble("Schematics.WarGear.Tiefe");
|
||||
WarGearMaxTNT = config.getInt("Schematics.WarGear.TNT");
|
||||
WarGearMaxSchleim = config.getInt("Schematics.WarGear.Schleim");
|
||||
WarGearTNTSchleim = config.getInt("Schematics.WarGear.TNTSchleim");
|
||||
WarGearMaxDispenser = config.getInt("Schematics.WarGear.Dispenser");
|
||||
WarGearForbiddenIds = config.getIntegerList("Schematics.WarGear.ForbiddenIds");
|
||||
WarGearCheckList = config.getStringList("Schematics.WarGear.CheckList");
|
||||
|
||||
MiniWarGearBreite = config.getDouble("Schematics.MiniWarGear.Breite");
|
||||
MiniWarGearHöhe = config.getDouble("Schematics.MiniWarGear.Höhe");
|
||||
MiniWarGearTiefe = config.getDouble("Schematics.MiniWarGear.Tiefe");
|
||||
MiniWarGearMaxTNT = config.getInt("Schematics.MiniWarGear.TNT");
|
||||
MiniWarGearMaxSchleim = config.getInt("Schematics.MiniWarGear.Schleim");
|
||||
MiniWarGearTNTSchleim = config.getInt("Schematics.MiniWarGear.TNTSchleim");
|
||||
MiniWarGearMaxDispenser = config.getInt("Schematics.MiniWarGear.Dispenser");
|
||||
MiniWarGearForbiddenIds = config.getIntegerList("Schematics.MiniWarGear.ForbiddenIds");
|
||||
MiniWarGearCheckList = config.getStringList("Schematics.MiniWarGear.CheckList");
|
||||
|
||||
WarShipBreite = config.getDouble("Schematics.WarShip.Breite");
|
||||
WarShipHöhe = config.getDouble("Schematics.WarShip.Höhe");
|
||||
WarShipTiefe = config.getDouble("Schematics.WarShip.Tiefe");
|
||||
WarShipMaxTNT = config.getInt("Schematics.WarShip.TNT");
|
||||
WarShipMaxSchleim = config.getInt("Schematics.WarShip.Schleim");
|
||||
WarShipTNTSchleim = config.getInt("Schematics.WarShip.TNTSchleim");
|
||||
WarShipMaxDispenser = config.getInt("Schematics.WarShip.Dispenser");
|
||||
WarShipForbiddenIds = config.getIntegerList("Schematics.WarShip.ForbiddenIds");
|
||||
WarShipCheckList = config.getStringList("Schematics.WarShip.CheckList");
|
||||
|
||||
AirShipBreite = config.getDouble("Schematics.AirShip.Breite");
|
||||
AirShipHöhe = config.getDouble("Schematics.AirShip.Höhe");
|
||||
AirShipTiefe = config.getDouble("Schematics.AirShip.Tiefe");
|
||||
AirShipMaxTNT = config.getInt("Schematics.AirShip.TNT");
|
||||
AirShipMaxSchleim = config.getInt("Schematics.AirShip.Schleim");
|
||||
AirShipTNTSchleim = config.getInt("Schematics.AirShip.TNTSchleim");
|
||||
AirShipMaxDispenser = config.getInt("Schematics.AirShip.Dispenser");
|
||||
AirShipForbiddenIds = config.getIntegerList("Schematics.AirShip.ForbiddenIds");
|
||||
AirShipCheckList = config.getStringList("Schematics.AirShip.CheckList");
|
||||
}
|
||||
}
|
@ -1,12 +1,13 @@
|
||||
name: SchematicSystem
|
||||
version: 1.0
|
||||
author: [Yaruma3341, Lixfel]
|
||||
version: "1.0"
|
||||
authors: [Yaruma3341, Lixfel]
|
||||
depend: [CoreSystem, WorldEdit, FastAsyncWorldEdit]
|
||||
main: de.steamwar.schematicsystem.SchematicSystem
|
||||
|
||||
commands:
|
||||
schematic:
|
||||
/schematic:
|
||||
schem:
|
||||
/schem:
|
||||
aliases:
|
||||
- schematic
|
||||
- /schematic
|
||||
- /schem
|
||||
check:
|
In neuem Issue referenzieren
Einen Benutzer sperren