This commit is contained in:
yaohunya 2024-08-08 02:43:57 +08:00
parent 0d0a662ef8
commit f50a7a02e5
11 changed files with 529 additions and 301 deletions

10
pom.xml
View File

@ -47,6 +47,16 @@
<artifactId>NBT-API</artifactId>
<version>1.12.2</version>
</dependency>
<dependency>
<groupId>com.yaohun.playermanage</groupId>
<artifactId>PlayerManage</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.vexview.api</groupId>
<artifactId>vexview</artifactId>
<version>1.12.2</version>
</dependency>
</dependencies>
</project>

View File

@ -14,8 +14,6 @@ public class WarpData {
private String key;
private Location location;
private boolean locSwitch;
private Island island;
public WarpData(String key){
FileConfiguration yml = Main.plugin.getConfig();
@ -33,19 +31,15 @@ public class WarpData {
float yaw = (float) yml.getDouble(string+"yaw");
float pitch = (float) yml.getDouble(string+"pitch");
this.location = new Location(world,x,y,z,yaw,pitch);
this.island = ASkyBlockAPI.getInstance().getIslandAt(location);
this.locSwitch = yml.getBoolean(string+"switch");
}
public WarpData(String key,Location location){
this.key = key;
this.location = location;
this.locSwitch = true;
}
public void SaveData(){
FileConfiguration yml = Main.plugin.getConfig();
String string = "Stats."+key+".";
yml.set(string+"switch",this.locSwitch);
yml.set(string+"world",location.getWorld().getName());
yml.set(string+"x",location.getX());
yml.set(string+"y",location.getY());
@ -66,12 +60,4 @@ public class WarpData {
public void setLocation(Location location) {
this.location = location;
}
public boolean isLocSwitch() {
return locSwitch;
}
public Island getIsland() {
return island;
}
}

View File

@ -0,0 +1,93 @@
package me.Demon.AskyBlockWarps.Listener;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import de.tr7zw.itemnbtapi.NBTItem;
import me.Demon.AskyBlockWarps.Main;
import me.Demon.DemonPlugin.DemonAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class AcceptGui implements Listener {
public static String invtitle = "帝国战争 - 岛屿邀请";
public static List<Player> playerList = new ArrayList<>();
@EventHandler
public void onclick(InventoryClickEvent e) {
int rawSlot = e.getRawSlot();
Player p = (Player) e.getWhoClicked();
if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) {
e.setCancelled(true);
if (rawSlot >= 0 && rawSlot < e.getInventory().getSize()) {
if(rawSlot == 2){
playerList.add(p);
p.closeInventory();
p.performCommand("is accept");
new BukkitRunnable() {
@Override
public void run() {
playerList.remove(p);
}
}.runTaskLater(Main.plugin,60L);
}
if(rawSlot == 6){
p.performCommand("is reject");
}
}
}
}
@EventHandler
public void onclick(InventoryCloseEvent e) {
Player p = (Player) e.getPlayer();
if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) {
if (!playerList.contains(p)) {
p.performCommand("is reject");
}
}
}
public static void Opengui(Player p) {
Inventory inv = Bukkit.createInventory(null, 9, invtitle);
inv.setItem(2,Accept());
inv.setItem(6,Deny());
p.openInventory(inv);
}
public static ItemStack Accept() {
ItemStack item = new ItemStack(Material.SLIME_BALL);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l接受邀请");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击操作");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack Deny() {
ItemStack item = new ItemStack(Material.MAGMA_CREAM);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§c§l拒绝邀请");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击操作");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
}

View File

@ -1,19 +1,26 @@
package me.Demon.AskyBlockWarps.Listener;
import cn.hamster3.cdapi.CDTimeAPI;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import de.tr7zw.itemnbtapi.NBTItem;
import me.Demon.AskyBlockWarps.Main;
import me.Demon.AskyBlockWarps.Util.itemUtil;
import me.Demon.DemonPlugin.DemonAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class LandInviteGui implements Listener {
public static String invtitle = "帝国战争 - 成员邀请";
@ -23,14 +30,23 @@ public class LandInviteGui implements Listener {
Player p = (Player) e.getWhoClicked();
if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) {
e.setCancelled(true);
if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize()) {
ItemStack item = e.getCurrentItem();
if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize() && !DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
if (ASkyBlockAPI.getInstance().getOwner(p.getLocation()).equals(p.getUniqueId())) {
String playName = item.getItemMeta().getDisplayName().replace("§6§l玩家 §e", "");
p.performCommand("is invite " + playName);
} else {
p.sendMessage(Main.prefix + "您不是岛主,没权限邀请玩家加入岛屿.");
if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
NBTItem nbtItem = new NBTItem(item);
if (nbtItem.hasKey("inviteName")) {
p.closeInventory();
String name = nbtItem.getString("inviteName");
p.performCommand("is invite " + name);
Player toPlayer = Bukkit.getPlayer(name);
if(CDTimeAPI.getCD(p.getUniqueId(),"inviteCd") > 0){
return;
}
if(toPlayer != null){
AcceptGui.Opengui(toPlayer);
CDTimeAPI.setPlayerCD(p.getUniqueId(),"inviteCd",1000 * 10);
}
}
}
}
}
@ -40,20 +56,44 @@ public class LandInviteGui implements Listener {
Inventory inv = Bukkit.createInventory(null, 54, invtitle);
// 获取玩家附近20格内的所有玩家
List<Player> nearbyPlayers = new ArrayList<>();
for (Player nearbyPlayer : Bukkit.getServer().getOnlinePlayers()) {
if (p.getWorld().equals(nearbyPlayer.getWorld())) { // 确保玩家在同一世界
if (p.getLocation().distance(nearbyPlayer.getLocation()) <= 20) {
World world = p.getWorld();
for (Player nearbyPlayer : world.getPlayers()) {
if (p.getLocation().distance(nearbyPlayer.getLocation()) <= 50) {
// 判断这个玩家是否已加入岛屿
if(!ASkyBlockAPI.getInstance().hasIsland(nearbyPlayer.getUniqueId())) {
nearbyPlayers.add(nearbyPlayer);
}
}
}
if(nearbyPlayers.size() < 1){
p.sendMessage(Main.prefix + "您周围没有玩家可邀请加入岛屿.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F);
return;
}
for (Player nearbyPlayer : nearbyPlayers) {
if (!p.equals(nearbyPlayer)) { // 避免将玩家自己添加到GUI中
inv.addItem(itemUtil.addTeam(nearbyPlayer.getName()));
inv.addItem(addTeam(nearbyPlayer.getName()));
}
}
p.openInventory(inv);
}
public static ItemStack addTeam(String name) {
ItemStack item = new ItemStack(Material.SIGN);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l玩家 §e" + name);
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§c 请勿随意点击");
lore.add("§c 请勿随意点击");
lore.add("§c 请勿随意点击");
lore.add("§r");
lore.add("§6▸ §e点击邀请加入岛屿");
meta.setLore(lore);
item.setItemMeta(meta);
NBTItem nbtItem = new NBTItem(item);
nbtItem.setString("inviteName",name);
return nbtItem.getItem();
}
}

View File

@ -1,17 +1,26 @@
package me.Demon.AskyBlockWarps.Listener;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import com.wasteofplastic.askyblock.Island;
import com.yaohun.playermanage.PlayerManage;
import de.tr7zw.itemnbtapi.NBTItem;
import me.Demon.AskyBlockWarps.Main;
import me.Demon.AskyBlockWarps.Util.itemUtil;
import me.Demon.DemonPlugin.DemonAPI;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class LandTeamGui implements Listener {
@ -19,27 +28,89 @@ public class LandTeamGui implements Listener {
@EventHandler
public void onclick(InventoryClickEvent e) {
int rawSlot = e.getRawSlot();
Inventory inv = e.getInventory();
Player p = (Player) e.getWhoClicked();
if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) {
Location location = p.getLocation();
String name = p.getName();
if (inv != null && inv.getTitle().contains(invtitle)) {
e.setCancelled(true);
ItemStack item = e.getCurrentItem();
if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize() && !DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
if (ASkyBlockAPI.getInstance().getIslandAt(p.getLocation()).equals(p.getUniqueId())) {
String playName = item.getItemMeta().getDisplayName().replace("§6§l成员 §e", "");
p.performCommand("is expel " + playName);
if (rawSlot >= 0 && rawSlot < inv.getSize()) {
if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) {
NBTItem nbtItem = new NBTItem(item);
if(nbtItem.hasKey("uuid")) {
String uuid = nbtItem.getString("uuid");
// 获取当前岛屿数据
Island island = ASkyBlockAPI.getInstance().getIslandAt(location);
UUID ownerUuid = island.getOwner();
// 判断操作目标是否是岛屿主人
if(ownerUuid.toString().equalsIgnoreCase(uuid)){
p.sendMessage(Main.prefix + "无法对岛屿主人进行移除操作.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH,1.6F,1.8F);
return;
}
// 判断操作移除的人是否是岛屿主人
if(!ownerUuid.equals(p.getUniqueId())){
p.sendMessage(Main.prefix + "只有岛屿主人才能进行移除操作.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH,1.6F,1.8F);
return;
}
String kickName = PlayerManage.getUuidToName(uuid);
if(kickName == null){
p.sendMessage(Main.prefix + "移除失败,无法获取该目标昵称.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH,1.6F,1.8F);
return;
}
p.performCommand("is expel " + kickName);
}
}
} else {
p.sendMessage(Main.prefix + "您不是岛主,没权限将玩家移出岛屿.");
p.closeInventory();
}
}
}
public static void Opengui(Player p) {
Inventory inv = Bukkit.createInventory(null, 27, invtitle);
for (UUID uid : ASkyBlockAPI.getInstance().getTeamMembers(p.getUniqueId())) {
inv.addItem(itemUtil.teamList(Main.convertUUIDToName(uid)));
Island island = ASkyBlockAPI.getInstance().getIslandAt(p.getLocation());
int slot = 0;
List<UUID> uuidList = island.getMembers();
uuidList.remove(0);
for (UUID uuid : uuidList){
String name = PlayerManage.getUuidToName(uuid.toString());
if (name != null) {
if (!uuid.equals(island.getOwner())) {
inv.setItem(slot,teamList(uuid,false));
}else{
inv.setItem(slot,teamList(uuid,true));
}
slot++;
}
}
p.openInventory(inv);
}
public static ItemStack teamList(UUID uuid,boolean owner) {
ItemStack item = new ItemStack(Material.SIGN);
ItemMeta meta = item.getItemMeta();
String name = PlayerManage.getUuidToName(uuid.toString());
if(name == null){
meta.setDisplayName("§6§l成员 §c无法获取");
}else {
meta.setDisplayName("§6§l成员 §e" + name);
}
List<String> lore = new ArrayList<>();
lore.add("§r");
if(owner){
lore.add("§7 身份: §f岛主");
}else {
lore.add("§7 身份: §f岛员");
}
lore.add("§r");
lore.add("§6▸ §c点击移除岛屿");
meta.setLore(lore);
item.setItemMeta(meta);
NBTItem nbtItem = new NBTItem(item);
nbtItem.setString("uuid",uuid.toString());
return nbtItem.getItem();
}
}

View File

@ -2,21 +2,30 @@ package me.Demon.AskyBlockWarps.Listener;
import cn.hamster3.cdapi.CDTimeAPI;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import com.wasteofplastic.askyblock.Island;
import com.yaohun.playermanage.PlayerManage;
import lk.vexview.api.VexViewAPI;
import me.Demon.AskyBlockWarps.Main;
import me.Demon.AskyBlockWarps.Manage.GameManage;
import me.Demon.AskyBlockWarps.Util.itemUtil;
import me.Demon.DemonPlugin.DemonAPI;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.entity.Vex;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class MainGui implements Listener {
@ -27,103 +36,278 @@ public class MainGui implements Listener {
int rawSlot = e.getRawSlot();
Inventory inv = e.getInventory();
Player p = (Player) e.getWhoClicked();
Location location = p.getLocation();
String name = p.getName();
if (inv != null && inv.getTitle().contains(invtitle)) {
e.setCancelled(true);
if (rawSlot >= 0 && rawSlot < inv.getSize()) {
UUID islandOwner = ASkyBlockAPI.getInstance().getOwner(p.getLocation());
if (e.getRawSlot() == 1) {
ItemStack item = e.getCurrentItem();
if(DemonAPI.itemIsNull(item) || DemonAPI.itemIsName(item)){return;}
ItemMeta meta = item.getItemMeta();
String itemName = meta.getDisplayName();
if(itemName.contains("返回主页")){
VexViewAPI.openGui(p,"主菜单");
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1.6F, 1.8F);
return;
}
if(itemName.contains("返回空岛")){
p.performCommand("is");
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
p.closeInventory();
return;
}
if(itemName.contains("空岛地标列表")){
WarpGui.Opengui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1.6F, 1.8F);
return;
}
if(itemName.contains("邀请加入空岛")){
// 判断玩家是否拥有岛屿并且是岛主
boolean isOwner = false;
Island island = ASkyBlockAPI.getInstance().getIslandOwnedBy(p.getUniqueId());
if(island != null){
UUID ownerUuid = island.getOwner();
if(ownerUuid.equals(p.getUniqueId())){
LandInviteGui.Opengui(p);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1.6F, 1.8F);
isOwner = true;
}
}
if(!isOwner){
p.sendMessage(Main.prefix + "您需要创建岛屿成为岛主后才能邀请玩家.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F);
}
return;
}
if(itemName.contains("设置空岛地标")){
p.closeInventory();
// 获取当前岛屿岛主UUID
Island island = ASkyBlockAPI.getInstance().getIslandAt(location);
if(island != null && !island.getOwner().equals(p.getUniqueId())){
p.sendMessage(Main.prefix + "您只能在自己的岛屿设置传送点坐标.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F);
return;
}
if (CDTimeAPI.getCD(p.getUniqueId(), "islandsetwarp") > 0) {
p.sendMessage(Main.prefix + "请稍后再次尝试设置坐标.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F);
return;
}
if(!p.hasPermission("warps.create")){
p.sendMessage(Main.prefix + "你需要成为 盫 §r才能设置坐标.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F);
return;
}
if (e.getRawSlot() == 3) {
if (islandOwner != null && islandOwner.equals(p.getUniqueId())) {
if (CDTimeAPI.getCD(p.getUniqueId(), "islandsetwarp") < 0) {
Main.gameManage.setWarpLoc(name,p.getLocation());
p.sendMessage(Main.prefix + "设置空岛地标点成功.");
CDTimeAPI.setPlayerCD(p.getUniqueId(), "islandsetwarp", 1000 * 3);
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
CDTimeAPI.setPlayerCD(p.getUniqueId(), "islandsetwarp", 1000 * 5);
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.6F, 1.8F);
return;
}
if(itemName.contains("重置空岛")){
p.closeInventory();
} else {
p.sendMessage(Main.prefix + "功能冷却中...");
p.closeInventory();
}
} else {
p.sendMessage(Main.prefix + "您只能在您的岛屿设置传送点地标.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.0F, 2.0F);
p.closeInventory();
}
}
if (e.getRawSlot() == 5) {
WarpGui.Opengui(p);
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
}
if (e.getRawSlot() == 7) {
DemonAPI.sendTitle(p, 10, 20, 10, "§c§l空岛重置", "§6请联系群客服进行重置");
p.sendMessage(Main.prefix + "请联系客服进行空岛重置报备!!!");
p.sendMessage(Main.prefix + "请联系客服进行空岛重置报备!!!");
p.sendMessage(Main.prefix + "请联系客服进行空岛重置报备!!!");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.0F, 2.0F);
p.closeInventory();
p.sendMessage(Main.prefix + "需要重置岛屿,请联系群内客服申请报备!!!");
p.sendMessage(Main.prefix + "需要重置岛屿,请联系群内客服申请报备!!!");
p.sendMessage(Main.prefix + "需要重置岛屿,请联系群内客服申请报备!!!");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F);
return;
}
if (e.getRawSlot() == 11) {
p.performCommand("is top");
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
if(itemName.contains("岛屿等级")){
p.closeInventory();
p.performCommand("is level");
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.6F, 1.8F);
return;
}
if(itemName.contains("岛屿保护")){
p.closeInventory();
// 获取当前岛屿岛主UUID
Island island = ASkyBlockAPI.getInstance().getIslandAt(location);
if(island != null && !island.getOwner().equals(p.getUniqueId())){
p.sendMessage(Main.prefix + "您只能在自己岛屿上才能设置岛屿保护.");
p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F);
return;
}
if (e.getRawSlot() == 13) {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "asadmin lock " + p.getName());
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
p.closeInventory();
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.6F, 1.8F);
return;
}
if (e.getRawSlot() == 15) {
if(itemName.contains("查看空岛成员")){
LandTeamGui.Opengui(p);
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1.6F, 1.8F);
return;
}
if (e.getRawSlot() == 19) {
LandInviteGui.Opengui(p);
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
}
if (e.getRawSlot() == 25) {
if(itemName.contains("挑战任务")){
p.performCommand("challenge");
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F);
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1.6F, 1.8F);
return;
}
}
}
}
public static void Opengui(Player p) {
Inventory inv = Bukkit.createInventory(null, 27, invtitle);
boolean butt = ASkyBlockAPI.getInstance().hasIsland(p.getUniqueId());
inv.setItem(1, itemUtil.backisland(butt));
inv.setItem(3, itemUtil.setWarp());
inv.setItem(5, itemUtil.warpList());
inv.setItem(7, itemUtil.resetLand());
inv.setItem(11, itemUtil.looklandlevel(p, butt));
inv.setItem(13, itemUtil.islandlock());
inv.setItem(15, itemUtil.islandlook(butt));
inv.setItem(19, itemUtil.isLandinvite());
inv.setItem(25, itemUtil.islandQuest());
Inventory inv = Bukkit.createInventory(null, 36, invtitle);
Island island = ASkyBlockAPI.getInstance().getIslandAt(p.getLocation());
if (island == null) {
inv = Bukkit.createInventory(null, 9, invtitle);
inv.setItem(1, islandBack());
inv.setItem(3, checkWarpList());
inv.setItem(5, islandInvite());
inv.setItem(8,backMenu());
} else {
inv.setItem(1, islandBack());
inv.setItem(3, setWarp());
inv.setItem(5, checkWarpList());
inv.setItem(7, resetIsland());
inv.setItem(11, islandLevel(island));
inv.setItem(13, islandlock(island));
inv.setItem(15, islandlook(island));
inv.setItem(19, islandInvite());
inv.setItem(25, islandChallenge());
inv.setItem(31,backMenu());
}
p.openInventory(inv);
}
public void SetLocation(String key, Location loc) {
FileConfiguration yml = Main.plugin.getConfig();
yml.set(key + ".world", loc.getWorld().getName());
yml.set(key + ".x", loc.getX());
yml.set(key + ".y", loc.getY());
yml.set(key + ".z", loc.getZ());
yml.set(key + ".yaw", loc.getYaw());
yml.set(key + ".pitch", loc.getPitch());
Main.plugin.saveConfig();
public static ItemStack backMenu() {
ItemStack item = new ItemStack(Material.BOOK);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§a§l返回主页");
item.setItemMeta(meta);
return item;
}
public static ItemStack islandInvite() {
ItemStack item = new ItemStack(Material.SLIME_BALL);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l邀请加入空岛");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§7 自动搜索周围玩家");
lore.add("§r");
lore.add("§6▸ §c点击邀请");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandBack() {
ItemStack item = new ItemStack(Material.GRASS);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l返回空岛");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击返回空岛");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandChallenge() {
ItemStack item = new ItemStack(Material.DIAMOND_CHESTPLATE);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l挑战任务");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击查看");
meta.setLore(lore);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandLevel(Island island) {
ItemStack item = new ItemStack(Material.BEACON);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l岛屿等级");
List<String> lore = new ArrayList<>();
lore.add("§r");
UUID islandOwner = island.getOwner();
lore.add("§7 岛屿主人: §f" + PlayerManage.getUuidToName(islandOwner.toString()));
lore.add("§7 岛屿等级: §f" + ASkyBlockAPI.getInstance().getLongIslandLevel(islandOwner));
lore.add("§r");
lore.add("§6▸ §e点击刷新岛屿等级");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandlook(Island island) {
ItemStack item = new ItemStack(Material.EMPTY_MAP);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l查看空岛成员");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add(" §7岛屿成员:");
List<UUID> uuidList = island.getMembers();
uuidList.remove(0);
for (UUID uuid : uuidList) {
String name = PlayerManage.getUuidToName(uuid.toString());
lore.add(" §f - " + name);
}
lore.add("§r");
lore.add("§6▸ §e点击查看");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandlock(Island island) {
ItemStack item = new ItemStack(Material.EYE_OF_ENDER);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l岛屿保护");
List<String> lore = new ArrayList<>();
lore.add("§r");
if(!island.isLocked()){
lore.add(" §7当前模式: §c封锁中");
}else {
lore.add(" §7当前模式: §f开放中");
item.setType(Material.ENDER_PEARL);
}
lore.add("§r");
lore.add("§6▸ §c点击设置");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack resetIsland() {
ItemStack item = new ItemStack(Material.LAVA_BUCKET);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l重置空岛");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §c点击重置");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack setWarp() {
ItemStack item = new ItemStack(Material.ANVIL);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l设置空岛地标");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击设置");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack checkWarpList() {
ItemStack item = new ItemStack(Material.SIGN);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l空岛地标列表");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add(" §7数量: §f"+Main.gameManage.getWarpDataMap().size()+"");
lore.add("§r");
lore.add("§6▸ §e点击查看");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
}

View File

@ -3,6 +3,7 @@ package me.Demon.AskyBlockWarps.Listener;
import cn.hamster3.cdapi.CDTimeAPI;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import com.wasteofplastic.askyblock.Island;
import com.yaohun.playermanage.PlayerManage;
import de.tr7zw.itemnbtapi.NBTItem;
import me.Demon.AskyBlockWarps.Data.WarpData;
import me.Demon.AskyBlockWarps.Main;
@ -43,7 +44,12 @@ public class WarpGui implements Listener {
p.playSound(p.getLocation(),Sound.BLOCK_COMPARATOR_CLICK,1,1);
NBTItem nbtItem = new NBTItem(item);
if(nbtItem.hasKey("warpKey")){
boolean butt = nbtItem.getBoolean("warpLock");
String warpKey = nbtItem.getString("warpKey");
if(butt){
p.sendMessage(Main.prefix + "您想访问的目标岛屿处于封锁状态,无法访问.");
return;
}
WarpData warpData = Main.gameManage.getWarpData(warpKey);
Location location = warpData.getLocation().add(0,0.5,0);
p.teleport(location);
@ -58,7 +64,10 @@ public class WarpGui implements Listener {
HashMap<String, WarpData> warpDataHashMap = Main.gameManage.getWarpDataMap();
for (String key : warpDataHashMap.keySet()){
WarpData warpData = warpDataHashMap.get(key);
inv.addItem(warpShow(warpData));
ItemStack item = warpShow(warpData);
if(item != null) {
inv.addItem(item);
}
}
p.openInventory(inv);
}
@ -68,14 +77,30 @@ public class WarpGui implements Listener {
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l传送到 §e" + wData.getKey() + " §6§l的空岛");
List<String> lore = new ArrayList<>();
Island island = wData.getIsland();
lore.add(" §7岛屿等级: §f"+island.getLevelHandicap());
Island island = ASkyBlockAPI.getInstance().getIslandAt(wData.getLocation());
if(island != null) {
lore.add(" §7岛屿等级: §f" + ASkyBlockAPI.getInstance().getLongIslandLevel(island.getOwner()));
boolean isBlockade = island.isLocked();
if (isBlockade) {
lore.add(" §7岛屿状态: §c封锁");
} else {
lore.add(" §7岛屿状态: §a开放");
}
lore.add(" §7岛屿成员:");
List<UUID> uuidList = island.getMembers();
for (UUID uuid : uuidList) {
String name = PlayerManage.getUuidToName(uuid.toString());
lore.add(" §f - " + name);
}
lore.add("§r");
lore.add("§6▸ §e点击传送");
meta.setLore(lore);
item.setItemMeta(meta);
NBTItem nbtItem = new NBTItem(item);
nbtItem.setString("warpKey", wData.getKey());
nbtItem.setBoolean("warpLock", isBlockade);
return nbtItem.getItem();
}
return null;
}
}

View File

@ -1,10 +1,7 @@
package me.Demon.AskyBlockWarps;
import me.Demon.AskyBlockWarps.Command.iswarpCommand;
import me.Demon.AskyBlockWarps.Listener.LandInviteGui;
import me.Demon.AskyBlockWarps.Listener.LandTeamGui;
import me.Demon.AskyBlockWarps.Listener.MainGui;
import me.Demon.AskyBlockWarps.Listener.WarpGui;
import me.Demon.AskyBlockWarps.Listener.*;
import me.Demon.AskyBlockWarps.Manage.GameManage;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -28,28 +25,8 @@ public class Main extends JavaPlugin {
Bukkit.getServer().getPluginManager().registerEvents(new WarpGui(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new LandTeamGui(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new LandInviteGui(), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new AcceptGui(), plugin);
getCommand("iswarps").setExecutor(new iswarpCommand());
getCommand("iswarps").setTabCompleter(new iswarpCommand());
}
@Override
public void onDisable() {
}
public static String convertUUIDToName(UUID uuid) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(uuid);
return offlinePlayer.getName();
}
public static Location LandWarpLoc(String playName) {
FileConfiguration yml = Main.plugin.getConfig();
String w = yml.getString("Stats." + playName + ".world");
double x = yml.getDouble("Stats." + playName + ".x");
double y = yml.getDouble("Stats." + playName + ".y");
double z = yml.getDouble("Stats." + playName + ".z");
float pi = (float) yml.getDouble("Stats." + playName + ".pitch");
float ya = (float) yml.getDouble("Stats." + playName + ".yaw");
return new Location(Bukkit.getWorld(w), x, y, z, ya, pi);
}
}

View File

@ -54,14 +54,6 @@ public class GameManage {
Main.plugin.saveConfig();
}
// 获取这个传送点是否开启
public boolean getWarpSwitch(String key){
if(warpDataMap.get(key) == null){
return false;
}
return warpDataMap.get(key).isLocSwitch();
}
// 获取这个坐标点的坐标
public Location getWarpLoc(String key){
if(warpDataMap.get(key) == null){

View File

@ -26,154 +26,4 @@ public class itemUtil {
item.setItemMeta(meta);
return item;
}
public static ItemStack addTeam(String name) {
ItemStack item = new ItemStack(Material.SIGN);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l玩家 §e" + name);
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§c 请勿随意点击");
lore.add("§c 请勿随意点击");
lore.add("§c 请勿随意点击");
lore.add("§r");
lore.add("§6▸ §e点击邀请加入岛屿");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack warpShow(String name) {
ItemStack item = new ItemStack(Material.SIGN);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l传送到 §e" + name + " §6§l的空岛");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击传送");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack looklandlevel(Player p,boolean butt) {
ItemStack item = new ItemStack(Material.BEACON);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l岛屿等级");
List<String> lore = new ArrayList<>();
lore.add("§r");
if (butt) {
lore.add("§7 您的岛屿等级: §f" + ASkyBlockAPI.getInstance().getLongIslandLevel(p.getUniqueId()));
} else {
lore.add("§7 没有属于您的岛屿");
}
lore.add("§r");
lore.add("§6▸ §e点击查看空岛排行");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack backisland(boolean butt) {
ItemStack item = new ItemStack(Material.ENDER_PORTAL_FRAME);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l返回空岛");
List<String> lore = new ArrayList<>();
lore.add("§r");
if (butt) {
lore.add("§6▸ §e点击返回空岛");
} else {
lore.add("§6▸ §c点击创建空岛");
}
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack isLandinvite() {
ItemStack item = new ItemStack(Material.SLIME_BALL);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l邀请加入空岛");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §c点击邀请");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandlook(boolean butt) {
ItemStack item = new ItemStack(Material.EMPTY_MAP);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l查看空岛成员");
List<String> lore = new ArrayList<>();
lore.add("§r");
if (butt) {
lore.add("§6▸ §e点击查看");
} else {
lore.add("§6▸ §e没有属于您的岛屿");
}
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandlock() {
ItemStack item = new ItemStack(Material.WATCH);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§c§l锁定岛屿");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §c点击锁定");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack resetLand() {
ItemStack item = new ItemStack(Material.LAVA_BUCKET);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l重置空岛");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §c点击重置");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack setWarp() {
ItemStack item = new ItemStack(Material.ANVIL);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l设置空岛地标");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击设置");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack warpList() {
ItemStack item = new ItemStack(Material.SIGN);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l空岛地标列表");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击查看");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
public static ItemStack islandQuest() {
ItemStack item = new ItemStack(Material.BOOK);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6§l挑战任务");
List<String> lore = new ArrayList<>();
lore.add("§r");
lore.add("§6▸ §e点击查看");
meta.setLore(lore);
item.setItemMeta(meta);
return item;
}
}

View File

@ -1,5 +1,5 @@
name: AskyBlockWarps
main: me.Demon.AskyBlockWarps.Main
version: 1.0
version: 1.1.0
commands:
iswarps: