12
0

Merge branch 'master' into schemType

# Conflicts:
#	SpigotCore_Main/src/de/steamwar/sql/Schematic.java
Dieser Commit ist enthalten in:
Lixfel 2020-02-22 11:21:07 +01:00
Commit 4a9a678a63
22 geänderte Dateien mit 352 neuen und 242 gelöschten Zeilen

Datei anzeigen

@ -45,11 +45,5 @@
<version>2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>steamwar</groupId>
<artifactId>SpigotCore_12</artifactId>
<version>2.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

Datei anzeigen

@ -4,8 +4,9 @@ import com.sk89q.worldedit.EmptyClipboardException;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.io.BuiltInClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter;
import com.sk89q.worldedit.session.ClipboardHolder;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -17,8 +18,8 @@ import java.io.InputStream;
class Schematic_14 {
private Schematic_14(){}
private static final ClipboardFormat SCHEMATIC = ClipboardFormats.findByAlias("schematic");
private static final ClipboardFormat SCHEM = ClipboardFormats.findByAlias("schem");
private static final ClipboardFormat SCHEMATIC = BuiltInClipboardFormat.MCEDIT_SCHEMATIC;
private static final ClipboardFormat SCHEM = BuiltInClipboardFormat.SPONGE_SCHEMATIC;
static byte[] getPlayerClipboard(Player player, boolean schemFormat) throws IOException, NoClipboardException {
ClipboardHolder clipboardHolder;
@ -35,10 +36,10 @@ class Schematic_14 {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try{
if(schemFormat){
assert SCHEM != null;
SCHEM.getWriter(outputStream).write(clipboard);
ClipboardWriter writer = SCHEM.getWriter(outputStream);
writer.write(clipboard);
writer.close();
}else{
assert SCHEMATIC != null;
SCHEMATIC.getWriter(outputStream).write(clipboard);
}
}catch(NullPointerException e){
@ -60,10 +61,8 @@ class Schematic_14 {
static Clipboard getClipboard(InputStream is, boolean schemFormat) throws IOException, NoClipboardException {
try {
if(schemFormat){
assert SCHEM != null;
return SCHEM.getReader(is).read();
}else{
assert SCHEMATIC != null;
return SCHEMATIC.getReader(is).read();
}
} catch (NullPointerException e) {

Datei anzeigen

@ -36,13 +36,15 @@ public class Core extends JavaPlugin{
public void onEnable() {
Bukkit.getPluginManager().registerEvents(new PlayerJoinedEvent(), this);
Bukkit.getPluginManager().registerEvents(new ChattingEvent(), this);
if(version >= 12)
ErrorLogger.init();
}
@Override
public void onDisable(){
SQL.closeConnection();
}
public static Core getInstance() {
return instance;
}
@ -50,6 +52,7 @@ public class Core extends JavaPlugin{
return version;
}
private static void setInstance(Core instance) {
Core.instance = instance;
}

Datei anzeigen

@ -0,0 +1,42 @@
package de.steamwar.core;
import de.steamwar.sql.SWException;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Core;
import org.apache.logging.log4j.core.*;
import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
@Plugin(name = "ErrorLogger", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE)
public class ErrorLogger extends AbstractAppender {
public static void init(){
final LoggerContext lc = (LoggerContext) LogManager.getContext(false);
ErrorLogger el = ErrorLogger.createAppender("SWErrorLogger");
el.start();
lc.getConfiguration().addAppender(el);
lc.getRootLogger().addAppender(lc.getConfiguration().getAppender(el.getName()));
lc.updateLoggers();
}
private ErrorLogger(String name) {
super(name, null, null);
}
@PluginFactory
public static ErrorLogger createAppender(
@PluginAttribute("name") String name) {
return new ErrorLogger(name);
}
@Override
public void append(LogEvent logEvent) {
if(logEvent.getLevel().isLessSpecificThan(Level.WARN))
return;
SWException.log(logEvent);
}
}

Datei anzeigen

@ -92,7 +92,7 @@ public class SWInventory implements Listener {
return;
e.setCancelled(true);
if(callbacks.containsKey(e.getRawSlot()))
if(callbacks.containsKey(e.getRawSlot()) && callbacks.get(e.getRawSlot()) != null)
callbacks.get(e.getRawSlot()).clicked(e.getClick());
}

Datei anzeigen

@ -2,7 +2,6 @@ package de.steamwar.inventory;
import de.steamwar.sql.Schematic;
import de.steamwar.sql.SchematicType;
import javafx.util.Pair;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -16,17 +15,6 @@ public class SWListInv<T> extends SWInventory {
private List<SWListEntry<T>> elements;
private int page;
@Deprecated
public SWListInv(Player p, String t, ListCallback<T> c, List<Pair<SWItem, T>> l) {
super(p, (l.size()>45) ? 54 : (l.size() + 9-l.size()%9), t);
callback = c;
//Only here for backwards compatibility
elements = new LinkedList<>();
for(Pair<SWItem, T> pair : l)
elements.add(new SWListEntry<>(pair.getKey(), pair.getValue()));
page = 0;
}
public SWListInv(Player 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;
@ -79,18 +67,6 @@ public class SWListInv<T> extends SWInventory {
void clicked(ClickType click, T element);
}
@Deprecated
public static List<Pair<SWItem, UUID>> createPlayerList(Player without){
List<Pair<SWItem, UUID>> onlinePlayers = new ArrayList<>();
for(Player player : Bukkit.getOnlinePlayers()){
if(without != null && player.getUniqueId().equals(without.getUniqueId()))
continue;
onlinePlayers.add(new Pair<>(SWItem.getPlayerSkull(player), player.getUniqueId()));
}
return onlinePlayers;
}
public static List<SWListEntry<UUID>> createPlayerList(UUID without){
List<SWListEntry<UUID>> onlinePlayers = new ArrayList<>();
for(Player player : Bukkit.getOnlinePlayers()){
@ -102,28 +78,6 @@ public class SWListInv<T> extends SWInventory {
return onlinePlayers;
}
@Deprecated
public static List<Pair<SWItem, Schematic>> getSchemList(int warkingUserId, SchematicType type){
List<Pair<SWItem, Schematic>> schemList = new ArrayList<>();
List<Schematic> schems;
if(type == null)
schems = Schematic.getSchemsAccessibleByUser(warkingUserId);
else
schems = Schematic.getSchemsOfType(warkingUserId, type);
for(Schematic s : schems){
Material m;
if(s.getItem().isEmpty())
m = SWItem.getMaterial("CAULDRON_ITEM");
else
m = SWItem.getMaterial(s.getItem());
SWItem item = new SWItem(m,"§e" + s.getSchemName());
schemList.add(new Pair<>(item, s));
}
return schemList;
}
public static List<SWListEntry<Schematic>> getSchemList(SchematicType type, int steamwarUserId){
List<SWListEntry<Schematic>> schemList = new ArrayList<>();

Datei anzeigen

@ -41,37 +41,35 @@ public class SWScoreboard {
return true;
}
public static boolean removeScoreboard(Player player) {
public static void removeScoreboard(Player player) {
if(!playerBoards.containsKey(player))
return false;
return;
playerBoards.remove(player);
if(player == null)
return true;
switch (Core.getVersion()) {
case 8:
((SWScoreboard_8) playerBoards.get(player)).deleteScoreboard(player);
break;
case 9:
((SWScoreboard_9) playerBoards.get(player)).deleteScoreboard(player);
break;
case 10:
((SWScoreboard_10) playerBoards.get(player)).deleteScoreboard(player);
break;
case 12:
((SWScoreboard_12) playerBoards.get(player)).deleteScoreboard(player);
break;
case 14:
((SWScoreboard_14) playerBoards.get(player)).deleteScoreboard(player);
break;
case 15:
((SWScoreboard_15) playerBoards.get(player)).deleteScoreboard(player);
break;
default:
return false;
try{
switch (Core.getVersion()) {
case 8:
((SWScoreboard_8) playerBoards.get(player)).deleteScoreboard(player);
break;
case 9:
((SWScoreboard_9) playerBoards.get(player)).deleteScoreboard(player);
break;
case 10:
((SWScoreboard_10) playerBoards.get(player)).deleteScoreboard(player);
break;
case 12:
((SWScoreboard_12) playerBoards.get(player)).deleteScoreboard(player);
break;
case 14:
((SWScoreboard_14) playerBoards.get(player)).deleteScoreboard(player);
break;
case 15:
((SWScoreboard_15) playerBoards.get(player)).deleteScoreboard(player);
break;
}
}catch(NullPointerException e){
//ignored
}
return true;
playerBoards.remove(player);
}
//Scoreboard Updater

Datei anzeigen

@ -36,17 +36,13 @@ public class BauweltMember{
}
public void remove(){
SQL.update("DELETE FROM BauweltMember WHERE BauweltID = " + bauweltID + " AND MemberID = " + memberID);
SQL.update("DELETE FROM BauweltMember WHERE BauweltID = ? AND MemberID = ?", bauweltID, memberID);
members.remove(this);
}
private void updateDB(){
SQL.update("INSERT INTO BauweltMember" +
" (BauweltID, MemberID, Build, WorldEdit, World)" +
" VALUES" +
" ('" + bauweltID + "', '" + memberID + "', '" + SQL.booleanToInt(build) + "', '" + SQL.booleanToInt(worldEdit) + "', '" + SQL.booleanToInt(world) + "')" +
" ON DUPLICATE KEY UPDATE" +
" Build = VALUES(Build), WorldEdit = VALUES(WorldEdit), World = VALUES(World)");
SQL.update("INSERT INTO BauweltMember (BauweltID, MemberID, Build, WorldEdit, World) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE Build = VALUES(Build), WorldEdit = VALUES(WorldEdit), World = VALUES(World)",
bauweltID, memberID, build, worldEdit, world);
}
public static BauweltMember getBauMember(UUID ownerID, UUID memberID){
@ -57,7 +53,7 @@ public class BauweltMember{
for(BauweltMember member : members)
if(member.memberID == memberID)
return member;
ResultSet member = SQL.select("SELECT * FROM BauweltMember WHERE BauweltID = '" + ownerID + "' AND MemberID = '" + memberID + "'");
ResultSet member = SQL.select("SELECT * FROM BauweltMember WHERE BauweltID = ? AND MemberID = ?", ownerID, memberID);
try {
if(member == null || !member.next()){
return null;
@ -77,7 +73,7 @@ public class BauweltMember{
public static List<BauweltMember> getMembers(int bauweltID){
try{
ResultSet memberlist = SQL.select("SELECT * FROM BauweltMember WHERE BauweltID = '" + bauweltID + "'");
ResultSet memberlist = SQL.select("SELECT * FROM BauweltMember WHERE BauweltID = ?", bauweltID);
List<BauweltMember> members = new LinkedList<>();
while(memberlist.next()){
int memberID = memberlist.getInt("MemberID");

Datei anzeigen

@ -21,12 +21,12 @@ public class CheckedSchematic {
private final String declineReason;
private CheckedSchematic(String schemName, int schemOwner, int validator, Timestamp startTime, Timestamp endTime, String declineReason, boolean insertDB){
this.schemName = SQL.disarmString(schemName);
this.schemName = schemName;
this.schemOwner = schemOwner;
this.validator = validator;
this.startTime = startTime;
this.endTime = endTime;
this.declineReason = SQL.disarmString(declineReason);
this.declineReason = declineReason;
if(insertDB)
insertDB();
}
@ -41,9 +41,8 @@ public class CheckedSchematic {
private void insertDB(){
SQL.update("INSERT INTO CheckedSchematic" +
" (SchemName, SchemOwner, Validator, StartTime, EndTime, DeclineReason)" +
" VALUES" +
" ('"+ schemName + "', '" + schemOwner + "', '" + validator + "', '" + startTime.toString() + "', '" + endTime.toString() + "', '" + declineReason + "')");
" (SchemName, SchemOwner, Validator, StartTime, EndTime, DeclineReason) VALUES (?, ?, ?, ?, ?, ?)",
schemName, schemOwner, validator, startTime, endTime, declineReason);
}
public static List<CheckedSchematic> getLastDeclined(UUID schemOwner){
@ -53,7 +52,7 @@ public class CheckedSchematic {
public static List<CheckedSchematic> getLastDelined(int schemOwner){
List<CheckedSchematic> lastDeclined = new LinkedList<>();
try{
ResultSet lastRS = SQL.select("SELECT * FROM CheckedSchematic WHERE SchemOwner = '" + schemOwner + "' AND DeclineReason != '' ORDER BY EndTime DESC");
ResultSet lastRS = SQL.select("SELECT * FROM CheckedSchematic WHERE SchemOwner = ? AND DeclineReason != '' ORDER BY EndTime DESC", schemOwner);
while(lastRS.next()){
String schemName = lastRS.getString("SchemName");
int validator = lastRS.getInt("Validator");
@ -69,7 +68,7 @@ public class CheckedSchematic {
}
public void remove() {
SQL.update("DELETE FROM CheckedSchematic WHERE SchemOwner = " + this.schemOwner + " AND SchemName = '" + this.schemName + "'");
SQL.update("DELETE FROM CheckedSchematic WHERE SchemOwner = ? AND SchemName = ?", schemOwner, schemName);
}
public String getSchemName() {

Datei anzeigen

@ -13,7 +13,7 @@ public class DownloadSchematic {
private static final String BASE = "https://steamwar.de/download.php?schem=";
public static String getLink(Schematic schem){
ResultSet rs = SQL.select("SELECT * FROM SchemDownload WHERE SchemID = " + schem.getSchemID());
ResultSet rs = SQL.select("SELECT * FROM SchemDownload WHERE SchemID = ?", schem.getSchemID());
try {
if(rs.next())
return BASE + rs.getString("Link");
@ -30,7 +30,7 @@ public class DownloadSchematic {
cript.reset();
cript.update((Instant.now().toString() + schem.getSchemOwner() + schem.getSchemID()).getBytes());
String hash = DatatypeConverter.printHexBinary(cript.digest());
SQL.update("INSERT INTO SchemDownload (SchemID, Link) VALUES (" + schem.getSchemID() + ", '" + hash + "')");
SQL.update("INSERT INTO SchemDownload (SchemID, Link) VALUES (?, ?)", schem.getSchemID(), hash);
return BASE + hash;
}
}

Datei anzeigen

@ -16,22 +16,22 @@ public class Event {
private final int maximumTeamMembers;
private final boolean publicSchemsOnly;
private Event(int eventID, String eventName, Timestamp start, Timestamp end, int maximumTeamMembers, boolean publicSchemsOnly){
this.eventID = eventID;
this.eventName = eventName;
this.start = start;
this.end = end;
this.maximumTeamMembers = maximumTeamMembers;
this.publicSchemsOnly = publicSchemsOnly;
private Event(ResultSet rs) throws SQLException{
this.eventID = rs.getInt("EventID");
this.eventName = rs.getString("EventName");
this.start = rs.getTimestamp("Start");
this.end = rs.getTimestamp("End");
this.maximumTeamMembers = rs.getInt("MaximumTeamMembers");
this.publicSchemsOnly = rs.getBoolean("PublicSchemsOnly");
}
public static Event get(int eventID){
ResultSet rs = SQL.select("SELECT * FROM Event WHERE EventID = " + eventID);
ResultSet rs = SQL.select("SELECT * FROM Event WHERE EventID = ?", eventID);
try{
if(!rs.next())
throw new IllegalArgumentException();
return new Event(eventID, rs.getString("EventName"), rs.getTimestamp("Start"), rs.getTimestamp("End"), rs.getInt("MaximumTeamMembers"), rs.getBoolean("PublicSchemsOnly"));
return new Event(rs);
}catch (SQLException e){
Bukkit.getLogger().log(Level.SEVERE, "Failed to load Event", e);
throw new SecurityException();

Datei anzeigen

@ -14,26 +14,20 @@ public class EventFight {
private int kampfleiter;
private int ergebnis;
private EventFight(int eventID, int fightID, int teamBlue, int teamRed, int kampfleiter, int ergebnis){
this.eventID = eventID;
this.fightID = fightID;
this.teamBlue = teamBlue;
this.teamRed = teamRed;
this.kampfleiter = kampfleiter;
this.ergebnis = ergebnis;
private EventFight(ResultSet rs) throws SQLException{
this.eventID = rs.getInt("EventID");
this.fightID = rs.getInt("FightID");
this.teamBlue = rs.getInt("TeamBlue");
this.teamRed = rs.getInt("TeamRed");
this.kampfleiter = rs.getInt("Kampfleiter");
this.ergebnis = rs.getInt("Ergebnis");
}
public static EventFight get(int fightID){
ResultSet rs = SQL.select("SELECT * FROM EventFight WHERE FightID = " + fightID);
try{
rs.next();
return new EventFight(
rs.getInt("EventID"),
fightID,
rs.getInt("TeamBlue"),
rs.getInt("TeamRed"),
rs.getInt("Kampfleiter"),
rs.getInt("Ergebnis"));
return new EventFight(rs);
}catch (SQLException e){
Bukkit.getLogger().log(Level.SEVERE, "Failed to load EventFight", e);
}
@ -41,7 +35,7 @@ public class EventFight {
}
public void setErgebnis(int winner){
SQL.update("UPDATE EventFight SET Ergebnis = " + winner + " WHERE FightID = " + fightID);
SQL.update("UPDATE EventFight SET Ergebnis = ? WHERE FightID = ?", winner, fightID);
}
public int getTeamBlue() {

Datei anzeigen

@ -0,0 +1,23 @@
package de.steamwar.sql;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
public class Fight {
private Fight(){}
public static int create(String gamemode, String arena, Timestamp starttime, int duration, int blueleader, int redleader, int blueschem, int redschem, int win, String wincondition){
SQL.update("INSERT INTO Fight (GameMode, Arena, StartTime, Duration, BlueLeader, RedLeader, BlueSchem, RedSchem, Win, WinCondition) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
gamemode, arena, starttime, duration, blueleader, redleader,blueschem, redschem, win, wincondition);
ResultSet rs = SQL.select("SELECT LAST_INSERT_ID() AS FightID");
try{
if(!rs.next())
throw new SecurityException("No last insert id");
return rs.getInt("FightID");
} catch (SQLException e) {
throw new SecurityException(e);
}
}
}

Datei anzeigen

@ -0,0 +1,10 @@
package de.steamwar.sql;
public class FightPlayer {
private FightPlayer(){}
public static void create(int fightID, int userID, String kit, int kills, boolean isOut){
SQL.update("INSERT INTO FightPlayer (FightID, UserID, Kit, Kills, IsOut) VALUES (?, ?, ?, ?, ?)",
fightID, userID, kit, kills, isOut);
}
}

Datei anzeigen

@ -0,0 +1,58 @@
package de.steamwar.sql;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.ItemStack;
import java.io.StringReader;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Objects;
public class PersonalKit {
private final int userID;
private final String gamemode;
private String inventory;
private String armor;
private PersonalKit(ResultSet rs) throws SQLException {
userID = rs.getInt("UserID");
gamemode = rs.getString("GameMode");
inventory = rs.getString("Inventory");
armor = rs.getString("Armor");
}
public static PersonalKit get(int userID, String gamemode){
ResultSet rs = SQL.select("SELECT * FROM PersonalKit WHERE UserID = ? AND GameMode = ?", userID, gamemode);
try {
if(!rs.next())
return null;
return new PersonalKit(rs);
} catch (SQLException e) {
throw new SecurityException("Failed loading personal kit", e);
}
}
public static PersonalKit save(int userID, String gamemode, ItemStack[] inventory, ItemStack[] armor){
YamlConfiguration inventoryConfig = new YamlConfiguration();
inventoryConfig.set("Inventory", inventory);
YamlConfiguration armorConfig = new YamlConfiguration();
armorConfig.set("Armor", armor);
SQL.update("INSERT INTO PersonalKit (UserID, GameMode, Inventory, Armor) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE Inventory = VALUES(Inventory), Armor = VALUES(Armor)",
userID, gamemode, inventoryConfig.saveToString(), armorConfig.saveToString());
return get(userID, gamemode);
}
public ItemStack[] getInventory(){
YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(inventory));
return Objects.requireNonNull(config.getList("Inventory")).toArray(new ItemStack[0]);
}
public ItemStack[] getArmor(){
YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(armor));
return Objects.requireNonNull(config.getList("Armor")).toArray(new ItemStack[0]);
}
}

Datei anzeigen

@ -33,13 +33,6 @@ public class SQL {
connect();
}
static Integer booleanToInt(boolean b){
if(b)
return 1;
else
return 0;
}
public static void closeConnection() {
try {
@ -48,45 +41,53 @@ public class SQL {
throw new SecurityException("Could not close connection", e);
}
}
static Connection getCon(){
return con;
}
static void update(String qry) {
static void update(String qry, Object... objects) {
try {
PreparedStatement st = con.prepareStatement(qry);
st.executeUpdate();
prepare(qry, objects).executeUpdate();
} catch (SQLException e) {
reconnect();
try {
PreparedStatement st = con.prepareStatement(qry);
st.executeUpdate();
prepare(qry, objects).executeUpdate();
} catch (SQLException ex) {
throw new SecurityException("Could not perform update", ex);
}
}
}
static ResultSet select(String qry) {
static ResultSet select(String qry, Object... objects){
try {
PreparedStatement st = con.prepareStatement(qry);
return st.executeQuery();
return prepare(qry, objects).executeQuery();
} catch (SQLException e) {
reconnect();
try {
PreparedStatement st = con.prepareStatement(qry);
return st.executeQuery();
return prepare(qry, objects).executeQuery();
} catch (SQLException ex) {
throw new SecurityException("Could not perform select", ex);
}
}
}
static String disarmString(String s){
return s.replace("'", "");
static Blob blob(){
try {
return con.createBlob();
} catch (SQLException e) {
reconnect();
try {
return con.createBlob();
} catch (SQLException ex) {
throw new SecurityException("Could not create blob", ex);
}
}
}
private static PreparedStatement prepare(String qry, Object... objects) throws SQLException{
PreparedStatement st = con.prepareStatement(qry);
for(int i = 0; i < objects.length; i++){
st.setObject(i+1, objects[i]);
}
return st;
}
private static void connect() {
try {

Datei anzeigen

@ -0,0 +1,46 @@
package de.steamwar.sql;
import org.apache.logging.log4j.core.LogEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class SWException {
private SWException(){}
private static boolean logDisabled = false;
public static void log(LogEvent logEvent){
if(logDisabled)
return;
String server = Bukkit.getWorlds().get(0).getName();
StringBuilder stacktrace = new StringBuilder(logEvent.getSource().toString());
Throwable throwable = logEvent.getThrown();
while(throwable != null){
stacktrace.append("\nCaused by ").append(throwable.getMessage());
for(StackTraceElement ste : throwable.getStackTrace())
stacktrace.append("\n").append(ste.toString());
throwable = throwable.getCause();
}
String message = logEvent.getMessage().getFormattedMessage();
if(message.startsWith("Block at") || message.startsWith("POI data mismatch"))
return;
if(message.equals("------------------------------")){
message = "Server stopped responding";
logDisabled = true;
}
message += "\n\n";
for(Player player : Bukkit.getOnlinePlayers())
message += player.getName() + " ";
SQL.update("INSERT INTO Exception (server, message, stacktrace) VALUES (?, ?, ?)",
server, message, stacktrace.toString());
}
}

Datei anzeigen

@ -4,11 +4,9 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard;
import de.steamwar.core.Core;
import org.bukkit.entity.Player;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
@ -42,12 +40,8 @@ public class Schematic {
}
public static void createSchem(String schemName, int schemOwner, String item, SchematicType schemType){
SQL.update("INSERT INTO Schematic" +
" (SchemName, SchemOwner, Item, SchemType)" +
" VALUES" +
" ('" + schemName + "', '" + schemOwner + "', '" + item + "', '" + schemType.toDB() + "')" +
" ON DUPLICATE KEY UPDATE" +
" Item = VALUES(Item), SchemType = VALUES(SchemType)");
SQL.update("INSERT INTO Schematic (SchemName, SchemOwner, Item, SchemType) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE Item = VALUES(Item), SchemType = VALUES(SchemType)",
schemName, schemOwner, item, schemType.toDB());
}
public static Schematic getSchemFromDB(String schemName, UUID schemOwner){
@ -55,8 +49,7 @@ public class Schematic {
}
public static Schematic getSchemFromDB(String schemName, int schemOwner){
schemName = SQL.disarmString(schemName);
ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemName = '" + schemName + "' AND SchemOwner = '" + schemOwner + "'");
ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemName = ? AND SchemOwner = ?", schemName, schemOwner);
try {
if(schematic == null || !schematic.next()){
SchematicMember member = SchematicMember.getMemberBySchematic(schemName, schemOwner);
@ -77,7 +70,7 @@ public class Schematic {
public static List<Schematic> getSchemsAccessibleByUser(int schemOwner){
try{
ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemOwner = '" + schemOwner + "' ORDER BY SchemName");
ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemOwner = ? ORDER BY SchemName", schemOwner);
List<Schematic> schematics = new ArrayList<>();
while(schematic.next()){
schematics.add(new Schematic(schematic));
@ -107,7 +100,7 @@ public class Schematic {
public static List<Schematic> getAllSchemsOfType(SchematicType schemType){
try{
ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemType = '" + schemType.toDB() + "'");
ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemType = ?", schemType.toDB());
List<Schematic> schematics = new ArrayList<>();
while(schematic.next()){
schematics.add(new Schematic(schematic));
@ -153,7 +146,7 @@ public class Schematic {
}
public Clipboard load() throws IOException, NoClipboardException {
ResultSet rs = SQL.select("SELECT SchemData FROM Schematic WHERE SchemID = " + schemID);
ResultSet rs = SQL.select("SELECT SchemData FROM Schematic WHERE SchemID = ?", schemID);
try {
rs.next();
Blob schemData = rs.getBlob("SchemData");
@ -181,10 +174,13 @@ public class Schematic {
public void loadToPlayer(Player player) throws IOException, NoClipboardException {
ResultSet rs = SQL.select("SELECT SchemData FROM Schematic WHERE SchemID = " + schemID);
ResultSet rs = SQL.select("SELECT SchemData FROM Schematic WHERE SchemID = ?", schemID);
try {
rs.next();
InputStream is = rs.getBlob("SchemData").getBinaryStream();
Blob blob = rs.getBlob("SchemData");
if(blob == null)
throw new NoClipboardException();
InputStream is = blob.getBinaryStream();
switch(Core.getVersion()){
case 8:
Schematic_8.setPlayerClipboard(player, is, schemFormat);
@ -219,34 +215,31 @@ public class Schematic {
private void saveFromPlayer(Player player, boolean newFormat) throws IOException, NoClipboardException {
try{
PreparedStatement st = SQL.getCon().prepareStatement("UPDATE Schematic SET SchemData = ?, SchemFormat = ? WHERE SchemID = " + schemID);
byte[] data;
Blob blob = SQL.blob();
switch(Core.getVersion()){
case 8:
newFormat = false;
data = Schematic_8.getPlayerClipboard(player);
blob.setBytes(1, Schematic_8.getPlayerClipboard(player));
break;
case 9:
newFormat = false;
data = Schematic_9.getPlayerClipboard(player);
blob.setBytes(1, Schematic_9.getPlayerClipboard(player));
break;
case 10:
newFormat = false;
data = Schematic_10.getPlayerClipboard(player);
blob.setBytes(1, Schematic_10.getPlayerClipboard(player));
break;
case 14:
data = Schematic_14.getPlayerClipboard(player, newFormat);
blob.setBytes(1, Schematic_14.getPlayerClipboard(player, newFormat));
break;
case 15:
data = Schematic_15.getPlayerClipboard(player, newFormat);
blob.setBytes(1, Schematic_15.getPlayerClipboard(player, newFormat));
break;
default:
newFormat = false;
data = Schematic_12.getPlayerClipboard(player);
blob.setBytes(1, Schematic_12.getPlayerClipboard(player));
}
st.setBlob(1, new ByteArrayInputStream(data));
st.setBoolean(2, newFormat);
st.executeUpdate();
SQL.update("UPDATE Schematic SET SchemData = ?, SchemFormat = ? WHERE SchemID = ?", blob, newFormat, schemID);
schemFormat = newFormat;
}catch(SQLException e){
throw new IOException(e);
@ -254,8 +247,8 @@ public class Schematic {
}
public void remove(){
SQL.update("DELETE FROM SchemMember WHERE SchemOwner = " + schemOwner + " AND SchemName = '" + schemName + "'");
SQL.update("DELETE FROM Schematic WHERE SchemOwner = " + schemOwner + " AND SchemName = '" + schemName + "'");
SQL.update("DELETE FROM SchemMember WHERE SchemOwner = ? AND SchemName = ?", schemOwner, schemName);
SQL.update("DELETE FROM Schematic WHERE SchemOwner = ? AND SchemName = ?", schemOwner, schemName);
}
public static class WrongVersionException extends Exception{}

Datei anzeigen

@ -28,10 +28,7 @@ public class SchematicMember {
}
private void updateDB(){
SQL.update("INSERT INTO SchemMember" +
" (SchemName, SchemOwner, Member)" +
" VALUES" +
" ('" + schemName + "', '" + schemOwner + "', '" + member + "')");
SQL.update("INSERT INTO SchemMember (SchemName, SchemOwner, Member) VALUES (?, ?, ?)", schemName, schemOwner, member);
}
public static SchematicMember getSchemMemberFromDB(String schemName, UUID schemOwner, UUID schemMember){
@ -39,7 +36,7 @@ public class SchematicMember {
}
public static SchematicMember getSchemMemberFromDB(String schemName, int schemOwner, int schemMember){
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = '" + schemName + "' AND SchemOwner = '" + schemOwner + "' AND Member = '" + 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;
@ -51,7 +48,7 @@ public class SchematicMember {
}
public static SchematicMember getMemberBySchematic(String schemName, int schemMember){
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = '" + schemName + "' AND Member = '" + schemMember + "'");
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = ? AND Member = ?", schemName, schemMember);
try {
if(schematicMember == null || !schematicMember.next()){
return null;
@ -68,7 +65,7 @@ public class SchematicMember {
}
public static List<SchematicMember> getSchemMembers(String schemName, int schemOwner){
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = '" + schemName + "' AND SchemOwner = '" + schemOwner + "'");
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE SchemName = ? AND SchemOwner = ?", schemName, schemOwner);
try {
List<SchematicMember> schematicMembers = new ArrayList<>();
while(schematicMember.next()){
@ -86,7 +83,7 @@ public class SchematicMember {
}
public static List<SchematicMember> getAccessibleSchems(int schemMember){
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE Member = '" + schemMember + "'");
ResultSet schematicMember = SQL.select("SELECT * FROM SchemMember WHERE Member = ?", schemMember);
try {
List<SchematicMember> schematicMembers = new ArrayList<>();
while(schematicMember.next()){
@ -113,6 +110,6 @@ public class SchematicMember {
}
public void remove(){
SQL.update("DELETE FROM SchemMember WHERE SchemOwner = " + schemOwner + " AND SchemName = '" + schemName + "' AND Member = '" + member + "'");
SQL.update("DELETE FROM SchemMember WHERE SchemOwner = ? AND SchemName = ? AND Member = ?", schemOwner, schemName, member);
}
}

Datei anzeigen

@ -1,56 +1,52 @@
package de.steamwar.sql;
import java.util.HashMap;
import java.util.Map;
import de.steamwar.core.Core;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
public enum SchematicType {
Normal("", Type.NORMAL),
import java.io.File;
import java.util.*;
CAirShip("CAS", Type.CHECK_TYPE),
CWarGear("CWG", Type.CHECK_TYPE),
CWarShip("CWS", Type.CHECK_TYPE),
CMiniWarGear("CMWG", Type.CHECK_TYPE),
AirShip("AS", Type.FIGHT_TYPE, CAirShip),
WarGear("WG", Type.FIGHT_TYPE, CWarGear),
WarShip("WS", Type.FIGHT_TYPE, CWarShip),
MiniWarGear("MWG", Type.FIGHT_TYPE, CMiniWarGear),
public class SchematicType {
public static final SchematicType Normal = new SchematicType("Normal", "", Type.NORMAL, null); //Has to stay publicly availible
CMPPWarGear1_12("CMPPWG", Type.CHECK_TYPE),
CSGWarShip("CSGWS", Type.CHECK_TYPE),
CWarGear1_10("CWG1.10", Type.CHECK_TYPE),
CWarShip1_9("CWS1.9", Type.CHECK_TYPE),
CWarShip1_8("CWS1.8", Type.CHECK_TYPE),
CWarGear1_7("CWG1.7", Type.CHECK_TYPE),
WarGear1_14("WG1.14", Type.FIGHT_TYPE, null),
MPPWarGear1_12("MPPWG", Type.FIGHT_TYPE, CMPPWarGear1_12),
SGWarShip("SGWS", Type.FIGHT_TYPE, CSGWarShip),
WarGear1_12("WG1.12", Type.FIGHT_TYPE, null),
WarShip1_12("WS1.12", Type.FIGHT_TYPE, null),
MiniWarGear1_12("MWG1.12", Type.FIGHT_TYPE, null),
WarGear1_10("WG1.10", Type.FIGHT_TYPE, CWarGear1_10),
WarShip1_9("WS1.9", Type.FIGHT_TYPE, CWarShip1_9),
WarShip1_8("WS1.8", Type.FIGHT_TYPE, CWarShip1_8),
WarGear1_7("WG1.7", Type.FIGHT_TYPE, CWarGear1_7)
;
private static Map<String, SchematicType> fromDB = new HashMap<>();
private static final Map<String, SchematicType> fromDB;
private static final List<SchematicType> types;
static{
for(SchematicType type : values()){
fromDB.put(type.toDB(), type);
File file = new File(Core.getInstance().getDataFolder(), "SchematicTypes.yml");
if(!file.exists())
throw new SecurityException("SchematicType-ConfigFile not found!");
YamlConfiguration config = YamlConfiguration.loadConfiguration(file);
List<SchematicType> tmpTypes = new LinkedList<>();
Map<String, SchematicType> tmpFromDB = new HashMap<>();
tmpTypes.add(Normal);
tmpFromDB.put(Normal.name().toLowerCase(), Normal);
for(String type : config.getKeys(false)){
ConfigurationSection section = config.getConfigurationSection(type);
assert section != null;
String checktype = section.getString("checktype");
SchematicType current = new SchematicType(type, section.getString("kuerzel"), Type.valueOf(section.getString("type")), checktype != null ? tmpFromDB.get(checktype.toLowerCase()) : null);
tmpTypes.add(current);
tmpFromDB.put(type.toLowerCase(), current);
}
fromDB = Collections.unmodifiableMap(tmpFromDB);
types = Collections.unmodifiableList(tmpTypes);
}
private final String name;
private final String kuerzel;
private final Type type;
private SchematicType checkType;
SchematicType(String kuerzel, Type type){
this(kuerzel, type, null);
}
SchematicType(String kuerzel, Type type, SchematicType checkType){
private SchematicType(String name, String kuerzel, Type type, SchematicType checkType){
this.name = name;
this.kuerzel = kuerzel;
this.type = type;
this.checkType = checkType;
@ -76,16 +72,24 @@ public enum SchematicType {
return type == Type.NORMAL;
}
public String name(){
return name;
}
public String getKuerzel() {
return kuerzel;
}
public String toDB(){
return name().toLowerCase();
return name.toLowerCase();
}
public static SchematicType fromDB(String input){
return fromDB.get(input.toLowerCase());
return fromDB.getOrDefault(input.toLowerCase(), null);
}
public static List<SchematicType> values(){
return types;
}
enum Type{

Datei anzeigen

@ -63,8 +63,8 @@ public class SteamwarUser {
return team;
}
private static SteamwarUser fromDB(String statement){
ResultSet rs = SQL.select(statement);
private static SteamwarUser fromDB(String statement, Object identifier){
ResultSet rs = SQL.select(statement, identifier);
try {
if(rs.next())
return new SteamwarUser(rs);
@ -75,24 +75,23 @@ public class SteamwarUser {
}
public static SteamwarUser get(String userName){
userName = SQL.disarmString(userName);
SteamwarUser user = byName.get(userName.toLowerCase());
if(user == null)
user = fromDB("SELECT * FROM UserData WHERE lower(UserName) = '" + userName.toLowerCase() + "'");
user = fromDB("SELECT * FROM UserData WHERE lower(UserName) = ?", userName.toLowerCase());
return user;
}
public static SteamwarUser get(UUID uuid){
SteamwarUser user = byUUID.get(uuid);
if(user == null)
user = fromDB("SELECT * FROM UserData WHERE UUID = '" + uuid.toString() + "'");
user = fromDB("SELECT * FROM UserData WHERE UUID = ?", uuid.toString());
return user;
}
public static SteamwarUser get(int id) {
SteamwarUser user = byId.get(id);
if(user == null)
user = fromDB("SELECT * FROM UserData WHERE id = '" + id + "'");
user = fromDB("SELECT * FROM UserData WHERE id = ?", id);
return user;
}
}

Datei anzeigen

@ -27,7 +27,7 @@ public class Team {
public static Team get(int id){
if(id == 0)
return pub;
ResultSet rs = SQL.select("SELECT * FROM Team WHERE TeamID = " + id);
ResultSet rs = SQL.select("SELECT * FROM Team WHERE TeamID = ?", id);
try {
if(!rs.next())
return null;
@ -55,7 +55,7 @@ public class Team {
public List<Integer> getMembers(){
try{
ResultSet memberlist = SQL.select("SELECT id FROM UserData WHERE Team = '" + teamId + "'");
ResultSet memberlist = SQL.select("SELECT id FROM UserData WHERE Team = ?", teamId);
List<Integer> members = new LinkedList<>();
while(memberlist.next())
members.add(memberlist.getInt("id"));