SteamWar/SpigotCore
Archiviert
13
0

Fixing Schematic RAM leak and 1.14 support

Dieser Commit ist enthalten in:
Lixfel 2019-12-11 22:34:46 +01:00
Ursprung efb3e2ce70
Commit 4fa0297480
2 geänderte Dateien mit 7 neuen und 28 gelöschten Zeilen

Datei anzeigen

@ -1,6 +1,5 @@
package de.steamwar.sql; package de.steamwar.sql;
import com.boydti.fawe.FaweAPI;
import com.sk89q.worldedit.EmptyClipboardException; import com.sk89q.worldedit.EmptyClipboardException;
import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extension.platform.Actor;
@ -23,7 +22,7 @@ class Schematic_14 {
static byte[] getPlayerClipboard(Player player, boolean schemFormat) throws IOException, NoClipboardException { static byte[] getPlayerClipboard(Player player, boolean schemFormat) throws IOException, NoClipboardException {
ClipboardHolder clipboardHolder; ClipboardHolder clipboardHolder;
try { try {
clipboardHolder = FaweAPI.wrapPlayer(player).getSession().getClipboard(); clipboardHolder = WorldEditPlugin.getInstance().getSession(player).getClipboard();
} catch (EmptyClipboardException e) { } catch (EmptyClipboardException e) {
throw new NoClipboardException(); throw new NoClipboardException();
} }

Datei anzeigen

@ -2,17 +2,17 @@ package de.steamwar.sql;
import com.sk89q.worldedit.extent.clipboard.Clipboard; import com.sk89q.worldedit.extent.clipboard.Clipboard;
import de.steamwar.core.Core; import de.steamwar.core.Core;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.io.*; import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.logging.Level;
public class Schematic { public class Schematic {
@ -55,7 +55,7 @@ public class Schematic {
public static Schematic getSchemFromDB(String schemName, int schemOwner){ public static Schematic getSchemFromDB(String schemName, int schemOwner){
schemName = SQL.disarmString(schemName); schemName = SQL.disarmString(schemName);
ResultSet schematic = SQL.select("SELECT * FROM Schematic WHERE SchemName = '" + schemName + "' AND SchemOwner = '" + schemOwner + "'"); ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemName = '" + schemName + "' AND SchemOwner = '" + schemOwner + "'");
try { try {
if(schematic == null || !schematic.next()){ if(schematic == null || !schematic.next()){
SchematicMember member = SchematicMember.getMemberBySchematic(schemName, schemOwner); SchematicMember member = SchematicMember.getMemberBySchematic(schemName, schemOwner);
@ -70,33 +70,13 @@ public class Schematic {
} }
} }
public static void convertAllSchematics(){
try{
PreparedStatement ps = SQL.getCon().prepareStatement("SELECT SchemName, SchemOwner FROM Schematic");
ResultSet allSchems = ps.executeQuery();
while(allSchems.next()){
int schemOwner = allSchems.getInt("SchemOwner");
String schemName = allSchems.getString("SchemName");
try{
PreparedStatement st = SQL.getCon().prepareStatement("UPDATE Schematic SET SchemData = ? WHERE SchemOwner = " + schemOwner + " AND SchemName = '" + schemName + "'");
st.setBlob(1, new FileInputStream("/home/minecraft/schematics/" + SteamwarUser.get(schemOwner).getUUID().toString() + "/" + schemName + ".schematic"));
st.executeUpdate();
}catch(FileNotFoundException e){
Bukkit.getLogger().log(Level.WARNING, "Could not convert Schematic " + schemOwner + " " + schemName + " due to missing file.");
}
}
}catch(SQLException e){
throw new SecurityException("Schematic Conversation failed", e);
}
}
public static List<Schematic> getSchemsAccessibleByUser(UUID schemOwner){ public static List<Schematic> getSchemsAccessibleByUser(UUID schemOwner){
return getSchemsAccessibleByUser(SteamwarUser.get(schemOwner).getId()); return getSchemsAccessibleByUser(SteamwarUser.get(schemOwner).getId());
} }
public static List<Schematic> getSchemsAccessibleByUser(int schemOwner){ public static List<Schematic> getSchemsAccessibleByUser(int schemOwner){
try{ try{
ResultSet schematic = SQL.select("SELECT * FROM Schematic WHERE SchemOwner = '" + schemOwner + "'"); ResultSet schematic = SQL.select("SELECT SchemID, SchemName, SchemOwner, Item, SchemType, SchemFormat FROM Schematic WHERE SchemOwner = '" + schemOwner + "'");
List<Schematic> schematics = new ArrayList<>(); List<Schematic> schematics = new ArrayList<>();
while(schematic.next()){ while(schematic.next()){
schematics.add(new Schematic(schematic)); schematics.add(new Schematic(schematic));
@ -126,7 +106,7 @@ public class Schematic {
public static List<Schematic> getAllSchemsOfType(SchematicType schemType){ public static List<Schematic> getAllSchemsOfType(SchematicType schemType){
try{ try{
ResultSet schematic = SQL.select("SELECT * 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<>(); List<Schematic> schematics = new ArrayList<>();
while(schematic.next()){ while(schematic.next()){
schematics.add(new Schematic(schematic)); schematics.add(new Schematic(schematic));