1
mirror of https://github.com/CarmJos/EasyPlugin.git synced 2026-06-05 00:58:17 +08:00

Compare commits

..

3 Commits

Author SHA1 Message Date
carm 1d279a16a8 fix(gui): 修复GUI使用问题。 2024-02-08 02:16:54 +08:00
LSeng 17b7c23c54 feat(gui): 为GUI提供更多方法 (#10)
* feat(gui): 为GUI提供更多方法

* feat(gui): 修复翻页按钮消失的bug
2024-02-08 02:12:58 +08:00
carm 1b7f60fe43 feat(gui): 重构部分GUI代码,补全缺失的获取接口 2023-11-12 02:03:03 +08:00
22 changed files with 82 additions and 46 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<properties> <properties>
@@ -22,29 +22,4 @@ public class ColorParseTest {
System.out.println(clear("&f测试&<#AAAAAA>清理颜色代码&<#111111> &&这样应该&(#666666)不被影响 &f。")); System.out.println(clear("&f测试&<#AAAAAA>清理颜色代码&<#111111> &&这样应该&(#666666)不被影响 &f。"));
} }
@Test
public void formatReadTest() {
LinkedHashMap<Integer, String> formats = new LinkedHashMap<>();
String text = "&k&l &m&1我&k爱你爱你爱你&o吗?";
Matcher matcher = ColorParser.FORMAT_PATTERN.matcher(text);
while (matcher.find()) {
String code = matcher.group();
formats.put(matcher.start(), code);
text = matcher.replaceFirst("");
matcher.reset(text);
}
formats.forEach((index, code) -> System.out.println(index + " -> " + code));
String[] parts = text.split("");
StringBuilder builder = new StringBuilder();
for (int i = 0; i < parts.length; i++) {
String format = formats.get(i);
if (format != null) builder.append(ColorParser.parseBaseColor(format));
builder.append(parts[i]);
}
System.out.println(builder);
}
} }
+1 -1
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<properties> <properties>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
@@ -81,6 +81,19 @@ public class GUI {
} }
} }
/**
* 设置GUI上方(箱子部分)
* @param row 行数,1为第1行
* @param column 列数,1为第1列
* @param item GUIItem
*/
public void setItem(int row, int column, @NotNull GUIItem item){
if(row <= 0 || column <= 0) throw new IllegalArgumentException("行数和列数都不能小于等于零");
if(row > type.getLines()) throw new IllegalArgumentException("行数("+row+")大于GUI大小限制("+type.getLines()+")");
if(column > 9) throw new IllegalArgumentException("列数("+column+")不能大于9");
setItem(9*(row-1)+column-1, item);
}
public GUIItem getItem(int index) { public GUIItem getItem(int index) {
return this.items.get(index); return this.items.get(index);
} }
@@ -78,6 +78,14 @@ public class GUIItem {
} }
public Set<GUIClickAction> getActions() {
return actions;
}
public Set<GUIClickAction> getActionsIgnoreActive() {
return actionsIgnoreActive;
}
public abstract static class GUIClickAction { public abstract static class GUIClickAction {
public abstract void run(ClickType type, Player player); public abstract void run(ClickType type, Player player);
} }
@@ -77,7 +77,14 @@ public class AutoPagedGUI extends CommonPagedGUI {
public void openGUI(Player user) { public void openGUI(Player user) {
if (previousPageSlot >= 0) { if (previousPageSlot >= 0) {
if (hasPreviousPage()) { if (hasPreviousPage()) {
setItem(previousPageSlot, new GUIItem(Optional.ofNullable(defaultPreviousPage).map(d -> d.apply(user)).orElse(previousPageUI)) { ItemStack finalPreviousPageUI;
if(previousPageUI != null)
finalPreviousPageUI = previousPageUI;
else if (defaultPreviousPage != null)
finalPreviousPageUI = defaultPreviousPage.apply(user);
else
finalPreviousPageUI = null;
setItem(previousPageSlot, new GUIItem(finalPreviousPageUI) {
@Override @Override
public void onClick(Player clicker, ClickType type) { public void onClick(Player clicker, ClickType type) {
if (type == ClickType.RIGHT) { if (type == ClickType.RIGHT) {
@@ -95,7 +102,14 @@ public class AutoPagedGUI extends CommonPagedGUI {
if (nextPageSlot >= 0) { if (nextPageSlot >= 0) {
if (hasNextPage()) { if (hasNextPage()) {
setItem(nextPageSlot, new GUIItem(Optional.ofNullable(defaultNextPage).map(d -> d.apply(user)).orElse(nextPageUI)) { ItemStack finalNextPageUI;
if(previousPageUI != null)
finalNextPageUI = nextPageUI;
else if (defaultNextPage != null)
finalNextPageUI = defaultNextPage.apply(user);
else
finalNextPageUI = null;
setItem(nextPageSlot, new GUIItem(finalNextPageUI) {
@Override @Override
public void onClick(Player clicker, ClickType type) { public void onClick(Player clicker, ClickType type) {
if (type == ClickType.RIGHT) { if (type == ClickType.RIGHT) {
@@ -80,8 +80,9 @@ public class CommonPagedGUI extends PagedGUI {
* *
* @return 最后一页的页码 * @return 最后一页的页码
*/ */
@Override
public int getLastPageNumber() { public int getLastPageNumber() {
return (this.container.size() / range.length) + ((this.container.size() % range.length) == 0 ? 0 : 1); return getLastPageNumber(range.length);
} }
/** /**
@@ -100,6 +101,8 @@ public class CommonPagedGUI extends PagedGUI {
super.openGUI(player); super.openGUI(player);
return; return;
} }
if(page > getLastPageNumber())
page = getLastPageNumber();
List<GUIItem> list = new ArrayList<>(); List<GUIItem> list = new ArrayList<>();
int start = (page - 1) * range.length; int start = (page - 1) * range.length;
for (int i = start; i < start + range.length; i++) { for (int i = start; i < start + range.length; i++) {
@@ -19,6 +19,29 @@ public abstract class PagedGUI extends GUI {
super(type, title); super(type, title);
} }
public int setCurrentPage(int page) {
this.page = Math.max(1, page);
return this.page;
}
public int getCurrentPage() {
return page;
}
public int getLastPageNumber() {
return getLastPageNumber(getGUIType().getSize());
}
/**
* 得到最后一页的页码
*
* @return 最后一页的页码
*/
public int getLastPageNumber(int size) {
return (this.container.size() / size) + ((this.container.size() % size) == 0 ? 0 : 1);
}
public int addItem(@NotNull GUIItem i) { public int addItem(@NotNull GUIItem i) {
container.add(i); container.add(i);
return container.size() - 1; return container.size() - 1;
@@ -66,7 +89,7 @@ public abstract class PagedGUI extends GUI {
*/ */
public void goPreviousPage() { public void goPreviousPage() {
if (hasPreviousPage()) { if (hasPreviousPage()) {
page--; this.page--;
this.onPageChange(this.page); this.onPageChange(this.page);
} else throw new IndexOutOfBoundsException(); } else throw new IndexOutOfBoundsException();
} }
@@ -77,7 +100,7 @@ public abstract class PagedGUI extends GUI {
*/ */
public void goNextPage() { public void goNextPage() {
if (hasNextPage()) { if (hasNextPage()) {
page++; this.page++;
this.onPageChange(this.page); this.onPageChange(this.page);
} else throw new IndexOutOfBoundsException(); } else throw new IndexOutOfBoundsException();
} }
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<properties> <properties>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<properties> <properties>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>1.5.10</version> <version>1.5.12</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -15,7 +15,7 @@
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>easyplugin-parent</artifactId> <artifactId>easyplugin-parent</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>1.5.10</version> <version>1.5.12</version>
<modules> <modules>
<module>base/color</module> <module>base/color</module>
<module>base/utils</module> <module>base/utils</module>