diff --git a/.idea/libraries/lib__5_.xml b/.idea/libraries/lib__5_.xml
new file mode 100644
index 0000000..f5fa51b
--- /dev/null
+++ b/.idea/libraries/lib__5_.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/yuyu/srdisassemble/SrDisassemble.java b/src/main/java/com/yuyu/srdisassemble/SrDisassemble.java
index 48e630e..bcf089f 100644
--- a/src/main/java/com/yuyu/srdisassemble/SrDisassemble.java
+++ b/src/main/java/com/yuyu/srdisassemble/SrDisassemble.java
@@ -1,17 +1,17 @@
package com.yuyu.srdisassemble;
import com.sakurarealm.sritem.bukkit.command.CommandBase;
-import com.sakurarealm.sritem.bukkit.command.OpenCommand;
import com.yuyu.srdisassemble.command.DisCommand;
import com.yuyu.srdisassemble.config.ConfigManager;
+import com.yuyu.srdisassemble.data.JdbcSqlClass;
+import com.yuyu.srdisassemble.disassemeble.TemporarilyBox;
import lombok.Getter;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
public final class SrDisassemble extends JavaPlugin {
- @Getter
- private static SrDisassemble instance;//用于获取实例
+
@Getter
private static ConfigManager configManager;//用于鉴定
@@ -28,11 +28,18 @@ public final class SrDisassemble extends JavaPlugin {
commandBase.registerSubCommand("open",new DisCommand());
commandBase.registerSubCommand("reload",new DisCommand());
+ //读取暂存箱
+ JdbcSqlClass.createPauseBoxTable();
+// JdbcSqlClass.setPauseBox2UTF();
+ TemporarilyBox.getPauseBoxData();
+
}
@Override
public void onDisable() {
+ JdbcSqlClass.clearPauseBoxTable();
// Plugin shutdown logic
+ TemporarilyBox.savePauseBoxData();
}
}
diff --git a/src/main/java/com/yuyu/srdisassemble/data/DataSource.java b/src/main/java/com/yuyu/srdisassemble/data/DataSource.java
deleted file mode 100644
index 855010e..0000000
--- a/src/main/java/com/yuyu/srdisassemble/data/DataSource.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.yuyu.srdisassemble.data;
-
-import com.yuyu.srdisassemble.SrDisassemble;
-import org.apache.ibatis.datasource.DataSourceFactory;
-import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;
-
-import java.util.Properties;
-
-public class DataSource implements DataSourceFactory {
- private static UnpooledDataSourceFactory unpooledDataSourceFactory = new UnpooledDataSourceFactory();
-
-
- public DataSource(){
-
-
- }
-
-
- @Override
- public void setProperties(Properties props) {
- props.setProperty("driver", SrDisassemble.getConfigManager().getDriver());
- props.setProperty("url", SrDisassemble.getConfigManager().getUrl());
-
-
- props.setProperty("username", SrDisassemble.getConfigManager().getUsername());
- props.setProperty("password", SrDisassemble.getConfigManager().getPassword());
-
-
- }
-
- @Override
- public javax.sql.DataSource getDataSource() {
- Properties props = new Properties();
- props.setProperty("driver", SrDisassemble.getConfigManager().getDriver());
- props.setProperty("url", SrDisassemble.getConfigManager().getUrl());
- props.setProperty("username", SrDisassemble.getConfigManager().getUsername());
- props.setProperty("password", SrDisassemble.getConfigManager().getPassword());
-
- unpooledDataSourceFactory.setProperties(props);
- return unpooledDataSourceFactory.getDataSource();
- }
-}
diff --git a/src/main/java/com/yuyu/srdisassemble/data/JdbcSqlClass.java b/src/main/java/com/yuyu/srdisassemble/data/JdbcSqlClass.java
index a8b8ce4..c7063e5 100644
--- a/src/main/java/com/yuyu/srdisassemble/data/JdbcSqlClass.java
+++ b/src/main/java/com/yuyu/srdisassemble/data/JdbcSqlClass.java
@@ -1,7 +1,9 @@
package com.yuyu.srdisassemble.data;
+import com.google.common.annotations.VisibleForTesting;
import com.yuyu.srdisassemble.SrDisassemble;
import com.yuyu.srdisassemble.pojo.DisassembleData;
+import com.yuyu.srdisassemble.pojo.PauseBox;
import org.bukkit.ChatColor;
import java.sql.*;
@@ -77,9 +79,7 @@ public class JdbcSqlClass {
boolean rs = connection.execute(createTable);
- if (rs) {
- SrDisassemble.getInstance().getLogger().info(ChatColor.GREEN + "initTable执行完毕");
- }
+
@@ -129,6 +129,164 @@ public class JdbcSqlClass {
}
+ public static void setPauseBox2UTF(){
+ try {
+ Statement connection = getConnection();
+
+ //执行Sql语句
+
+ String sql = "ALTER TABLE pausebox CONVERT TO CHARACTER SET utf8mb4;";
+ boolean rs = connection.execute(sql);
+
+ connection.close();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void createPauseBoxTable(){
+ try {
+ //此处获取连接并保存
+ con = DriverManager.getConnection(JdbcSqlClass.url, JdbcSqlClass.user, JdbcSqlClass.password);
+
+ Statement connection = getConnection();
+
+ //执行Sql语句
+ String createTable = "create table if not exists pausebox(\n" +
+ " username varchar(255) null comment '玩家名称',\n" +
+ " slotnumber int null comment '槽位',\n" +
+ " nums int null comment '数量',\n" +
+ " productindex varchar(255) null comment '原胚索引',\n" +
+ " guiname varchar(255) null comment 'gui的姓名'\n" +
+ ") CHARACTER SET utf8mb4 COLLATE utf8mb4_bin";
+
+ boolean rs = connection.execute(createTable);
+
+
+
+
+ String sql = "select column_name\n" +
+ "from INFORMATION_SCHEMA.COLUMNS\n" +
+ "where TABLE_NAME = 'pausebox'";
+
+ //手动注入所有列
+ List columns = new ArrayList<>();
+ columns.add("username");
+ columns.add("slotnumber");
+ columns.add("nums");
+ columns.add("productindex");
+ columns.add("guiname");
+
+ try {
+ ResultSet resultSet = connection.executeQuery(sql);
+ List lists = new ArrayList<>();
+ int index = 0;
+ while (resultSet.next()) {
+ String columnName = resultSet.getString("column_name");
+ lists.add(columnName);
+ index++;
+ }
+ List missColumn = new ArrayList<>();
+ for (String columnName : columns) {
+ if (!lists.contains(columnName)) {
+ missColumn.add(columnName);
+ }
+ }
+ //新增列
+ for (String columnName : missColumn) {
+ addColumnPauseBox(columnName);
+ }
+
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+
+ connection.close();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 插入数据
+ * @param username
+ * @param slotNumber
+ * @param nums
+ * @param productindex
+ * @param guiname
+ */
+ public static void insertPauseBoxData(String username,int slotNumber,int nums,String productindex,String guiname){
+
+ try {
+ String sql = "insert into pausebox(username, slotnumber, nums, productindex, guiname)" +
+ " VALUES ('"+username+"',"+slotNumber+","+nums+",'"+productindex+"','"+guiname+"')";
+
+ Statement statement = getConnection();
+
+ int i = statement.executeUpdate(sql);
+
+ if (i > 0) {
+ return;
+ }else {
+ System.out.println(username+"\t"+slotNumber+"\t"+nums+"\t"+productindex+"\t"+guiname+"插入失败");
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 清空数据
+ */
+ public static void clearPauseBoxTable(){
+
+
+ try {
+
+ Statement statement = getConnection();
+ String sql = "delete from pausebox";
+
+ statement.executeUpdate(sql);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public static int addColumnPauseBox(String columns){
+ String sql = null;
+ if (columns.equals("username")) {
+ sql = "ALTER TABLE pausebox\n" +
+ "ADD username varchar(255) null comment '玩家名称'";
+ } else if (columns.equals("slotnumber")) {
+ sql = "ALTER TABLE pausebox\n" +
+ "ADD slotnumber int null comment '槽位'";
+ } else if (columns.equals("nums")) {
+ sql = "ALTER TABLE pausebox\n" +
+ "ADD nums int null comment '数量'";
+ } else if (columns.equals("productindex")) {
+ sql = "ALTER TABLE pausebox\n" +
+ "ADD productindex varchar(255) null comment '原胚索引'";
+ } else if (columns.equals("guiname")) {
+ sql = "ALTER TABLE pausebox\n" +
+ "ADD guiname varchar(255) null comment 'gui的姓名'";
+ }
+
+ if (sql != null) {
+ Statement stmt = getConnection();
+ try {
+ int i = stmt.executeUpdate(sql);
+ stmt.close();
+ return i;
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+ return 0;
+ }
+
/**
* 用于新增列
*
@@ -137,10 +295,10 @@ public class JdbcSqlClass {
public static int addColumn(String columns) {
String sql = null;
if (columns.equals("id")) {
- sql = "ALTER TABLE srdisassemble\n" +
+ sql = "ALTER TABLE pausebox\n" +
"ADD id BIGINT auto_increment not null PRIMARY KEY comment 'ID'";
} else if (columns.equals("playername")) {
- sql = "ALTER TABLE srdisassemble\n" +
+ sql = "ALTER TABLE pausebox\n" +
"ADD playername varchar(255) null comment '玩家姓名'";
} else if (columns.equals("disassembleTime")) {
sql = "ALTER TABLE srdisassemble\n" +
@@ -182,10 +340,6 @@ public class JdbcSqlClass {
String sql = "ALTER TABLE srdisassemble CONVERT TO CHARACTER SET utf8mb4;";
boolean rs = connection.execute(sql);
- if (rs) {
- SrDisassemble.getInstance().getLogger().info(ChatColor.GREEN + "修改字符集成功");
- }
-
connection.close();
} catch (Exception e) {
throw new RuntimeException(e);
@@ -288,6 +442,26 @@ public class JdbcSqlClass {
}
}
+ public static List getPlayerList(){
+
+ List userList = new ArrayList<>();
+
+ Statement statement = getConnection();
+ String sql = "select username from pausebox";
+ try {
+ ResultSet resultSet = statement.executeQuery(sql);
+ while (resultSet.next()){
+ userList.add(resultSet.getString("username"));
+ }
+ resultSet.close();
+ statement.close();
+
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ return userList;
+ }
+
public static String getDriver() {
return driver;
}
@@ -319,4 +493,34 @@ public class JdbcSqlClass {
public static void setPassword(String password) {
JdbcSqlClass.password = password;
}
+
+ /**
+ * 用于获取PauseBox gui的数据
+ * @param player
+ * @return
+ */
+ public static List getPauseBoxData(String player) {
+
+ List pauseBoxList = new ArrayList<>();
+ Statement statement = getConnection();
+ String sql = "select * from pausebox where username = '"+player+"' and guiname = 'TemporarilyBox'";
+ try {
+ ResultSet resultSet = statement.executeQuery(sql);
+ while (resultSet.next()){
+ PauseBox pauseBox = new PauseBox(resultSet.getString("username"),
+ resultSet.getInt("slotnumber"),
+ resultSet.getInt("nums"),
+ resultSet.getString("productindex"),
+ resultSet.getString("guiname"));
+ pauseBoxList.add(pauseBox);
+ }
+
+ resultSet.close();
+ statement.close();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ return pauseBoxList;
+ }
}
diff --git a/src/main/java/com/yuyu/srdisassemble/data/SqlData.java b/src/main/java/com/yuyu/srdisassemble/data/SqlData.java
deleted file mode 100644
index c1ffd30..0000000
--- a/src/main/java/com/yuyu/srdisassemble/data/SqlData.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.yuyu.srdisassemble.data;
-
-import com.yuyu.srdisassemble.data.mapper.SqlDataMapper;
-import com.yuyu.srdisassemble.pojo.DisassembleData;
-import com.yuyu.srdisassemble.utils.MybatisUtil;
-import org.apache.ibatis.session.SqlSession;
-
-import java.util.List;
-
-/**
- * @author 峰。
- * @version 1.0
- * @project SrDisassemble
- * @date 2024/6/17 16:57:26
- * @description
- */
-public class SqlData {
- /**
- * 插件启动时加载表
- */
- public static void initTable(){
- SqlSession sqlSession = MybatisUtil.getSqlSession();
-// sqlSession.getConfiguration().addMapper(SqlDataMapper.class);
- SqlDataMapper mapper = sqlSession.getMapper(SqlDataMapper.class);
-
- mapper.createTable();
- mapper.setChartseUtf8();
-
- sqlSession.commit();
- sqlSession.close();
- }
-
- /**
- * 新增数据
- * @param data
- */
- public static void addDisassemble(DisassembleData data){
- try (SqlSession sqlSession = MybatisUtil.getSqlSession()){
- SqlDataMapper mapper = sqlSession.getMapper(SqlDataMapper.class);
- mapper.addDisassembleEvent(data);
- }
- }
-
- public static List getDisassembleData(String playerName){
- try (SqlSession sqlSession = MybatisUtil.getSqlSession()){
- SqlDataMapper mapper = sqlSession.getMapper(SqlDataMapper.class);
- List disassembleData = mapper.selectDisassembleEvent(playerName);
- return disassembleData;
- }
- }
-
- public static List getDisassembleData(String playerName, String target){
- try (SqlSession sqlSession = MybatisUtil.getSqlSession()){
- SqlDataMapper mapper = sqlSession.getMapper(SqlDataMapper.class);
- List disassembleData = mapper.selectDisassembleEventAndTarget(playerName,target);
- return disassembleData;
- }
- }
-
- public static void deleteDisassemble(String playerName){
-
- }
-}
diff --git a/src/main/java/com/yuyu/srdisassemble/data/mapper/SqlDataMapper.java b/src/main/java/com/yuyu/srdisassemble/data/mapper/SqlDataMapper.java
deleted file mode 100644
index 6c336e2..0000000
--- a/src/main/java/com/yuyu/srdisassemble/data/mapper/SqlDataMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.yuyu.srdisassemble.data.mapper;
-
-import com.yuyu.srdisassemble.pojo.DisassembleData;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-
-public interface SqlDataMapper {
-
-
- void createTable();
- void setChartseUtf8();
- void addDisassembleEvent(@Param("data") DisassembleData data);
- List selectDisassembleEvent(@Param("playername") String playername);
- List selectDisassembleEventAndTarget(@Param("playername")String playername, @Param("target") String target);
- void deleteDisassemble(@Param("playername") String playername, @Param("target") String target,@Param("disassembleTime") Date disassembleTime);
-}
diff --git a/src/main/java/com/yuyu/srdisassemble/disassemeble/SassembleGuiService.java b/src/main/java/com/yuyu/srdisassemble/disassemeble/SassembleGuiService.java
index 135089c..684a95b 100644
--- a/src/main/java/com/yuyu/srdisassemble/disassemeble/SassembleGuiService.java
+++ b/src/main/java/com/yuyu/srdisassemble/disassemeble/SassembleGuiService.java
@@ -1,12 +1,12 @@
package com.yuyu.srdisassemble.disassemeble;
+import com.germ.germplugin.GermPlugin;
import com.germ.germplugin.api.dynamic.gui.*;
import com.sakurarealm.sritem.api.ItemStackHelper;
import com.sakurarealm.sritem.api.SrItemAPI;
import com.sakurarealm.sritem.api.builder.SrItemHandler;
import com.yuyu.srdisassemble.SrDisassemble;
import com.yuyu.srdisassemble.data.JdbcSqlClass;
-import com.yuyu.srdisassemble.data.SqlData;
import com.yuyu.srdisassemble.pojo.CanDisItem;
import com.yuyu.srdisassemble.pojo.DisProduct;
import com.yuyu.srdisassemble.pojo.DisassembleData;
@@ -37,7 +37,7 @@ public class SassembleGuiService extends GermGuiScreen {
private DisassembleData data;
private String name;
private Random random ;
- private boolean disassemble = true;
+ private boolean disassembleFlag = true;
private Player playerHost;
private GermGuiScreen temporarilyBoxScreen;
private List guiSlots = new ArrayList<>();
@@ -50,8 +50,8 @@ public class SassembleGuiService extends GermGuiScreen {
this.random = new Random();
this.name = playerHost.getName();
this.getTemporarilyBox();
- this.boolGui();
this.savePauseSlots();
+ this.boolGui();
this.openPauseBox();
this.setClosedHandler(((player, germGuiScreen) -> {
//窗口关闭事件
@@ -83,6 +83,9 @@ public class SassembleGuiService extends GermGuiScreen {
}
synchronized public void setItemToPauseBox(ItemStack item){
+ if (!this.disassembleFlag){
+ return;
+ }
for (int i = 0; i <= 15 ; i++){
GermGuiSlot germGuiSlot = guiSlots.get(i);
if (germGuiSlot.getItemStack().getType() == Material.AIR){
@@ -116,43 +119,68 @@ public class SassembleGuiService extends GermGuiScreen {
new HashMap<>(),null,true,true));
GermGuiGif fire = (GermGuiGif) bgCanvas.getGuiPart("fire");
- GermGuiTexture men1 = (GermGuiTexture) bgCanvas.getGuiPart("men1");
+ GermGuiButton men1 = (GermGuiButton) bgCanvas.getGuiPart("men1");
GermGuiTexture doorPause = (GermGuiTexture) bgCanvas.getGuiPart("doorPause");
GermGuiGif door = (GermGuiGif) bgCanvas.getGuiPart("door");
men1.setEnable(false);
fire.setEnable(true);
doorPause.setEnable(true);
+ int calculateMinutesDifference = MinUtil.calculateMinutesDifference(data.getDisassembleTime());
+ if (calculateMinutesDifference <= 0) {
+ //执行语句说明分解完成
+ this.disassembleComplete();
+ if ((boolean)disassembleSlot.getInteract()){
- ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
-
- executor.scheduleAtFixedRate(() -> {
- int calculateMinutesDifference = MinUtil.calculateMinutesDifference(data.getDisassembleTime());
- if (calculateMinutesDifference <= 0) {
- //执行语句说明分解完成
- this.disassembleComplete();
- if ((boolean)disassembleSlot.getInteract()){
-
- JdbcSqlClass.deleteData(data.getId());
-
- //赋予产物后把火关掉,门打开
- //TODO(此处后面可以让美术大佬做一个开炉门的gif
- fire.setEnable(false);
- door.setEnable(false);
- men1.setEnable(true);
- doorPause.setEnable(false);
- this.openTemporarilyBox();
- executor.shutdownNow();
- }
-
+ JdbcSqlClass.deleteData(data.getId());
+ //赋予产物后把火关掉,门打开
+ //TODO(此处后面可以让美术大佬做一个开炉门的gif
+ fire.setEnable(false);
+ door.setEnable(false);
+ men1.setEnable(true);
+ doorPause.setEnable(false);
+ this.temporarilyBoxScreen.openChildGui(this.playerHost);
}
- },0, 1 , TimeUnit.MINUTES);
+ }else {
+ ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
+
+
+ executor.scheduleWithFixedDelay(() -> {
+ int nums = MinUtil.calculateMinutesDifference(data.getDisassembleTime());
+ if (nums <= 0) {
+
+ if(!this.disassembleFlag){
+ executor.shutdown();
+ return;
+ }
+
+ //执行语句说明分解完成
+ this.disassembleComplete();
+ if ((boolean)disassembleSlot.getInteract()){
+
+ JdbcSqlClass.deleteData(data.getId());
+
+ //赋予产物后把火关掉,门打开
+ //TODO(此处后面可以让美术大佬做一个开炉门的gif
+ fire.setEnable(false);
+ door.setEnable(false);
+ men1.setEnable(true);
+ doorPause.setEnable(false);
+ this.temporarilyBoxScreen.openChildGui(this.playerHost);
+ executor.shutdown();
+ }
+ }
+
+ },1, 1, TimeUnit.MINUTES);
+ //1分钟延迟,minTime分钟后执行
+ }
+
//0延迟,minTime分钟后执行
+
+
+
}
-// else {
-// this.openTemporarilyBox();
-// }
}
@@ -189,7 +217,7 @@ public class SassembleGuiService extends GermGuiScreen {
//通过画布获取按键
GermGuiButton confirmButton = (GermGuiButton) cCanvas.getGuiPart("confirmButton");
GermGuiButton cancleButton = (GermGuiButton) cCanvas.getGuiPart("cancleButton");
- GermGuiButton germGuiButton =(GermGuiButton) bgCanvas.getGuiPart("youhu");
+ GermGuiButton germGuiButton =(GermGuiButton) bgCanvas.getGuiPart("men1");
GermGuiSlot disassembleSlot = (GermGuiSlot) bgCanvas.getGuiPart("disassembleSlot");
confirmButton.registerCallbackHandler((player, btn) -> {
@@ -221,7 +249,7 @@ public class SassembleGuiService extends GermGuiScreen {
ItemStack itemStack = disassembleSlot.getItemStack();
if (itemStack.getType() == Material.AIR || itemStack == null) {
- player.sendMessage(Color.RED+"在熔炉物品框中放上可分解的物品!");
+ player.sendMessage(ChatColor.RED+"在熔炉物品框中放上可分解的物品!");
return;
}
SrItemHandler srItemHandler = ItemStackHelper.getSrItemHandler(itemStack);
@@ -231,7 +259,7 @@ public class SassembleGuiService extends GermGuiScreen {
HashMap disProductHashMap = SrDisassemble.getConfigManager().getDisProductHashMap();
CanDisItem canDisItem = disProductHashMap.get(itemName);
if (!disProductHashMap.containsKey(itemName)){
- player.sendMessage(Color.RED+"放入的物品不可分解!");
+ player.sendMessage(ChatColor.RED+"放入的物品不可分解!");
return;
}
disassembleSlot.setInteract(false);//关闭交互
@@ -255,7 +283,7 @@ public class SassembleGuiService extends GermGuiScreen {
if ((boolean)door.getEnable() == true){
return;
}
- GermGuiTexture men1 = (GermGuiTexture) bgCanvas.getGuiPart("men1");
+ GermGuiButton men1 = (GermGuiButton) bgCanvas.getGuiPart("men1");
men1.setEnable(false);
GermGuiGif fire = (GermGuiGif) bgCanvas.getGuiPart("fire");
fire.setEnable(true);
@@ -276,10 +304,17 @@ public class SassembleGuiService extends GermGuiScreen {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
- executor.scheduleAtFixedRate(() -> {
+ executor.scheduleWithFixedDelay(() -> {
int calculateMinutesDifference = MinUtil.calculateMinutesDifference(data.getDisassembleTime());
if (calculateMinutesDifference <= 0) {
//执行语句说明分解完成
+
+ if (!this.disassembleFlag){
+ //disassembleFlag == false 说明gui已经关闭,即已经放弃了,下次打开时会打开新的gui
+ executor.shutdown();
+ return;
+ }
+
this.disassembleComplete();
if ((boolean)disassembleSlot.getInteract()){
@@ -290,8 +325,8 @@ public class SassembleGuiService extends GermGuiScreen {
fire.setEnable(false);
door.setEnable(false);
men1.setEnable(true);
- this.openTemporarilyBox();
- executor.shutdownNow();
+ this.temporarilyBoxScreen.openChildGui(this.playerHost);
+ executor.shutdown();
}
}
@@ -339,7 +374,7 @@ public class SassembleGuiService extends GermGuiScreen {
//遍历gui的所有物品槽,并且返回到玩家背包中
synchronized private void returnItemStacks(Player player) {
- this.disassemble = false;
+ this.disassembleFlag = false;
this.temporarilyBoxScreen.close();
List allGuiParts = this.getAllGuiParts(GermGuiSlot.class);
for (GermGuiSlot guiPart : allGuiParts) {
@@ -347,6 +382,20 @@ public class SassembleGuiService extends GermGuiScreen {
player.getInventory().addItem(guiPart.getItemStack());
}
}
+
+ for (GermGuiSlot guiPart : guiSlots) {
+ if (guiPart.getItemStack().getType() != Material.AIR) {
+ ItemStack itemStack = guiPart.getItemStack();
+ SrItemHandler srItemHandler = ItemStackHelper.getSrItemHandler(itemStack);
+
+ if (!srItemHandler.isSrItem()){
+ player.sendMessage(ChatColor.GREEN+"暂存箱只能存放RPG物品!");
+ player.getInventory().addItem(itemStack);
+ guiPart.setItemStack(null);
+ }
+
+ }
+ }
}
}
diff --git a/src/main/java/com/yuyu/srdisassemble/disassemeble/TemporarilyBox.java b/src/main/java/com/yuyu/srdisassemble/disassemeble/TemporarilyBox.java
index e82274d..65228c2 100644
--- a/src/main/java/com/yuyu/srdisassemble/disassemeble/TemporarilyBox.java
+++ b/src/main/java/com/yuyu/srdisassemble/disassemeble/TemporarilyBox.java
@@ -1,8 +1,20 @@
package com.yuyu.srdisassemble.disassemeble;
+import com.germ.germplugin.api.dynamic.gui.GermGuiCanvas;
import com.germ.germplugin.api.dynamic.gui.GermGuiScreen;
+import com.germ.germplugin.api.dynamic.gui.GermGuiScroll;
+import com.germ.germplugin.api.dynamic.gui.GermGuiSlot;
+import com.sakurarealm.sritem.api.ItemStackHelper;
+import com.sakurarealm.sritem.api.SrItemAPI;
+import com.sakurarealm.sritem.api.builder.SrItemHandler;
+import com.yuyu.srdisassemble.data.JdbcSqlClass;
+import com.yuyu.srdisassemble.pojo.PauseBox;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
+import java.util.List;
/**
* @author 峰。
@@ -42,4 +54,64 @@ public class TemporarilyBox {
temporarilyBoxHashMap.put(playname, stringGermGuiScreenHashMap);
}
}
+
+
+ /**
+ * 用于插件启动时,读取玩家的数据库存储
+ */
+ public static void getPauseBoxData(){
+ List playerList = JdbcSqlClass.getPlayerList();
+
+ for (String player : playerList){
+ List pauseBoxData = JdbcSqlClass.getPauseBoxData(player);
+
+ //暂存箱gui
+ GermGuiScreen pauseBox = GermGuiScreen.getGermGuiScreen("TemporarilyBox", DisassembleManager.getTemporarilyBox());
+ GermGuiCanvas canvas = (GermGuiCanvas) pauseBox.getGuiPart("canvas");
+ GermGuiScroll scroll = (GermGuiScroll) canvas.getGuiPart("scroll");
+
+ for (PauseBox p : pauseBoxData){
+ String username = p.getUsername();
+ int slotNum = p.getSlotnumber();
+ int nums = p.getNums();
+ String index = p.getProductindex();
+ String guiname = p.getGuiname();
+
+ String slot = "slot_"+slotNum;
+ GermGuiSlot germGuiSlot = (GermGuiSlot) scroll.getGuiPart(slot);
+ ItemStack item = SrItemAPI.getItem(index, new HashMap<>(), null, true, true);
+
+ if (item == null){
+ continue;
+ }
+ item.setAmount(nums);
+ germGuiSlot.setItemStack(item);
+ }
+
+ //循环完毕之后封存
+ TemporarilyBox.addGuiScreen(player,"TemporarilyBox",pauseBox);
+ }
+ }
+
+ /**
+ * 此方法仅仅用于保存暂存箱的数据
+ */
+ public static void savePauseBoxData(){
+ for (String username : temporarilyBoxHashMap.keySet()){
+ GermGuiScreen temporarilyBox = temporarilyBoxHashMap.get(username).get("TemporarilyBox");
+ GermGuiCanvas canvas = (GermGuiCanvas) temporarilyBox.getGuiPart("canvas");
+ GermGuiScroll scroll = (GermGuiScroll) canvas.getGuiPart("scroll");
+ for (int i = 1 ; i <= 16 ; i++){
+ String slot = "slot_"+i;
+ GermGuiSlot germGuiSlot = (GermGuiSlot) scroll.getGuiPart(slot);
+ ItemStack itemStack = germGuiSlot.getItemStack();
+ if (itemStack.getType() != Material.AIR) {
+ SrItemHandler srItemHandler = ItemStackHelper.getSrItemHandler(itemStack);
+ String index = srItemHandler.getLore().get(0);
+ index = index.substring(1);
+ JdbcSqlClass.insertPauseBoxData(username,i,itemStack.getAmount(),index,"TemporarilyBox");
+ }
+ }
+ }
+ }
}
diff --git a/src/main/resources/SqlDataMapper.xml b/src/main/resources/SqlDataMapper.xml
deleted file mode 100644
index c8e2b18..0000000
--- a/src/main/resources/SqlDataMapper.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
- create table if not exists srdisassemble
- (
- id BIGINT auto_increment comment 'ID',
- playername varchar(255) null comment '玩家姓名',
- disassembleTime datetime null comment '分解的时间',
- target varchar(255) null comment '分解的目标',
- targetIndex varchar(255) null comment '分解目标的索引'
- guiname varchar(255) null comment '打开gui的名称'
- );
-
-
-
- ALTER TABLE srdisassemble CONVERT TO CHARACTER SET utf8mb4;
-
-
-
- insert into srdisassemble(playername,disassembleTime,target,targetIndex)
- values(
- #{data.playername},
- #{data.disassembleTime},
- #{data.target},
- #{data.targetIndex}
- )
-
-
-
-
-
-
-
- delete from srdisassemble where
- id = #{id}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/resources/mybatis-config.xml b/src/main/resources/mybatis-config.xml
deleted file mode 100644
index ce4e51e..0000000
--- a/src/main/resources/mybatis-config.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 0d8a641..84ba74d 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -4,6 +4,7 @@ main: com.yuyu.srdisassemble.SrDisassemble
depend:
- SrItem
+ - GermPlugin
commands:
srdisassemble:
description: srdisassemble command