mirror of
https://e.coding.net/circlecloud/QuickShop.git
synced 2024-11-25 02:28:54 +00:00
feat: 更新类库 代码优化 添加世界限制
Signed-off-by: 502647092 <admin@yumc.pw>
This commit is contained in:
parent
b110da8f73
commit
49c0b8ecd7
27
pom.xml
27
pom.xml
@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.maxgamer</groupId>
|
<groupId>org.maxgamer</groupId>
|
||||||
<artifactId>QuickShop</artifactId>
|
<artifactId>QuickShop</artifactId>
|
||||||
<version>1.9.5</version>
|
<version>2.0</version>
|
||||||
<description>快捷商店重置版本...</description>
|
<description>快捷商店重置版本...</description>
|
||||||
<build>
|
<build>
|
||||||
<finalName>${project.name}</finalName>
|
<finalName>${project.name}</finalName>
|
||||||
@ -71,6 +71,10 @@
|
|||||||
<id>yumc-repo</id>
|
<id>yumc-repo</id>
|
||||||
<url>http://repo.yumc.pw/content/groups/public/</url>
|
<url>http://repo.yumc.pw/content/groups/public/</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>dmulloy</id>
|
||||||
|
<url>http://repo.dmulloy2.net/content/groups/public/</url>
|
||||||
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
<repository>
|
<repository>
|
||||||
@ -80,23 +84,11 @@
|
|||||||
</repository>
|
</repository>
|
||||||
</distributionManagement>
|
</distributionManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.spigotmc</groupId>
|
|
||||||
<artifactId>spigot-api</artifactId>
|
|
||||||
<type>jar</type>
|
|
||||||
<version>1.10.2-R0.1-SNAPSHOT</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.milkbowl.vault</groupId>
|
|
||||||
<artifactId>Vault</artifactId>
|
|
||||||
<type>jar</type>
|
|
||||||
<version>1.5.6</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>pw.yumc</groupId>
|
<groupId>pw.yumc</groupId>
|
||||||
<artifactId>YumCore</artifactId>
|
<artifactId>YumCore</artifactId>
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<version>1.1</version>
|
<version>1.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.github.Cnly.WowSuchCleaner</groupId>
|
<groupId>io.github.Cnly.WowSuchCleaner</groupId>
|
||||||
@ -110,12 +102,5 @@
|
|||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${project.basedir}/lib/WorldEdit.jar</systemPath>
|
<systemPath>${project.basedir}/lib/WorldEdit.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.comphenix.protocol</groupId>
|
|
||||||
<artifactId>ProtocolLib</artifactId>
|
|
||||||
<version>4.1</version>
|
|
||||||
<scope>system</scope>
|
|
||||||
<systemPath>${project.basedir}/lib/ProtocolLib-4.1.jar</systemPath>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -1,5 +1,9 @@
|
|||||||
package org.maxgamer.QuickShop.Command;
|
package org.maxgamer.QuickShop.Command;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
@ -10,37 +14,33 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||||
import org.bukkit.util.BlockIterator;
|
import org.bukkit.util.BlockIterator;
|
||||||
|
import org.maxgamer.QuickShop.QuickShop;
|
||||||
import org.maxgamer.QuickShop.Database.Database;
|
import org.maxgamer.QuickShop.Database.Database;
|
||||||
import org.maxgamer.QuickShop.Database.MySQLCore;
|
import org.maxgamer.QuickShop.Database.MySQLCore;
|
||||||
import org.maxgamer.QuickShop.Database.SQLiteCore;
|
import org.maxgamer.QuickShop.Database.SQLiteCore;
|
||||||
import org.maxgamer.QuickShop.QuickShop;
|
|
||||||
import org.maxgamer.QuickShop.Shop.ContainerShop;
|
import org.maxgamer.QuickShop.Shop.ContainerShop;
|
||||||
import org.maxgamer.QuickShop.Shop.Shop;
|
import org.maxgamer.QuickShop.Shop.Shop;
|
||||||
import org.maxgamer.QuickShop.Shop.ShopChunk;
|
import org.maxgamer.QuickShop.Shop.ShopChunk;
|
||||||
import org.maxgamer.QuickShop.Shop.ShopType;
|
import org.maxgamer.QuickShop.Shop.ShopType;
|
||||||
import org.maxgamer.QuickShop.Util.MsgUtil;
|
import org.maxgamer.QuickShop.Util.MsgUtil;
|
||||||
|
|
||||||
import pw.yumc.YumCore.bukkit.P;
|
import pw.yumc.YumCore.bukkit.P;
|
||||||
import pw.yumc.YumCore.commands.CommandManager;
|
import pw.yumc.YumCore.commands.CommandSub;
|
||||||
import pw.yumc.YumCore.commands.annotation.Cmd;
|
import pw.yumc.YumCore.commands.annotation.Cmd;
|
||||||
import pw.yumc.YumCore.commands.annotation.Cmd.Executor;
|
|
||||||
import pw.yumc.YumCore.commands.annotation.Help;
|
import pw.yumc.YumCore.commands.annotation.Help;
|
||||||
import pw.yumc.YumCore.commands.annotation.Sort;
|
import pw.yumc.YumCore.commands.annotation.Sort;
|
||||||
import pw.yumc.YumCore.commands.interfaces.CommandExecutor;
|
import pw.yumc.YumCore.commands.interfaces.Executor;
|
||||||
import pw.yumc.YumCore.commands.interfaces.CommandHelpParse;
|
import pw.yumc.YumCore.commands.interfaces.HelpParse;
|
||||||
|
|
||||||
import java.io.File;
|
public class QuickShopCommands implements Executor, HelpParse {
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|
||||||
QuickShop plugin = P.getPlugin();
|
QuickShop plugin = P.getPlugin();
|
||||||
|
|
||||||
public QuickShopCommands() {
|
public QuickShopCommands() {
|
||||||
new CommandManager("qs", this).setHelpParse(this);
|
new CommandSub("qs", this).setHelpParse(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Sort(1)
|
@Sort(1)
|
||||||
@Cmd(aliases = "b", permission = "quickshop.create.buy", executor = Executor.PLAYER)
|
@Cmd(aliases = "b", permission = "quickshop.create.buy", executor = Cmd.Executor.PLAYER)
|
||||||
@Help("command.description.buy")
|
@Help("command.description.buy")
|
||||||
public void buy(Player player) {
|
public void buy(Player player) {
|
||||||
changeShopType(player, ShopType.BUYING);
|
changeShopType(player, ShopType.BUYING);
|
||||||
@ -73,7 +73,7 @@ public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Sort(5)
|
@Sort(5)
|
||||||
@Cmd(aliases = "e", permission = "quickshop.empty", executor = Executor.PLAYER)
|
@Cmd(aliases = "e", permission = "quickshop.empty", executor = Cmd.Executor.PLAYER)
|
||||||
@Help("command.description.empty")
|
@Help("command.description.empty")
|
||||||
public void empty(Player player) {
|
public void empty(Player player) {
|
||||||
final BlockIterator bIt = new BlockIterator(player, 10);
|
final BlockIterator bIt = new BlockIterator(player, 10);
|
||||||
@ -141,7 +141,7 @@ public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Cmd(aliases = "f", minimumArguments = 1, permission = "quickshop.find", executor = Executor.PLAYER)
|
@Cmd(aliases = "f", minimumArguments = 1, permission = "quickshop.find", executor = Cmd.Executor.PLAYER)
|
||||||
@Help("command.description.find")
|
@Help("command.description.find")
|
||||||
public void find(Player p, String lookFor) {
|
public void find(Player p, String lookFor) {
|
||||||
lookFor = lookFor.toLowerCase();
|
lookFor = lookFor.toLowerCase();
|
||||||
@ -218,7 +218,7 @@ public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Sort(4)
|
@Sort(4)
|
||||||
@Cmd(aliases = "p", minimumArguments = 1, permission = "quickshop.create.changeprice", executor = Executor.PLAYER)
|
@Cmd(aliases = "p", minimumArguments = 1, permission = "quickshop.create.changeprice", executor = Cmd.Executor.PLAYER)
|
||||||
@Help(value = "command.description.price", possibleArguments = "<价格>")
|
@Help(value = "command.description.price", possibleArguments = "<价格>")
|
||||||
public void price(Player sender, Double price) {
|
public void price(Player sender, Double price) {
|
||||||
if (price < 0.01) {
|
if (price < 0.01) {
|
||||||
@ -281,7 +281,7 @@ public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Sort(6)
|
@Sort(6)
|
||||||
@Cmd(minimumArguments = 1, permission = "quickshop.refill", executor = Executor.PLAYER)
|
@Cmd(minimumArguments = 1, permission = "quickshop.refill", executor = Cmd.Executor.PLAYER)
|
||||||
@Help(value = "command.description.refill", possibleArguments = "<数量>")
|
@Help(value = "command.description.refill", possibleArguments = "<数量>")
|
||||||
public void refill(Player sender, Integer add) {
|
public void refill(Player sender, Integer add) {
|
||||||
final BlockIterator bIt = new BlockIterator(sender, 10);
|
final BlockIterator bIt = new BlockIterator(sender, 10);
|
||||||
@ -307,7 +307,7 @@ public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Sort(6)
|
@Sort(6)
|
||||||
@Cmd(aliases = "r", permission = "quickshop.delete", executor = Executor.PLAYER)
|
@Cmd(aliases = "r", permission = "quickshop.delete", executor = Cmd.Executor.PLAYER)
|
||||||
@Help("command.description.remove")
|
@Help("command.description.remove")
|
||||||
public void remove(Player p) {
|
public void remove(Player p) {
|
||||||
final BlockIterator bIt = new BlockIterator(p, 10);
|
final BlockIterator bIt = new BlockIterator(p, 10);
|
||||||
@ -328,14 +328,14 @@ public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Sort(2)
|
@Sort(2)
|
||||||
@Cmd(aliases = "s", permission = "quickshop.create.sell", executor = Executor.PLAYER)
|
@Cmd(aliases = "s", permission = "quickshop.create.sell", executor = Cmd.Executor.PLAYER)
|
||||||
@Help("command.description.sell")
|
@Help("command.description.sell")
|
||||||
public void sell(Player player) {
|
public void sell(Player player) {
|
||||||
changeShopType(player, ShopType.SELLING);
|
changeShopType(player, ShopType.SELLING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Sort(3)
|
@Sort(3)
|
||||||
@Cmd(aliases = "so", minimumArguments = 1, permission = "quickshop.setowner", executor = Executor.PLAYER)
|
@Cmd(aliases = "so", minimumArguments = 1, permission = "quickshop.setowner", executor = Cmd.Executor.PLAYER)
|
||||||
@Help("command.description.setowner")
|
@Help("command.description.setowner")
|
||||||
public void setowner(CommandSender sender, String owner) {
|
public void setowner(CommandSender sender, String owner) {
|
||||||
final BlockIterator bIt = new BlockIterator((Player) sender, 10);
|
final BlockIterator bIt = new BlockIterator((Player) sender, 10);
|
||||||
@ -353,7 +353,7 @@ public class QuickShopCommands implements CommandExecutor, CommandHelpParse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Sort(0)
|
@Sort(0)
|
||||||
@Cmd(permission = "quickshop.unlimited", executor = Executor.PLAYER)
|
@Cmd(permission = "quickshop.unlimited", executor = Cmd.Executor.PLAYER)
|
||||||
@Help("command.description.unlimited")
|
@Help("command.description.unlimited")
|
||||||
public void unlimited(Player sender) {
|
public void unlimited(Player sender) {
|
||||||
final BlockIterator bIt = new BlockIterator(sender, 10);
|
final BlockIterator bIt = new BlockIterator(sender, 10);
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
package org.maxgamer.QuickShop.Config;
|
package org.maxgamer.QuickShop.Config;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.maxgamer.QuickShop.QuickShop;
|
import org.maxgamer.QuickShop.QuickShop;
|
||||||
import org.maxgamer.QuickShop.Shop.Item.FakeItem_17_18;
|
import org.maxgamer.QuickShop.Shop.Item.FakeItem_17_18;
|
||||||
import org.maxgamer.QuickShop.Shop.Item.FakeItem_19_110;
|
import org.maxgamer.QuickShop.Shop.Item.FakeItem_19_110;
|
||||||
|
|
||||||
import pw.yumc.YumCore.bukkit.Log;
|
import pw.yumc.YumCore.bukkit.Log;
|
||||||
import pw.yumc.YumCore.config.FileConfig;
|
import pw.yumc.YumCore.config.FileConfig;
|
||||||
import pw.yumc.YumCore.tellraw.Tellraw;
|
import pw.yumc.YumCore.tellraw.Tellraw;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
public class ConfigManager {
|
public class ConfigManager {
|
||||||
private boolean enableMagicLib = false;
|
private boolean enableMagicLib = false;
|
||||||
/** Whether debug info should be shown in the console */
|
/** Whether debug info should be shown in the console */
|
||||||
@ -91,7 +92,7 @@ public class ConfigManager {
|
|||||||
plugin.getLogger().info("虚拟悬浮物功能测试正常(1.8-1.10.2)...");
|
plugin.getLogger().info("虚拟悬浮物功能测试正常(1.8-1.10.2)...");
|
||||||
fakeItem = true;
|
fakeItem = true;
|
||||||
} catch (final Throwable e) {
|
} catch (final Throwable e) {
|
||||||
Log.debug(e);
|
Log.d(e);
|
||||||
try {
|
try {
|
||||||
FakeItem_17_18.register(plugin);
|
FakeItem_17_18.register(plugin);
|
||||||
plugin.getLogger().info("虚拟悬浮物功能测试正常(1.7)...");
|
plugin.getLogger().info("虚拟悬浮物功能测试正常(1.7)...");
|
||||||
@ -100,7 +101,7 @@ public class ConfigManager {
|
|||||||
plugin.getLogger().warning("+=========================================");
|
plugin.getLogger().warning("+=========================================");
|
||||||
plugin.getLogger().warning("| 警告: 启动虚拟物品失败 使用原版悬浮物品...");
|
plugin.getLogger().warning("| 警告: 启动虚拟物品失败 使用原版悬浮物品...");
|
||||||
plugin.getLogger().warning("+=========================================");
|
plugin.getLogger().warning("+=========================================");
|
||||||
Log.debug(e2);
|
Log.d(e2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,8 +112,7 @@ public class Database {
|
|||||||
PreparedStatement ps = this.getConnection().prepareStatement(query);
|
PreparedStatement ps = this.getConnection().prepareStatement(query);
|
||||||
ResultSet rs = ps.executeQuery();
|
ResultSet rs = ps.executeQuery();
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
rs.getString(column); // Throws an exception if it can't find
|
rs.getString(column); // Throws an exception if it can't find that column
|
||||||
// that column
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
@ -149,7 +148,7 @@ public class Database {
|
|||||||
*/
|
*/
|
||||||
public void copyTo(Database db) throws SQLException {
|
public void copyTo(Database db) throws SQLException {
|
||||||
ResultSet rs = getConnection().getMetaData().getTables(null, null, "%", null);
|
ResultSet rs = getConnection().getMetaData().getTables(null, null, "%", null);
|
||||||
List<String> tables = new LinkedList<String>();
|
List<String> tables = new LinkedList<>();
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
tables.add(rs.getString("TABLE_NAME"));
|
tables.add(rs.getString("TABLE_NAME"));
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@ package org.maxgamer.QuickShop.Database;
|
|||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
|
||||||
public interface DatabaseCore {
|
public interface DatabaseCore {
|
||||||
public Connection getConnection();
|
Connection getConnection();
|
||||||
|
|
||||||
public void queue(BufferStatement bs);
|
void queue(BufferStatement bs);
|
||||||
|
|
||||||
public void flush();
|
void flush();
|
||||||
|
|
||||||
public void close();
|
void close();
|
||||||
}
|
}
|
@ -19,20 +19,20 @@ public class DatabaseHelper {
|
|||||||
* Verifies that all required columns exist.
|
* Verifies that all required columns exist.
|
||||||
*/
|
*/
|
||||||
public static void checkColumns(Database db) {
|
public static void checkColumns(Database db) {
|
||||||
PreparedStatement ps = null;
|
PreparedStatement ps;
|
||||||
try {
|
try {
|
||||||
// V3.4.2
|
// V3.4.2
|
||||||
ps = db.getConnection().prepareStatement("ALTER TABLE shops MODIFY COLUMN price double(32,2) NOT NULL AFTER owner");
|
ps = db.getConnection().prepareStatement("ALTER TABLE shops MODIFY COLUMN price double(32,2) NOT NULL AFTER owner");
|
||||||
ps.execute();
|
ps.execute();
|
||||||
ps.close();
|
ps.close();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException ignored) {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
// V3.4.3
|
// V3.4.3
|
||||||
ps = db.getConnection().prepareStatement("ALTER TABLE messages MODIFY COLUMN time BIGINT(32) NOT NULL AFTER message");
|
ps = db.getConnection().prepareStatement("ALTER TABLE messages MODIFY COLUMN time BIGINT(32) NOT NULL AFTER message");
|
||||||
ps.execute();
|
ps.execute();
|
||||||
ps.close();
|
ps.close();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ public class MySQLCore implements DatabaseCore {
|
|||||||
/** The connection properties... user, pass, autoReconnect.. */
|
/** The connection properties... user, pass, autoReconnect.. */
|
||||||
private Properties info;
|
private Properties info;
|
||||||
private static final int MAX_CONNECTIONS = 8;
|
private static final int MAX_CONNECTIONS = 8;
|
||||||
private static ArrayList<Connection> pool = new ArrayList<Connection>();
|
private static ArrayList<Connection> pool = new ArrayList<>();
|
||||||
|
|
||||||
public MySQLCore(String host, String user, String pass, String database, String port) {
|
public MySQLCore(String host, String user, String pass, String database, String port) {
|
||||||
info = new Properties();
|
info = new Properties();
|
||||||
@ -59,7 +59,7 @@ public class MySQLCore implements DatabaseCore {
|
|||||||
while (con == null) {
|
while (con == null) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(15);
|
Thread.sleep(15);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException ignored) {
|
||||||
}
|
}
|
||||||
// Try again
|
// Try again
|
||||||
this.getConnection();
|
this.getConnection();
|
||||||
@ -69,7 +69,6 @@ public class MySQLCore implements DatabaseCore {
|
|||||||
ps.close();
|
ps.close();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ public class SQLiteCore implements DatabaseCore {
|
|||||||
private Connection connection;
|
private Connection connection;
|
||||||
private final File dbFile;
|
private final File dbFile;
|
||||||
private volatile Thread watcher;
|
private volatile Thread watcher;
|
||||||
private volatile LinkedList<BufferStatement> queue = new LinkedList<BufferStatement>();
|
private final LinkedList<BufferStatement> queue = new LinkedList<BufferStatement>();
|
||||||
|
|
||||||
public SQLiteCore(final File dbFile) {
|
public SQLiteCore(final File dbFile) {
|
||||||
this.dbFile = dbFile;
|
this.dbFile = dbFile;
|
||||||
@ -25,7 +25,7 @@ public class SQLiteCore implements DatabaseCore {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void flush() {
|
public void flush() {
|
||||||
while (queue.isEmpty() == false) {
|
while (!queue.isEmpty()) {
|
||||||
BufferStatement bs;
|
BufferStatement bs;
|
||||||
synchronized (queue) {
|
synchronized (queue) {
|
||||||
bs = queue.removeFirst();
|
bs = queue.removeFirst();
|
||||||
@ -51,9 +51,7 @@ public class SQLiteCore implements DatabaseCore {
|
|||||||
public Connection getConnection() {
|
public Connection getConnection() {
|
||||||
try {
|
try {
|
||||||
// If we have a current connection, fetch it
|
// If we have a current connection, fetch it
|
||||||
if (this.connection != null && !this.connection.isClosed()) {
|
if (this.connection != null && !this.connection.isClosed()) { return this.connection; }
|
||||||
return this.connection;
|
|
||||||
}
|
|
||||||
} catch (final SQLException e) {
|
} catch (final SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -63,10 +61,7 @@ public class SQLiteCore implements DatabaseCore {
|
|||||||
Class.forName("org.sqlite.JDBC");
|
Class.forName("org.sqlite.JDBC");
|
||||||
this.connection = DriverManager.getConnection("jdbc:sqlite:" + this.dbFile);
|
this.connection = DriverManager.getConnection("jdbc:sqlite:" + this.dbFile);
|
||||||
return this.connection;
|
return this.connection;
|
||||||
} catch (final ClassNotFoundException e) {
|
} catch (final ClassNotFoundException | SQLException e) {
|
||||||
e.printStackTrace();
|
|
||||||
return null;
|
|
||||||
} catch (final SQLException e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -100,7 +95,7 @@ public class SQLiteCore implements DatabaseCore {
|
|||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(30000);
|
Thread.sleep(30000);
|
||||||
} catch (final InterruptedException e) {
|
} catch (final InterruptedException ignored) {
|
||||||
}
|
}
|
||||||
flush();
|
flush();
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ public class Economy_Vault implements EconomyCore {
|
|||||||
public String format(final double balance) {
|
public String format(final double balance) {
|
||||||
try {
|
try {
|
||||||
return this.vault.format(balance);
|
return this.vault.format(balance);
|
||||||
} catch (final NumberFormatException e) {
|
} catch (final NumberFormatException ignored) {
|
||||||
}
|
}
|
||||||
return "" + balance;
|
return "" + balance;
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ public class Economy_Vault implements EconomyCore {
|
|||||||
if (economyProvider != null) {
|
if (economyProvider != null) {
|
||||||
vault = (economyProvider.getProvider());
|
vault = (economyProvider.getProvider());
|
||||||
}
|
}
|
||||||
} catch (final Exception e) {
|
} catch (final Exception ignored) {
|
||||||
}
|
}
|
||||||
return vault != null;
|
return vault != null;
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,12 @@
|
|||||||
package org.maxgamer.QuickShop;
|
package org.maxgamer.QuickShop;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.*;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -26,22 +18,11 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
import org.maxgamer.QuickShop.Command.QuickShopCommands;
|
import org.maxgamer.QuickShop.Command.QuickShopCommands;
|
||||||
import org.maxgamer.QuickShop.Config.ConfigManager;
|
import org.maxgamer.QuickShop.Config.ConfigManager;
|
||||||
import org.maxgamer.QuickShop.Database.Database;
|
import org.maxgamer.QuickShop.Database.*;
|
||||||
import org.maxgamer.QuickShop.Database.DatabaseCore;
|
|
||||||
import org.maxgamer.QuickShop.Database.DatabaseHelper;
|
|
||||||
import org.maxgamer.QuickShop.Database.MySQLCore;
|
|
||||||
import org.maxgamer.QuickShop.Database.SQLiteCore;
|
|
||||||
import org.maxgamer.QuickShop.Economy.Economy;
|
import org.maxgamer.QuickShop.Economy.Economy;
|
||||||
import org.maxgamer.QuickShop.Economy.EconomyCore;
|
import org.maxgamer.QuickShop.Economy.EconomyCore;
|
||||||
import org.maxgamer.QuickShop.Economy.Economy_Vault;
|
import org.maxgamer.QuickShop.Economy.Economy_Vault;
|
||||||
import org.maxgamer.QuickShop.Listeners.BlockListener;
|
import org.maxgamer.QuickShop.Listeners.*;
|
||||||
import org.maxgamer.QuickShop.Listeners.ChatListener;
|
|
||||||
import org.maxgamer.QuickShop.Listeners.ChunkListener;
|
|
||||||
import org.maxgamer.QuickShop.Listeners.LockListener;
|
|
||||||
import org.maxgamer.QuickShop.Listeners.PlayerListener;
|
|
||||||
import org.maxgamer.QuickShop.Listeners.ProtectListener;
|
|
||||||
import org.maxgamer.QuickShop.Listeners.WorldListener;
|
|
||||||
import org.maxgamer.QuickShop.Listeners.WowSuchCleanerListener;
|
|
||||||
import org.maxgamer.QuickShop.Shop.ContainerShop;
|
import org.maxgamer.QuickShop.Shop.ContainerShop;
|
||||||
import org.maxgamer.QuickShop.Shop.Shop;
|
import org.maxgamer.QuickShop.Shop.Shop;
|
||||||
import org.maxgamer.QuickShop.Shop.ShopManager;
|
import org.maxgamer.QuickShop.Shop.ShopManager;
|
||||||
@ -177,7 +158,7 @@ public class QuickShop extends JavaPlugin {
|
|||||||
final double price = rs.getDouble("price");
|
final double price = rs.getDouble("price");
|
||||||
final Location loc = new Location(world, x, y, z);
|
final Location loc = new Location(world, x, y, z);
|
||||||
/* Skip invalid shops, if we know of any */
|
/* Skip invalid shops, if we know of any */
|
||||||
if (world != null && loc.getChunk().isLoaded() && (loc.getBlock().getState() instanceof InventoryHolder) == false) {
|
if (world != null && loc.getChunk().isLoaded() && !(loc.getBlock().getState() instanceof InventoryHolder)) {
|
||||||
getLogger().info("商店不是一个可存储的方块 坐标 " + rs.getString("world") + ", " + x + ", " + y + ", " + z + ". 删除...");
|
getLogger().info("商店不是一个可存储的方块 坐标 " + rs.getString("world") + ", " + x + ", " + y + ", " + z + ". 删除...");
|
||||||
database.execute("DELETE FROM shops WHERE x = ? AND y = ? and z = ? and world = ?", x, y, z, worldName);
|
database.execute("DELETE FROM shops WHERE x = ? AND y = ? and z = ? and world = ?", x, y, z, worldName);
|
||||||
continue;
|
continue;
|
||||||
@ -248,7 +229,7 @@ public class QuickShop extends JavaPlugin {
|
|||||||
database.close();
|
database.close();
|
||||||
try {
|
try {
|
||||||
database.getConnection().close();
|
database.getConnection().close();
|
||||||
} catch (final SQLException e) {
|
} catch (final SQLException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (configManager != null) {
|
if (configManager != null) {
|
||||||
@ -258,7 +239,7 @@ public class QuickShop extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
if (loadEcon() == false) {
|
if (!loadEcon()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
configManager = new ConfigManager(this);
|
configManager = new ConfigManager(this);
|
||||||
|
@ -79,9 +79,7 @@ public class ContainerShop implements Shop {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void add(final ItemStack item, final int amount) {
|
public void add(final ItemStack item, final int amount) {
|
||||||
if (this.unlimited) {
|
if (this.unlimited) { return; }
|
||||||
return;
|
|
||||||
}
|
|
||||||
final Inventory inv = this.getInventory();
|
final Inventory inv = this.getInventory();
|
||||||
int remains = amount;
|
int remains = amount;
|
||||||
while (remains > 0) {
|
while (remains > 0) {
|
||||||
@ -98,8 +96,6 @@ public class ContainerShop implements Shop {
|
|||||||
*
|
*
|
||||||
* @param p
|
* @param p
|
||||||
* The player to buy from
|
* The player to buy from
|
||||||
* @param item
|
|
||||||
* The itemStack to buy
|
|
||||||
* @param amount
|
* @param amount
|
||||||
* The amount to buy
|
* The amount to buy
|
||||||
*/
|
*/
|
||||||
@ -217,13 +213,9 @@ public class ContainerShop implements Shop {
|
|||||||
* null if this shop is not attached to another.
|
* null if this shop is not attached to another.
|
||||||
*/
|
*/
|
||||||
public ContainerShop getAttachedShop() {
|
public ContainerShop getAttachedShop() {
|
||||||
if (this.getLocation() != null) {
|
if (this.getLocation() != null) { return null; }
|
||||||
return null;
|
|
||||||
}
|
|
||||||
final Block c = Util.getSecondHalf(this.getLocation().getBlock());
|
final Block c = Util.getSecondHalf(this.getLocation().getBlock());
|
||||||
if (c == null) {
|
if (c == null) { return null; }
|
||||||
return null;
|
|
||||||
}
|
|
||||||
final Shop shop = plugin.getShopManager().getShop(c.getLocation());
|
final Shop shop = plugin.getShopManager().getShop(c.getLocation());
|
||||||
return shop == null ? null : (ContainerShop) shop;
|
return shop == null ? null : (ContainerShop) shop;
|
||||||
}
|
}
|
||||||
@ -316,15 +308,11 @@ public class ContainerShop implements Shop {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of free spots in the chest for the particular item.
|
* Returns the number of free spots in the chest for the particular item.
|
||||||
*
|
|
||||||
* @param stackSize
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int getRemainingSpace() {
|
public int getRemainingSpace() {
|
||||||
if (this.unlimited) {
|
if (this.unlimited) { return 10000; }
|
||||||
return 10000;
|
|
||||||
}
|
|
||||||
return Util.countSpace(this.getInventory(), item);
|
return Util.countSpace(this.getInventory(), item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,9 +323,7 @@ public class ContainerShop implements Shop {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int getRemainingStock() {
|
public int getRemainingStock() {
|
||||||
if (this.unlimited) {
|
if (this.unlimited) { return 10000; }
|
||||||
return 10000;
|
|
||||||
}
|
|
||||||
return Util.countItems(this.getInventory(), this.getItem());
|
return Util.countItems(this.getInventory(), this.getItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,9 +342,7 @@ public class ContainerShop implements Shop {
|
|||||||
@Override
|
@Override
|
||||||
public List<Sign> getSigns() {
|
public List<Sign> getSigns() {
|
||||||
final ArrayList<Sign> signs = new ArrayList<>(1);
|
final ArrayList<Sign> signs = new ArrayList<>(1);
|
||||||
if (this.getLocation().getWorld() == null) {
|
if (this.getLocation().getWorld() == null) { return signs; }
|
||||||
return signs;
|
|
||||||
}
|
|
||||||
final Block[] blocks = new Block[4];
|
final Block[] blocks = new Block[4];
|
||||||
blocks[0] = loc.getBlock().getRelative(1, 0, 0);
|
blocks[0] = loc.getBlock().getRelative(1, 0, 0);
|
||||||
blocks[1] = loc.getBlock().getRelative(-1, 0, 0);
|
blocks[1] = loc.getBlock().getRelative(-1, 0, 0);
|
||||||
@ -412,9 +396,7 @@ public class ContainerShop implements Shop {
|
|||||||
*/
|
*/
|
||||||
public boolean isDoubleShop() {
|
public boolean isDoubleShop() {
|
||||||
final ContainerShop nextTo = this.getAttachedShop();
|
final ContainerShop nextTo = this.getAttachedShop();
|
||||||
if (nextTo == null) {
|
if (nextTo == null) { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (nextTo.matches(this.getItem())) {
|
if (nextTo.matches(this.getItem())) {
|
||||||
// They're both trading the same item
|
// They're both trading the same item
|
||||||
if (this.getShopType() == nextTo.getShopType()) {
|
if (this.getShopType() == nextTo.getShopType()) {
|
||||||
@ -485,9 +467,7 @@ public class ContainerShop implements Shop {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void remove(final ItemStack item, final int amount) {
|
public void remove(final ItemStack item, final int amount) {
|
||||||
if (this.unlimited) {
|
if (this.unlimited) { return; }
|
||||||
return;
|
|
||||||
}
|
|
||||||
final Inventory inv = this.getInventory();
|
final Inventory inv = this.getInventory();
|
||||||
int remains = amount;
|
int remains = amount;
|
||||||
while (remains > 0) {
|
while (remains > 0) {
|
||||||
@ -548,8 +528,8 @@ public class ContainerShop implements Shop {
|
|||||||
// We now have to update the chests inventory manually.
|
// We now have to update the chests inventory manually.
|
||||||
this.getInventory().setContents(chestContents);
|
this.getInventory().setContents(chestContents);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < floor.size(); i++) {
|
for (ItemStack aFloor : floor) {
|
||||||
p.getWorld().dropItem(p.getLocation(), floor.get(i));
|
p.getWorld().dropItem(p.getLocation(), aFloor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -594,9 +574,7 @@ public class ContainerShop implements Shop {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setSignText() {
|
public void setSignText() {
|
||||||
if (Util.isLoaded(this.getLocation()) == false) {
|
if (!Util.isLoaded(this.getLocation())) { return; }
|
||||||
return;
|
|
||||||
}
|
|
||||||
final ContainerShop shop = this;
|
final ContainerShop shop = this;
|
||||||
// 1.9不能异步修改木牌
|
// 1.9不能异步修改木牌
|
||||||
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
||||||
@ -627,9 +605,7 @@ public class ContainerShop implements Shop {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setSignText(final String[] lines) {
|
public void setSignText(final String[] lines) {
|
||||||
if (Util.isLoaded(this.getLocation()) == false) {
|
if (!Util.isLoaded(this.getLocation())) { return; }
|
||||||
return;
|
|
||||||
}
|
|
||||||
final List<Sign> signs = this.getSigns();
|
final List<Sign> signs = this.getSigns();
|
||||||
// 1.9不能异步修改木牌
|
// 1.9不能异步修改木牌
|
||||||
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
||||||
@ -652,21 +628,14 @@ public class ContainerShop implements Shop {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("商店 "
|
final StringBuilder sb = new StringBuilder("商店 " + (loc.getWorld() == null ? "世界尚未载入" : "坐标: " + loc.getWorld().getName()) + "(" + loc.getBlockX() + ", " + loc.getBlockY() + ", "
|
||||||
+ (loc.getWorld() == null ? "世界尚未载入" : "坐标: " + loc.getWorld().getName())
|
+ loc.getBlockZ() + ")");
|
||||||
+ "("
|
sb.append(" 所有者: ").append(getOwner());
|
||||||
+ loc.getBlockX()
|
|
||||||
+ ", "
|
|
||||||
+ loc.getBlockY()
|
|
||||||
+ ", "
|
|
||||||
+ loc.getBlockZ()
|
|
||||||
+ ")");
|
|
||||||
sb.append(" 所有者: " + getOwner());
|
|
||||||
if (isUnlimited()) {
|
if (isUnlimited()) {
|
||||||
sb.append(" 无限模式: true");
|
sb.append(" 无限模式: true");
|
||||||
}
|
}
|
||||||
sb.append(" 价格: " + getPrice());
|
sb.append(" 价格: ").append(getPrice());
|
||||||
sb.append(" 物品: " + getItem().toString());
|
sb.append(" 物品: ").append(getItem().toString());
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -691,11 +660,8 @@ public class ContainerShop implements Shop {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void checkDisplay() {
|
private void checkDisplay() {
|
||||||
if (plugin.getConfigManager().isDisplay() == false) {
|
if (!plugin.getConfigManager().isDisplay()) { return; }
|
||||||
return;
|
if (getLocation().getWorld() == null) { return; // not loaded
|
||||||
}
|
|
||||||
if (getLocation().getWorld() == null) {
|
|
||||||
return; // not loaded
|
|
||||||
}
|
}
|
||||||
final boolean trans = Util.isTransparent(getLocation().clone().add(0.5, 1.2, 0.5).getBlock().getType());
|
final boolean trans = Util.isTransparent(getLocation().clone().add(0.5, 1.2, 0.5).getBlock().getType());
|
||||||
if (trans && this.getDisplayItem() == null) {
|
if (trans && this.getDisplayItem() == null) {
|
||||||
@ -709,14 +675,11 @@ public class ContainerShop implements Shop {
|
|||||||
this.displayItem = null;
|
this.displayItem = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.getLocation().getWorld() == null) {
|
if (this.getLocation().getWorld() == null) { return;// Ignore if world not loaded...
|
||||||
return;// Ignore if world not loaded...
|
|
||||||
}
|
}
|
||||||
final DisplayItem disItem = this.getDisplayItem();
|
final DisplayItem disItem = this.getDisplayItem();
|
||||||
final Location dispLoc = disItem.getDisplayLocation();
|
final Location dispLoc = disItem.getDisplayLocation();
|
||||||
if (dispLoc.getWorld() == null) {
|
if (dispLoc.getWorld() == null) { return; }
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (dispLoc.getBlock() != null && dispLoc.getBlock().getType() == Material.WATER) { // Flowing
|
if (dispLoc.getBlock() != null && dispLoc.getBlock().getType() == Material.WATER) { // Flowing
|
||||||
// water.Stationery water does not move items.
|
// water.Stationery water does not move items.
|
||||||
disItem.remove();
|
disItem.remove();
|
||||||
|
@ -21,11 +21,11 @@ public abstract class DisplayItem {
|
|||||||
try {
|
try {
|
||||||
return new FakeItem_19_110(shop, shop.getItem());
|
return new FakeItem_19_110(shop, shop.getItem());
|
||||||
} catch (final Throwable e) {
|
} catch (final Throwable e) {
|
||||||
Log.debug(e);
|
Log.d(e);
|
||||||
try {
|
try {
|
||||||
return new FakeItem_17_18(shop, shop.getItem());
|
return new FakeItem_17_18(shop, shop.getItem());
|
||||||
} catch (final Throwable e2) {
|
} catch (final Throwable e2) {
|
||||||
Log.debug(e2);
|
Log.d(e2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
package org.maxgamer.QuickShop.Shop.Item;
|
package org.maxgamer.QuickShop.Shop.Item;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
@ -76,14 +73,8 @@ public abstract class FakeItem extends DisplayItem {
|
|||||||
final int chunkX = packet.getIntegers().read(0);
|
final int chunkX = packet.getIntegers().read(0);
|
||||||
final int chunkZ = packet.getIntegers().read(1);
|
final int chunkZ = packet.getIntegers().read(1);
|
||||||
final List<FakeItem> fakesInChunk = fakes.get(getChunkIdentifyString(p.getWorld().getChunkAt(chunkX, chunkZ)));
|
final List<FakeItem> fakesInChunk = fakes.get(getChunkIdentifyString(p.getWorld().getChunkAt(chunkX, chunkZ)));
|
||||||
if (fakesInChunk != null) {
|
sendChunkPacket(p, fakesInChunk);
|
||||||
for (final FakeItem fake : fakesInChunk) {
|
} catch (final Exception ignored) {
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getSpawnPacket());
|
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getVelocityPacket());
|
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getMetadataPacket());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (final Exception e) {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -97,16 +88,9 @@ public abstract class FakeItem extends DisplayItem {
|
|||||||
final int[] chunksZ = packet.getIntegerArrays().read(1);
|
final int[] chunksZ = packet.getIntegerArrays().read(1);
|
||||||
for (int i = 0; i < chunksX.length; i++) {
|
for (int i = 0; i < chunksX.length; i++) {
|
||||||
final List<FakeItem> fakesInChunk = fakes.get(getChunkIdentifyString(p.getWorld().getChunkAt(chunksX[i], chunksZ[i])));
|
final List<FakeItem> fakesInChunk = fakes.get(getChunkIdentifyString(p.getWorld().getChunkAt(chunksX[i], chunksZ[i])));
|
||||||
if (fakesInChunk != null) {
|
sendChunkPacket(p, fakesInChunk);
|
||||||
for (final FakeItem fake : fakesInChunk) {
|
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getSpawnPacket());
|
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getVelocityPacket());
|
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getMetadataPacket());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (final Exception e) {
|
} catch (final Exception ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -115,6 +99,17 @@ public abstract class FakeItem extends DisplayItem {
|
|||||||
registered = true;
|
registered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void sendChunkPacket(Player p, List<FakeItem> fakesInChunk) throws InvocationTargetException {
|
||||||
|
if (fakesInChunk != null) {
|
||||||
|
for (final FakeItem fake : fakesInChunk) {
|
||||||
|
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getSpawnPacket());
|
||||||
|
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getVelocityPacket());
|
||||||
|
ProtocolLibrary.getProtocolManager().sendServerPacket(p, fake.getMetadataPacket());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static String getChunkIdentifyString(final Chunk chunk) {
|
private static String getChunkIdentifyString(final Chunk chunk) {
|
||||||
return chunk.getWorld().getName() + "@@" + chunk.getX() + "@@" + chunk.getZ();
|
return chunk.getWorld().getName() + "@@" + chunk.getX() + "@@" + chunk.getZ();
|
||||||
}
|
}
|
||||||
|
@ -55,9 +55,7 @@ public class NormalItem extends DisplayItem {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void remove() {
|
public void remove() {
|
||||||
if (this.item == null) {
|
if (this.item == null) { return; }
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.item.remove();
|
this.item.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,9 +65,7 @@ public class NormalItem extends DisplayItem {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean removeDupe() {
|
public boolean removeDupe() {
|
||||||
if (shop.getLocation().getWorld() == null) {
|
if (shop.getLocation().getWorld() == null) { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
final Location displayLoc = shop.getLocation().getBlock().getRelative(0, 1, 0).getLocation();
|
final Location displayLoc = shop.getLocation().getBlock().getRelative(0, 1, 0).getLocation();
|
||||||
boolean removed = false;
|
boolean removed = false;
|
||||||
final Chunk c = displayLoc.getChunk();
|
final Chunk c = displayLoc.getChunk();
|
||||||
@ -103,15 +99,13 @@ public class NormalItem extends DisplayItem {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void spawn() {
|
public void spawn() {
|
||||||
if (shop.getLocation().getWorld() == null) {
|
if (shop.getLocation().getWorld() == null) { return; }
|
||||||
return;
|
|
||||||
}
|
|
||||||
final Location dispLoc = this.getDisplayLocation();
|
final Location dispLoc = this.getDisplayLocation();
|
||||||
try {
|
try {
|
||||||
this.item = shop.getLocation().getWorld().dropItem(dispLoc, this.iStack);
|
this.item = shop.getLocation().getWorld().dropItem(dispLoc, this.iStack);
|
||||||
this.item.setVelocity(new Vector(0, 0.1, 0));
|
this.item.setVelocity(new Vector(0, 0.1, 0));
|
||||||
NMS.safeGuard(this.item);
|
NMS.safeGuard(this.item);
|
||||||
} catch (final Exception e) {
|
} catch (final Exception ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,70 +8,70 @@ import org.bukkit.block.Sign;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public abstract interface Shop {
|
public interface Shop {
|
||||||
public abstract void add(ItemStack paramItemStack, int paramInt);
|
void add(ItemStack paramItemStack, int paramInt);
|
||||||
|
|
||||||
public abstract void buy(Player paramPlayer, int paramInt);
|
void buy(Player paramPlayer, int paramInt);
|
||||||
|
|
||||||
public abstract Shop clone();
|
Shop clone();
|
||||||
|
|
||||||
public abstract void delete();
|
void delete();
|
||||||
|
|
||||||
public abstract void delete(boolean paramBoolean);
|
void delete(boolean paramBoolean);
|
||||||
|
|
||||||
public abstract String getDataName();
|
String getDataName();
|
||||||
|
|
||||||
public abstract short getDurability();
|
short getDurability();
|
||||||
|
|
||||||
public abstract ItemStack getItem();
|
ItemStack getItem();
|
||||||
|
|
||||||
public abstract Location getLocation();
|
Location getLocation();
|
||||||
|
|
||||||
public abstract String getOwner();
|
String getOwner();
|
||||||
|
|
||||||
public abstract double getPrice();
|
double getPrice();
|
||||||
|
|
||||||
public abstract int getRemainingSpace();
|
int getRemainingSpace();
|
||||||
|
|
||||||
public abstract int getRemainingStock();
|
int getRemainingStock();
|
||||||
|
|
||||||
public abstract ShopType getShopType();
|
ShopType getShopType();
|
||||||
|
|
||||||
public abstract List<Sign> getSigns();
|
List<Sign> getSigns();
|
||||||
|
|
||||||
public abstract boolean isAttached(Block paramBlock);
|
boolean isAttached(Block paramBlock);
|
||||||
|
|
||||||
public abstract boolean isBuying();
|
boolean isBuying();
|
||||||
|
|
||||||
public abstract boolean isSelling();
|
boolean isSelling();
|
||||||
|
|
||||||
public abstract boolean isUnlimited();
|
boolean isUnlimited();
|
||||||
|
|
||||||
public abstract boolean isValid();
|
boolean isValid();
|
||||||
|
|
||||||
public abstract boolean matches(ItemStack paramItemStack);
|
boolean matches(ItemStack paramItemStack);
|
||||||
|
|
||||||
public abstract void onClick();
|
void onClick();
|
||||||
|
|
||||||
public abstract void onLoad();
|
void onLoad();
|
||||||
|
|
||||||
public abstract void onUnload();
|
void onUnload();
|
||||||
|
|
||||||
public abstract void remove(ItemStack paramItemStack, int paramInt);
|
void remove(ItemStack paramItemStack, int paramInt);
|
||||||
|
|
||||||
public abstract void sell(Player paramPlayer, int paramInt);
|
void sell(Player paramPlayer, int paramInt);
|
||||||
|
|
||||||
public abstract void setOwner(String paramString);
|
void setOwner(String paramString);
|
||||||
|
|
||||||
public abstract void setPrice(double paramDouble);
|
void setPrice(double paramDouble);
|
||||||
|
|
||||||
public abstract void setShopType(ShopType paramShopType);
|
void setShopType(ShopType paramShopType);
|
||||||
|
|
||||||
public abstract void setSignText();
|
void setSignText();
|
||||||
|
|
||||||
public abstract void setSignText(String[] paramArrayOfString);
|
void setSignText(String[] paramArrayOfString);
|
||||||
|
|
||||||
public abstract void setUnlimited(boolean paramBoolean);
|
void setUnlimited(boolean paramBoolean);
|
||||||
|
|
||||||
public abstract void update();
|
void update();
|
||||||
}
|
}
|
@ -3,5 +3,5 @@ package org.maxgamer.QuickShop.Shop;
|
|||||||
public enum ShopAction {
|
public enum ShopAction {
|
||||||
BUY(),
|
BUY(),
|
||||||
CREATE(),
|
CREATE(),
|
||||||
CANCELLED();
|
CANCELLED()
|
||||||
}
|
}
|
@ -5,7 +5,7 @@ public enum ShopType {
|
|||||||
BUYING(1);
|
BUYING(1);
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private ShopType(int id) {
|
ShopType(int id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,12 +88,8 @@ public class MsgUtil {
|
|||||||
|
|
||||||
public static String p(final String loc, final Object... args) {
|
public static String p(final String loc, final Object... args) {
|
||||||
String raw = messages.getString(loc);
|
String raw = messages.getString(loc);
|
||||||
if (raw == null || raw.isEmpty()) {
|
if (raw == null || raw.isEmpty()) { return ChatColor.RED + "语言文件词条丢失: " + loc; }
|
||||||
return ChatColor.RED + "语言文件词条丢失: " + loc;
|
if (args == null) { return raw; }
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
for (int i = 0; i < args.length; i++) {
|
for (int i = 0; i < args.length; i++) {
|
||||||
raw = raw.replace("{" + i + "}", args[i] == null ? "null" : args[i].toString());
|
raw = raw.replace("{" + i + "}", args[i] == null ? "null" : args[i].toString());
|
||||||
}
|
}
|
||||||
@ -127,7 +123,7 @@ public class MsgUtil {
|
|||||||
}
|
}
|
||||||
msgs.add(message);
|
msgs.add(message);
|
||||||
final String q = "INSERT INTO messages (owner, message, time) VALUES (?, ?, ?)";
|
final String q = "INSERT INTO messages (owner, message, time) VALUES (?, ?, ?)";
|
||||||
plugin.getDB().execute(q, player.toString(), message, System.currentTimeMillis());
|
plugin.getDB().execute(q, player, message, System.currentTimeMillis());
|
||||||
} else {
|
} else {
|
||||||
p.getPlayer().sendMessage(message);
|
p.getPlayer().sendMessage(message);
|
||||||
}
|
}
|
||||||
@ -186,10 +182,8 @@ public class MsgUtil {
|
|||||||
p.sendMessage("");
|
p.sendMessage("");
|
||||||
p.sendMessage(ChatColor.DARK_PURPLE + "+---------------------------------------------------+");
|
p.sendMessage(ChatColor.DARK_PURPLE + "+---------------------------------------------------+");
|
||||||
p.sendMessage(ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.shop-information"));
|
p.sendMessage(ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.shop-information"));
|
||||||
p.sendMessage(ChatColor.DARK_PURPLE
|
p.sendMessage(ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.owner",
|
||||||
+ "| "
|
Bukkit.getOfflinePlayer(shop.getOwner()).getName() == null ? (shop.isUnlimited() ? "系统商店" : "未知") : Bukkit.getOfflinePlayer(shop.getOwner()).getName()));
|
||||||
+ MsgUtil.p("menu.owner",
|
|
||||||
Bukkit.getOfflinePlayer(shop.getOwner()).getName() == null ? (shop.isUnlimited() ? "系统商店" : "未知") : Bukkit.getOfflinePlayer(shop.getOwner()).getName()));
|
|
||||||
final String msg = ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.item", shop.getDataName());
|
final String msg = ChatColor.DARK_PURPLE + "| " + MsgUtil.p("menu.item", shop.getDataName());
|
||||||
sendItemMessage(p, shop.getItem(), msg);
|
sendItemMessage(p, shop.getItem(), msg);
|
||||||
if (Util.isTool(item.getType())) {
|
if (Util.isTool(item.getType())) {
|
||||||
|
Loading…
Reference in New Issue
Block a user