Initial commit
This commit is contained in:
29
src/main/java/com/yuyu/srappraise/SrAppraise.java
Normal file
29
src/main/java/com/yuyu/srappraise/SrAppraise.java
Normal file
@ -0,0 +1,29 @@
|
||||
package com.yuyu.srappraise;
|
||||
|
||||
import com.sakurarealm.sritem.bukkit.command.CommandBase;
|
||||
import com.yuyu.srappraise.command.OpenCommand;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public final class SrAppraise extends JavaPlugin {
|
||||
|
||||
@Getter
|
||||
private static SrAppraise instance;//用于获取实例
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
||||
getLogger().info(ChatColor.MAGIC+"鉴定插件启动");
|
||||
|
||||
CommandBase commandBase = new CommandBase();
|
||||
this.getCommand("srappraise").setExecutor(commandBase);
|
||||
commandBase.registerSubCommand("open",new OpenCommand());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
// Plugin shutdown logic
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package com.yuyu.srappraise.appraise;
|
||||
|
||||
import com.germ.germplugin.api.dynamic.gui.GermGuiScreen;
|
||||
import com.sakurarealm.sritem.germ.GermGuiService;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* @BelongsProject: SrAppraise
|
||||
* @BelongsPackage: com.yuyu.srappraise
|
||||
* @FileName: AppraiseManager
|
||||
* @Author: 峰。
|
||||
* @Date: 2024/4/16-16:37
|
||||
* @Version: 1.0
|
||||
* @Description:提供鉴定服务相关
|
||||
*/
|
||||
public class AppraiseManager {
|
||||
|
||||
@Getter
|
||||
private final static AppraiseManager instance = new AppraiseManager();
|
||||
|
||||
private AppraiseManager() {
|
||||
}
|
||||
|
||||
public static ConfigurationSection getForgePlayerInventory() {
|
||||
return GermGuiService.getGermGui("forge", "player_inventory-forge");
|
||||
}
|
||||
public static ConfigurationSection getAppraiseInventory() {
|
||||
return GermGuiService.getGermGui("appraise", "appraise");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void open(Player player,String guiName){
|
||||
//获取鉴定的窗口
|
||||
AppraiseScreen screen = new AppraiseScreen(getAppraiseInventory(),guiName);
|
||||
//获取gui的配置,此处会把读取到的gui配置传到ForgeScreen的构造类中
|
||||
GermGuiScreen packscreen = GermGuiScreen.getGermGuiScreen("player_inventory-forge", getForgePlayerInventory());
|
||||
|
||||
// screen.btnRegister();
|
||||
//为玩家打开鉴定窗口和背包窗口
|
||||
packscreen.openGui(player);
|
||||
screen.openChildGui(player);
|
||||
|
||||
}
|
||||
}
|
111
src/main/java/com/yuyu/srappraise/appraise/AppraiseScreen.java
Normal file
111
src/main/java/com/yuyu/srappraise/appraise/AppraiseScreen.java
Normal file
@ -0,0 +1,111 @@
|
||||
package com.yuyu.srappraise.appraise;
|
||||
|
||||
import com.germ.germplugin.api.dynamic.DynamicBase;
|
||||
import com.germ.germplugin.api.dynamic.gui.*;
|
||||
import com.sakurarealm.sritem.api.ItemStackHelper;
|
||||
import com.sakurarealm.sritem.api.SrItemAPI;
|
||||
import com.sakurarealm.sritem.api.SrItemManager;
|
||||
import com.sakurarealm.sritem.api.builder.SrItemHandler;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* @BelongsProject: SrAppraise
|
||||
* @BelongsPackage: com.yuyu.srappraise.appraise
|
||||
* @FileName: AppraiseScreen
|
||||
* @Author: 峰。
|
||||
* @Date: 2024/4/19-21:32
|
||||
* @Version: 1.0
|
||||
* @Description: 用于鉴定界面相关
|
||||
*/
|
||||
public class AppraiseScreen extends GermGuiScreen {
|
||||
|
||||
public AppraiseScreen(ConfigurationSection configurationSection,String guiName) {
|
||||
super(guiName,configurationSection);
|
||||
//TODO(此处绑定给 √ 按钮绑定一个监听事件,在监听事件中获取放入了物品槽位的物品,然后鉴定)
|
||||
this.btnRegister();
|
||||
this.setClosedHandler(((player, germGuiScreen) -> {
|
||||
//窗口关闭事件
|
||||
this.returnItemStacks(player);
|
||||
this.close();
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回鉴定槽位内的物品给玩家
|
||||
*
|
||||
* @param player player
|
||||
*/
|
||||
synchronized public void returnItemStacks(Player player) {
|
||||
GermGuiCanvas canvas = (GermGuiCanvas) getGuiPart("utility");
|
||||
|
||||
GermGuiSlot slot_biomass = (GermGuiSlot) canvas.getGuiPart("slot_biomass");
|
||||
|
||||
|
||||
ItemStack biomass_itemStack = slot_biomass.getItemStack();
|
||||
|
||||
if (biomass_itemStack != null && biomass_itemStack.getType() != Material.AIR) {
|
||||
player.getInventory().addItem(biomass_itemStack);
|
||||
}
|
||||
slot_biomass.setItemStack(Material.AIR);
|
||||
|
||||
}
|
||||
|
||||
// public ItemStack getSrItem(){
|
||||
// ItemStack item = SrItemAPI.getItem();
|
||||
// }
|
||||
|
||||
/**
|
||||
* 此方法用于绑定鉴定事件的发生
|
||||
*/
|
||||
public void btnRegister(){
|
||||
//先获取canvas,再获取canvas中的按键
|
||||
GermGuiCanvas canvas = (GermGuiCanvas) getGuiPart("utility");
|
||||
|
||||
GermGuiButton confrimBtn = (GermGuiButton) canvas.getGuiPart("b_confirm");
|
||||
confrimBtn.registerCallbackHandler((clickPlayer, btn) -> {
|
||||
|
||||
GermGuiSlot slot_biomass = (GermGuiSlot) canvas.getGuiPart("slot_biomass");
|
||||
|
||||
ItemStack itemStack = slot_biomass.getItemStack();
|
||||
|
||||
SrItemHandler srItemHandler = ItemStackHelper.getSrItemHandler(itemStack);
|
||||
String title = srItemHandler.getTitle();
|
||||
String index = title.substring(title.indexOf('l') + 1);
|
||||
String s = srItemHandler.getLore().get(0);
|
||||
|
||||
if (SrItemAPI.hasItem(index)) {
|
||||
//TODO(此处hasItem的索引能通过,可以试试getItem能不能通过获取rpg物品)
|
||||
// SrItemManager.getInstance().getItem(index)
|
||||
index = s.substring(s.indexOf('-') + 1);
|
||||
itemStack = SrItemAPI.getItem(index,new HashMap<>(), Bukkit.getPlayer(clickPlayer.getName()),true,true);
|
||||
if (itemStack == null){
|
||||
clickPlayer.sendMessage(ChatColor.RED+title+"不存在");
|
||||
return;
|
||||
}
|
||||
|
||||
if (itemStack.getAmount() != 1) {
|
||||
clickPlayer.sendMessage(ChatColor.RED + "每次只能鉴定一个物品!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (itemStack != null && itemStack.getType() != Material.AIR) {
|
||||
itemStack.setAmount(2);
|
||||
clickPlayer.sendMessage(ChatColor.RED + "这是" + itemStack.getType().name());
|
||||
SrItemAPI instance = SrItemAPI.INSTANCE;
|
||||
slot_biomass.setItemStack(itemStack);
|
||||
}
|
||||
}else {
|
||||
clickPlayer.sendMessage(ChatColor.GREEN+"这是一个"+itemStack.getType().name());
|
||||
}
|
||||
}, GermGuiButton.EventType.LEFT_CLICK);
|
||||
}
|
||||
|
||||
}
|
45
src/main/java/com/yuyu/srappraise/command/OpenCommand.java
Normal file
45
src/main/java/com/yuyu/srappraise/command/OpenCommand.java
Normal file
@ -0,0 +1,45 @@
|
||||
package com.yuyu.srappraise.command;
|
||||
|
||||
import com.sakurarealm.sritem.bukkit.command.SubCommand;
|
||||
import com.yuyu.srappraise.appraise.AppraiseManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* @BelongsProject: SrAppraise
|
||||
* @BelongsPackage: com.yuyu.srappraise.command
|
||||
* @FileName: OpenCommand
|
||||
* @Author: 峰。
|
||||
* @Date: 2024/4/19-21:14
|
||||
* @Version: 1.0
|
||||
* @Description: 用于打开gui窗口
|
||||
*/
|
||||
public class OpenCommand implements SubCommand {
|
||||
@Override
|
||||
public void onCommand(CommandSender commandSender, String[] strings) {
|
||||
|
||||
if (strings.length < 3){
|
||||
commandSender.sendMessage(ChatColor.RED+"正确的格式为:/srappraise open 姓名 GUIname");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Player player = Bukkit.getPlayer(strings[1]);
|
||||
if (player == null){
|
||||
commandSender.sendMessage(ChatColor.RED+"玩家"+strings[2]+"不存在!");
|
||||
return;
|
||||
}
|
||||
|
||||
String gui = strings[2];
|
||||
|
||||
if (gui.equalsIgnoreCase("appraise")){
|
||||
//为玩家打开GUI列表
|
||||
AppraiseManager.getInstance().open(player,gui);
|
||||
}else {
|
||||
commandSender.sendMessage(ChatColor.RED+"请输入正确的GUI名字");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user