mirror of
https://github.com/songoda/UltimateKits.git
synced 2024-09-28 21:57:29 +02:00
fix location data bug
This commit is contained in:
parent
fff00f77ae
commit
fa7b3594b4
@ -256,8 +256,9 @@ public class UltimateKits extends SongodaPlugin {
|
||||
boolean itemOverride = dataFile.getBoolean("BlockData." + key + ".itemOverride");
|
||||
|
||||
if (kit == null) dataFile.set("BlockData." + key, null);
|
||||
else
|
||||
kitManager.addKitToLocation(kit, location, type, holograms, particles, displayItems, itemOverride);
|
||||
else {
|
||||
updateHologram(kitManager.addKitToLocation(kit, location, type, holograms, particles, displayItems, itemOverride));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package com.songoda.ultimatekits.commands;
|
||||
import com.songoda.core.commands.AbstractCommand;
|
||||
import com.songoda.ultimatekits.UltimateKits;
|
||||
import com.songoda.ultimatekits.kit.Kit;
|
||||
import com.songoda.ultimatekits.kit.KitBlockData;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -25,16 +26,18 @@ public class CommandSet extends AbstractCommand {
|
||||
return ReturnType.FAILURE;
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
String kit = args[0].toLowerCase();
|
||||
if (instance.getKitManager().getKit(kit) == null) {
|
||||
Kit kit = instance.getKitManager().getKit(args[0].toLowerCase());
|
||||
if (kit == null) {
|
||||
instance.getLocale().getMessage("command.kit.kitdoesntexist").sendPrefixedMessage(sender);
|
||||
return ReturnType.FAILURE;
|
||||
}
|
||||
Block b = player.getTargetBlock(null, 200);
|
||||
instance.getKitManager().addKitToLocation(instance.getKitManager().getKit(kit), b.getLocation());
|
||||
instance.getLocale().newMessage("&8Kit &a" + kit + " &8set to: &a" + b.getType().toString() + "&8.")
|
||||
KitBlockData data = instance.getKitManager().addKitToLocation(kit, b.getLocation());
|
||||
UltimateKits.getInstance().getDataManager().createBlockData(data);
|
||||
instance.getLocale().newMessage("&8Kit &a" + kit.getName() + " &8set to: &a" + b.getType().toString() + "&8.")
|
||||
.sendPrefixedMessage(sender);
|
||||
return ReturnType.SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3,6 +3,7 @@ package com.songoda.ultimatekits.database;
|
||||
import com.songoda.core.database.DataManagerAbstract;
|
||||
import com.songoda.core.database.DatabaseConnector;
|
||||
import com.songoda.ultimatekits.UltimateKits;
|
||||
import com.songoda.ultimatekits.kit.Kit;
|
||||
import com.songoda.ultimatekits.kit.KitBlockData;
|
||||
import com.songoda.ultimatekits.kit.KitType;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -30,7 +31,7 @@ public class DataManager extends DataManagerAbstract {
|
||||
"WHERE world = ? AND x = ? AND y = ? AND z = ?";
|
||||
try (PreparedStatement statement = connection.prepareStatement(updateData)) {
|
||||
for (KitBlockData data : blockData.values()) {
|
||||
if (data == null) continue;
|
||||
if (data == null || data.getWorld() == null) continue;
|
||||
statement.setString(1, data.getType().toString());
|
||||
statement.setString(2, data.getKit().getName());
|
||||
statement.setBoolean(3, data.showHologram());
|
||||
@ -41,7 +42,6 @@ public class DataManager extends DataManagerAbstract {
|
||||
statement.setInt(8, data.getX());
|
||||
statement.setInt(9, data.getY());
|
||||
statement.setInt(10, data.getZ());
|
||||
statement.executeUpdate();
|
||||
statement.addBatch();
|
||||
}
|
||||
|
||||
@ -51,6 +51,7 @@ public class DataManager extends DataManagerAbstract {
|
||||
}
|
||||
|
||||
public void updateBlockData(KitBlockData blockData) {
|
||||
if (blockData.getWorld() == null) return;
|
||||
this.async(() -> this.databaseConnector.connect(connection -> {
|
||||
String updateData = "UPDATE " + this.getTablePrefix() + "blockdata SET type = ?, kit = ?, holograms = ?, " +
|
||||
"displayItems = ?, particles = ?, itemOverride = ? " +
|
||||
@ -72,6 +73,7 @@ public class DataManager extends DataManagerAbstract {
|
||||
}
|
||||
|
||||
public void createBlockData(KitBlockData blockData) {
|
||||
if (blockData.getWorld() == null) return;
|
||||
this.async(() -> this.databaseConnector.connect(connection -> {
|
||||
String createData ="INSERT INTO " + this.getTablePrefix() + "blockdata (" +
|
||||
"type, kit, holograms, displayItems, particles, itemOverride, world, x, y, z)" +
|
||||
@ -113,22 +115,24 @@ public class DataManager extends DataManagerAbstract {
|
||||
try (Statement statement = connection.createStatement()) {
|
||||
ResultSet result = statement.executeQuery(selectData);
|
||||
while (result.next()) {
|
||||
KitType type = KitType.valueOf(result.getString("type"));
|
||||
String kit = result.getString("kit");
|
||||
|
||||
World world = Bukkit.getWorld(result.getString("world"));
|
||||
if (world == null) continue;
|
||||
|
||||
Kit kit = UltimateKits.getInstance().getKitManager().getKit(result.getString("kit"));
|
||||
KitType type = KitType.getKitType(result.getString("type"));
|
||||
if (kit == null || type == null) continue;
|
||||
|
||||
boolean holograms = result.getBoolean("holograms");
|
||||
boolean displayItems = result.getBoolean("displayItems");
|
||||
boolean particles = result.getBoolean("particles");
|
||||
boolean itemOverride = result.getBoolean("itemOverride");
|
||||
World world = Bukkit.getWorld(result.getString("world"));
|
||||
int x = result.getInt("x");
|
||||
int y = result.getInt("y");
|
||||
int z = result.getInt("z");
|
||||
Location location = new Location(world, x, y, z);
|
||||
|
||||
KitBlockData kitBlockData =
|
||||
new KitBlockData(UltimateKits.getInstance().getKitManager().getKit(kit),
|
||||
location, type, holograms, particles, displayItems, itemOverride);
|
||||
blockData.put(location, kitBlockData);
|
||||
blockData.put(location, new KitBlockData(kit, location, type, holograms, particles, displayItems, itemOverride));
|
||||
}
|
||||
result.close();
|
||||
}
|
||||
|
@ -65,11 +65,16 @@ public class _2_DuplicateMigration extends DataMigration {
|
||||
statement.setInt(8, blockData.x);
|
||||
statement.setInt(9, blockData.y);
|
||||
statement.setInt(10, blockData.z);
|
||||
statement.executeUpdate();
|
||||
statement.addBatch();
|
||||
}
|
||||
statement.executeBatch();
|
||||
}
|
||||
connection.commit();
|
||||
connection.setAutoCommit(true);
|
||||
// free up disk space (sqlite command)
|
||||
try (Statement statement = connection.createStatement()) {
|
||||
statement.executeUpdate("VACUUM");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,16 +29,16 @@ public final class KitManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void addKitToLocation(Kit kit, Location location) {
|
||||
public KitBlockData addKitToLocation(Kit kit, Location location) {
|
||||
KitBlockData data = new KitBlockData(kit, location);
|
||||
kitsAtLocations.put(roundLocation(location), data);
|
||||
return data;
|
||||
}
|
||||
|
||||
public void addKitToLocation(Kit kit, Location location, KitType type, boolean hologram, boolean particles, boolean items, boolean itemOverride) {
|
||||
public KitBlockData addKitToLocation(Kit kit, Location location, KitType type, boolean hologram, boolean particles, boolean items, boolean itemOverride) {
|
||||
KitBlockData data = new KitBlockData(kit, location, type, hologram, particles, items, itemOverride);
|
||||
kitsAtLocations.put(roundLocation(location), data);
|
||||
UltimateKits.getInstance().getDataManager().createBlockData(data);
|
||||
UltimateKits.getInstance().updateHologram(data);
|
||||
return data;
|
||||
}
|
||||
|
||||
public Kit removeKitFromLocation(Location location) {
|
||||
|
@ -1,3 +1,17 @@
|
||||
package com.songoda.ultimatekits.kit;
|
||||
|
||||
public enum KitType {PREVIEW, CRATE, CLAIM}
|
||||
public enum KitType {
|
||||
|
||||
PREVIEW, CRATE, CLAIM;
|
||||
|
||||
public static KitType getKitType(String search) {
|
||||
if (search != null) {
|
||||
for (KitType t : values()) {
|
||||
if (t.name().equalsIgnoreCase(search)) {
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user