mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2025-03-15 12:10:23 +08:00
make tui and cui for size changing
This commit is contained in:
parent
1befb9e268
commit
c33bc9b52a
@ -11,7 +11,7 @@ var libraries = listOf<String>()
|
||||
libraries = libraries + "cn.lunadeer:MinecraftPluginUtils:2.0.7"
|
||||
|
||||
group = "cn.lunadeer"
|
||||
version = "3.4.1-alpha.3"
|
||||
version = "3.5.0-alpha.2"
|
||||
|
||||
java {
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
|
@ -15,6 +15,7 @@ import cn.lunadeer.dominion.uis.tuis.dominion.DominionList;
|
||||
import cn.lunadeer.dominion.uis.tuis.dominion.DominionManage;
|
||||
import cn.lunadeer.dominion.uis.tuis.dominion.manage.EnvSetting;
|
||||
import cn.lunadeer.dominion.uis.tuis.dominion.manage.GuestSetting;
|
||||
import cn.lunadeer.dominion.uis.tuis.dominion.manage.Resize;
|
||||
import cn.lunadeer.dominion.uis.tuis.dominion.manage.SizeInfo;
|
||||
import cn.lunadeer.dominion.utils.TuiUtils;
|
||||
import org.bukkit.command.Command;
|
||||
@ -63,6 +64,9 @@ public class Commands implements TabExecutor {
|
||||
case "info":
|
||||
SizeInfo.show(sender, args);
|
||||
break;
|
||||
case "resize":
|
||||
Resize.show(sender, args);
|
||||
break;
|
||||
case "manage":
|
||||
DominionManage.show(sender, args);
|
||||
break;
|
||||
@ -191,6 +195,9 @@ public class Commands implements TabExecutor {
|
||||
case "cui_rename_group":
|
||||
RenameGroup.open(sender, args);
|
||||
break;
|
||||
case "cui_resize_dominion":
|
||||
ResizeDominion.open(sender, args);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package cn.lunadeer.dominion.dtos;
|
||||
|
||||
import cn.lunadeer.dominion.api.dtos.flag.Flag;
|
||||
import cn.lunadeer.dominion.api.dtos.flag.Flags;
|
||||
import cn.lunadeer.dominion.api.dtos.flag.PreFlag;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
|
||||
|
@ -809,6 +809,27 @@ public class Translation extends Localization {
|
||||
@i18nField(defaultValue = "来自领地:")
|
||||
public static i18n TUI_TitleList_FromDominion;
|
||||
|
||||
@i18nField(defaultValue = "修改尺寸")
|
||||
public static i18n TUI_ResizeButton;
|
||||
@i18nField(defaultValue = "修改领地 %s 的尺寸")
|
||||
public static i18n TUI_ResizeDominion;
|
||||
@i18nField(defaultValue = "北(Y-)")
|
||||
public static i18n TUI_ResizeDominion_North;
|
||||
@i18nField(defaultValue = "东(X+)")
|
||||
public static i18n TUI_ResizeDominion_East;
|
||||
@i18nField(defaultValue = "南(Y+)")
|
||||
public static i18n TUI_ResizeDominion_South;
|
||||
@i18nField(defaultValue = "西(X-)")
|
||||
public static i18n TUI_ResizeDominion_West;
|
||||
@i18nField(defaultValue = "上(Z+)")
|
||||
public static i18n TUI_ResizeDominion_Up;
|
||||
@i18nField(defaultValue = "下(Z-)")
|
||||
public static i18n TUI_ResizeDominion_Down;
|
||||
@i18nField(defaultValue = "扩大")
|
||||
public static i18n TUI_ResizeDominion_Expand;
|
||||
@i18nField(defaultValue = "缩小")
|
||||
public static i18n TUI_ResizeDominion_Contract;
|
||||
|
||||
@i18nField(defaultValue = "输入要创建的领地名称")
|
||||
public static i18n CUI_Input_CreateDominion;
|
||||
@i18nField(defaultValue = "输入要创建的权限组名称")
|
||||
@ -827,6 +848,8 @@ public class Translation extends Localization {
|
||||
public static i18n CUI_Input_RenameGroup;
|
||||
@i18nField(defaultValue = "输入卫星地图地块颜色(16进制)")
|
||||
public static i18n CUI_Input_SetMapColor;
|
||||
@i18nField(defaultValue = "%s 领地 %s 的边界 方向:%s")
|
||||
public static i18n CUI_Input_ResizeDominion;
|
||||
|
||||
@i18nField(defaultValue = "AutoCreateRadius 不能等于 0,已重置为 10")
|
||||
public static i18n Config_Check_AutoCreateRadiusError;
|
||||
|
@ -0,0 +1,110 @@
|
||||
package cn.lunadeer.dominion.uis.cuis;
|
||||
|
||||
import cn.lunadeer.dominion.DominionInterface;
|
||||
import cn.lunadeer.dominion.api.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.events.dominion.modify.DominionSizeChangeEvent;
|
||||
import cn.lunadeer.dominion.managers.Translation;
|
||||
import cn.lunadeer.dominion.uis.tuis.dominion.manage.SizeInfo;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.scui.CuiTextInput;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.utils.CommandUtils.playerOnly;
|
||||
|
||||
public class ResizeDominion {
|
||||
|
||||
private static class resizeDominionCB implements CuiTextInput.InputCallback {
|
||||
private final Player sender;
|
||||
private final DominionDTO dominion;
|
||||
private final DominionSizeChangeEvent.SizeChangeType type;
|
||||
private final BlockFace direction;
|
||||
|
||||
public resizeDominionCB(Player sender,
|
||||
DominionDTO dominion,
|
||||
DominionSizeChangeEvent.SizeChangeType type,
|
||||
BlockFace direction) {
|
||||
this.sender = sender;
|
||||
this.dominion = dominion;
|
||||
this.type = type;
|
||||
this.direction = direction;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleData(String input) {
|
||||
int size;
|
||||
try {
|
||||
size = Integer.parseInt(input);
|
||||
if (size < 1) {
|
||||
Notification.error(sender, Translation.Commands_Dominion_SizeShouldBePositive);
|
||||
return;
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
Notification.error(sender, Translation.Commands_Dominion_SizeShouldBeInteger);
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
new DominionSizeChangeEvent(operator, dominion, type, direction, size).call();
|
||||
SizeInfo.show(sender, dominion.getName());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the resize dominion CUI
|
||||
*
|
||||
* @param sender Command sender
|
||||
* @param args Command arguments
|
||||
* args[1] - Dominion name
|
||||
* args[2] - Type of resize
|
||||
* args[3] - Direction of resize
|
||||
*/
|
||||
public static void open(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = DominionInterface.instance.getDominion(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, Translation.Messages_DominionNotExist, args[1]);
|
||||
return;
|
||||
}
|
||||
DominionSizeChangeEvent.SizeChangeType type = DominionSizeChangeEvent.SizeChangeType.valueOf(args[2]);
|
||||
String typeStr;
|
||||
if (type == DominionSizeChangeEvent.SizeChangeType.EXPAND) {
|
||||
typeStr = Translation.TUI_ResizeDominion_Expand.trans();
|
||||
} else {
|
||||
typeStr = Translation.TUI_ResizeDominion_Contract.trans();
|
||||
}
|
||||
BlockFace direction = BlockFace.valueOf(args[3]);
|
||||
String directionStr;
|
||||
switch (direction) {
|
||||
case NORTH:
|
||||
directionStr = Translation.TUI_ResizeDominion_North.trans();
|
||||
break;
|
||||
case EAST:
|
||||
directionStr = Translation.TUI_ResizeDominion_East.trans();
|
||||
break;
|
||||
case SOUTH:
|
||||
directionStr = Translation.TUI_ResizeDominion_South.trans();
|
||||
break;
|
||||
case WEST:
|
||||
directionStr = Translation.TUI_ResizeDominion_West.trans();
|
||||
break;
|
||||
case UP:
|
||||
directionStr = Translation.TUI_ResizeDominion_Up.trans();
|
||||
break;
|
||||
case DOWN:
|
||||
directionStr = Translation.TUI_ResizeDominion_Down.trans();
|
||||
break;
|
||||
default:
|
||||
Notification.error(sender, Translation.Messages_InvalidDirection);
|
||||
return;
|
||||
}
|
||||
CuiTextInput.InputCallback resizeDominionCB = new resizeDominionCB(player, dominion, type, direction);
|
||||
CuiTextInput view = CuiTextInput.create(resizeDominionCB).setText(String.valueOf(10)).title(
|
||||
Translation.CUI_Input_ResizeDominion.trans().formatted(typeStr, direction.name(), directionStr)
|
||||
);
|
||||
view.open(player);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
package cn.lunadeer.dominion.uis.tuis.dominion.manage;
|
||||
|
||||
import cn.lunadeer.dominion.api.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.events.dominion.modify.DominionSizeChangeEvent;
|
||||
import cn.lunadeer.dominion.managers.Translation;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.utils.CommandUtils.playerOnly;
|
||||
import static cn.lunadeer.dominion.utils.TuiUtils.getDominionNameArg_1;
|
||||
|
||||
public class Resize {
|
||||
|
||||
public static void show(CommandSender sender, String dominionName) {
|
||||
show(sender, new String[]{"resize", dominionName});
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the resize UI
|
||||
*
|
||||
* @param sender The sender
|
||||
* @param args The arguments
|
||||
* args[1] - Dominion name
|
||||
*/
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = getDominionNameArg_1(player, args);
|
||||
|
||||
ListView view = ListView.create(10, "/dominion resize " + dominion.getName());
|
||||
view.title(String.format(Translation.TUI_ResizeDominion.trans(), dominion.getName()));
|
||||
view.navigator(Line.create()
|
||||
.append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||
.append(Button.create(Translation.TUI_DominionManage_InfoButton).setExecuteCommand("/dominion info " + dominion.getName()).build())
|
||||
.append(Translation.TUI_ResizeButton));
|
||||
|
||||
view.add(
|
||||
Line.create()
|
||||
.append(Translation.TUI_ResizeDominion_North)
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Expand).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.EXPAND, BlockFace.NORTH)
|
||||
).build())
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Contract).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.CONTRACT, BlockFace.NORTH)
|
||||
).build())
|
||||
);
|
||||
view.add(
|
||||
Line.create()
|
||||
.append(Translation.TUI_ResizeDominion_South)
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Expand).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.EXPAND, BlockFace.SOUTH)
|
||||
).build())
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Contract).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.CONTRACT, BlockFace.SOUTH)
|
||||
).build())
|
||||
);
|
||||
view.add(
|
||||
Line.create()
|
||||
.append(Translation.TUI_ResizeDominion_West)
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Expand).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.EXPAND, BlockFace.WEST)
|
||||
).build())
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Contract).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.CONTRACT, BlockFace.WEST)
|
||||
).build())
|
||||
);
|
||||
view.add(
|
||||
Line.create()
|
||||
.append(Translation.TUI_ResizeDominion_East)
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Expand).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.EXPAND, BlockFace.EAST)
|
||||
).build())
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Contract).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.CONTRACT, BlockFace.EAST)
|
||||
).build())
|
||||
);
|
||||
view.add(
|
||||
Line.create()
|
||||
.append(Translation.TUI_ResizeDominion_Up)
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Expand).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.EXPAND, BlockFace.UP)
|
||||
).build())
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Contract).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.CONTRACT, BlockFace.UP)
|
||||
).build())
|
||||
);
|
||||
view.add(
|
||||
Line.create()
|
||||
.append(Translation.TUI_ResizeDominion_Down)
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Expand).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.EXPAND, BlockFace.DOWN)
|
||||
).build())
|
||||
.append(Button.create(Translation.TUI_ResizeDominion_Contract).setExecuteCommand(
|
||||
getCommand(dominion.getName(), DominionSizeChangeEvent.SizeChangeType.CONTRACT, BlockFace.DOWN)
|
||||
).build())
|
||||
);
|
||||
|
||||
view.showOn(player, 1);
|
||||
}
|
||||
|
||||
public static String getCommand(String dominionName, DominionSizeChangeEvent.SizeChangeType type, BlockFace direction) {
|
||||
return "/dominion cui_resize_dominion " + dominionName + " " + type.name() + " " + direction.name();
|
||||
}
|
||||
|
||||
}
|
@ -1,21 +1,27 @@
|
||||
package cn.lunadeer.dominion.uis.tuis.dominion.manage;
|
||||
|
||||
import cn.lunadeer.dominion.api.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.PlayerController;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.managers.Translation;
|
||||
import cn.lunadeer.dominion.utils.Particle;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.View;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.utils.CommandUtils.playerOnly;
|
||||
import static cn.lunadeer.dominion.utils.ControllerUtils.notOwner;
|
||||
import static cn.lunadeer.dominion.utils.TuiUtils.getDominionNameArg_1;
|
||||
|
||||
public class SizeInfo {
|
||||
public static void show(CommandSender sender, String dominionName) {
|
||||
show(sender, new String[]{"info", dominionName});
|
||||
}
|
||||
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
@ -31,24 +37,29 @@ public class SizeInfo {
|
||||
Integer x2 = dominion.getX2();
|
||||
Integer y2 = dominion.getY2();
|
||||
Integer z2 = dominion.getZ2();
|
||||
View view = View.create();
|
||||
view.title(String.format(Translation.TUI_SizeInfo_Title.trans(), dominion.getName()))
|
||||
.subtitle(Translation.TUI_SizeInfo_Owner.trans() + owner.getLastKnownName())
|
||||
.addLine(Line.create().append(Translation.TUI_SizeInfo_Size).append(dominion.getWidthX() + " x " + dominion.getHeight() + " x " + dominion.getWidthZ()))
|
||||
.addLine(Line.create().append(Translation.TUI_SizeInfo_Center).append((x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2)))
|
||||
.addLine(Line.create().append(Translation.TUI_SizeInfo_Vertical).append(String.valueOf(dominion.getHeight())))
|
||||
.addLine(Line.create().append(Translation.TUI_SizeInfo_VertY).append(y1 + " ~ " + y2))
|
||||
.addLine(Line.create().append(Translation.TUI_SizeInfo_Square).append(String.valueOf(dominion.getSquare())))
|
||||
.addLine(Line.create().append(Translation.TUI_SizeInfo_Volume).append(String.valueOf(dominion.getVolume())))
|
||||
.addLine(Line.create().append(Translation.TUI_SizeInfo_TpLocation).append(
|
||||
ListView view = ListView.create(10, "/dominion info " + dominion.getName());
|
||||
view.title(String.format(Translation.TUI_SizeInfo_Title.trans(), dominion.getName()));
|
||||
|
||||
if (notOwner(BukkitPlayerOperator.create(player), dominion)) {
|
||||
view.subtitle(Translation.TUI_SizeInfo_Owner.trans() + owner.getLastKnownName());
|
||||
} else {
|
||||
view.subtitle(Line.create()
|
||||
.append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||
.append(Button.create(Translation.TUI_ResizeButton).setExecuteCommand("/dominion resize " + dominion.getName()).build())
|
||||
);
|
||||
}
|
||||
view.add(Line.create().append(Translation.TUI_SizeInfo_Size).append(dominion.getWidthX() + " x " + dominion.getHeight() + " x " + dominion.getWidthZ()))
|
||||
.add(Line.create().append(Translation.TUI_SizeInfo_Center).append((x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2)))
|
||||
.add(Line.create().append(Translation.TUI_SizeInfo_Vertical).append(String.valueOf(dominion.getHeight())))
|
||||
.add(Line.create().append(Translation.TUI_SizeInfo_VertY).append(y1 + " ~ " + y2))
|
||||
.add(Line.create().append(Translation.TUI_SizeInfo_Square).append(String.valueOf(dominion.getSquare())))
|
||||
.add(Line.create().append(Translation.TUI_SizeInfo_Volume).append(String.valueOf(dominion.getVolume())))
|
||||
.add(Line.create().append(Translation.TUI_SizeInfo_TpLocation).append(
|
||||
dominion.getTpLocation() == null ?
|
||||
Translation.TUI_SizeInfo_NoneTp.trans() :
|
||||
dominion.getTpLocation().getX() + " " + dominion.getTpLocation().getY() + " " + dominion.getTpLocation().getZ()
|
||||
))
|
||||
.actionBar(Line.create()
|
||||
.append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||
.append(Button.create(Translation.TUI_Navigation_GuestSetting).setExecuteCommand("/dominion guest_setting " + dominion.getName()).build()))
|
||||
.showOn(player);
|
||||
.showOn(player, 1);
|
||||
Particle.showBorder(player, dominion);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user