Compare commits
	
		
			2 Commits
		
	
	
		
			f5ce425677
			...
			f50a7a02e5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | f50a7a02e5 | ||
|   | 0d0a662ef8 | 
							
								
								
									
										10
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								pom.xml
									
									
									
									
									
								
							|  | @ -47,6 +47,16 @@ | ||||||
|             <artifactId>NBT-API</artifactId> |             <artifactId>NBT-API</artifactId> | ||||||
|             <version>1.12.2</version> |             <version>1.12.2</version> | ||||||
|         </dependency> |         </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> |     </dependencies> | ||||||
| 
 | 
 | ||||||
| </project> | </project> | ||||||
|  | @ -14,8 +14,6 @@ public class WarpData { | ||||||
| 
 | 
 | ||||||
|     private String key; |     private String key; | ||||||
|     private Location location; |     private Location location; | ||||||
|     private boolean locSwitch; |  | ||||||
|     private Island island; |  | ||||||
| 
 | 
 | ||||||
|     public WarpData(String key){ |     public WarpData(String key){ | ||||||
|         FileConfiguration yml = Main.plugin.getConfig(); |         FileConfiguration yml = Main.plugin.getConfig(); | ||||||
|  | @ -33,19 +31,15 @@ public class WarpData { | ||||||
|         float yaw = (float) yml.getDouble(string+"yaw"); |         float yaw = (float) yml.getDouble(string+"yaw"); | ||||||
|         float pitch = (float) yml.getDouble(string+"pitch"); |         float pitch = (float) yml.getDouble(string+"pitch"); | ||||||
|         this.location = new Location(world,x,y,z,yaw,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){ |     public WarpData(String key,Location location){ | ||||||
|         this.key = key; |         this.key = key; | ||||||
|         this.location = location; |         this.location = location; | ||||||
|         this.locSwitch = true; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void SaveData(){ |     public void SaveData(){ | ||||||
|         FileConfiguration yml = Main.plugin.getConfig(); |         FileConfiguration yml = Main.plugin.getConfig(); | ||||||
|         String string = "Stats."+key+"."; |         String string = "Stats."+key+"."; | ||||||
|         yml.set(string+"switch",this.locSwitch); |  | ||||||
|         yml.set(string+"world",location.getWorld().getName()); |         yml.set(string+"world",location.getWorld().getName()); | ||||||
|         yml.set(string+"x",location.getX()); |         yml.set(string+"x",location.getX()); | ||||||
|         yml.set(string+"y",location.getY()); |         yml.set(string+"y",location.getY()); | ||||||
|  | @ -66,12 +60,4 @@ public class WarpData { | ||||||
|     public void setLocation(Location location) { |     public void setLocation(Location location) { | ||||||
|         this.location = location; |         this.location = location; | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     public boolean isLocSwitch() { |  | ||||||
|         return locSwitch; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public Island getIsland() { |  | ||||||
|         return island; |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -1,19 +1,26 @@ | ||||||
| package me.Demon.AskyBlockWarps.Listener; | package me.Demon.AskyBlockWarps.Listener; | ||||||
| 
 | 
 | ||||||
|  | import cn.hamster3.cdapi.CDTimeAPI; | ||||||
| import com.wasteofplastic.askyblock.ASkyBlockAPI; | import com.wasteofplastic.askyblock.ASkyBlockAPI; | ||||||
|  | import de.tr7zw.itemnbtapi.NBTItem; | ||||||
| import me.Demon.AskyBlockWarps.Main; | import me.Demon.AskyBlockWarps.Main; | ||||||
| import me.Demon.AskyBlockWarps.Util.itemUtil; | import me.Demon.AskyBlockWarps.Util.itemUtil; | ||||||
| import me.Demon.DemonPlugin.DemonAPI; | import me.Demon.DemonPlugin.DemonAPI; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
|  | import org.bukkit.Material; | ||||||
|  | import org.bukkit.Sound; | ||||||
|  | import org.bukkit.World; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
| import org.bukkit.event.EventHandler; | import org.bukkit.event.EventHandler; | ||||||
| import org.bukkit.event.Listener; | import org.bukkit.event.Listener; | ||||||
| import org.bukkit.event.inventory.InventoryClickEvent; | import org.bukkit.event.inventory.InventoryClickEvent; | ||||||
| import org.bukkit.inventory.Inventory; | import org.bukkit.inventory.Inventory; | ||||||
| import org.bukkit.inventory.ItemStack; | import org.bukkit.inventory.ItemStack; | ||||||
|  | import org.bukkit.inventory.meta.ItemMeta; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.UUID; | ||||||
| 
 | 
 | ||||||
| public class LandInviteGui implements Listener { | public class LandInviteGui implements Listener { | ||||||
|     public static String invtitle = "帝国战争 - 成员邀请"; |     public static String invtitle = "帝国战争 - 成员邀请"; | ||||||
|  | @ -23,14 +30,23 @@ public class LandInviteGui implements Listener { | ||||||
|         Player p = (Player) e.getWhoClicked(); |         Player p = (Player) e.getWhoClicked(); | ||||||
|         if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) { |         if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) { | ||||||
|             e.setCancelled(true); |             e.setCancelled(true); | ||||||
|  |             if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize()) { | ||||||
|                 ItemStack item = e.getCurrentItem(); |                 ItemStack item = e.getCurrentItem(); | ||||||
|             if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize() && !DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) { |                 if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) { | ||||||
|                 if (ASkyBlockAPI.getInstance().getOwner(p.getLocation()).equals(p.getUniqueId())) { |                     NBTItem nbtItem = new NBTItem(item); | ||||||
|                     String playName = item.getItemMeta().getDisplayName().replace("§6§l玩家 §e", ""); |                     if (nbtItem.hasKey("inviteName")) { | ||||||
|                     p.performCommand("is invite " + playName); |  | ||||||
|                 } else { |  | ||||||
|                     p.sendMessage(Main.prefix + "您不是岛主,没权限邀请玩家加入岛屿."); |  | ||||||
|                         p.closeInventory(); |                         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); |         Inventory inv = Bukkit.createInventory(null, 54, invtitle); | ||||||
|         // 获取玩家附近20格内的所有玩家 |         // 获取玩家附近20格内的所有玩家 | ||||||
|         List<Player> nearbyPlayers = new ArrayList<>(); |         List<Player> nearbyPlayers = new ArrayList<>(); | ||||||
|         for (Player nearbyPlayer : Bukkit.getServer().getOnlinePlayers()) { |         World world = p.getWorld(); | ||||||
|             if (p.getWorld().equals(nearbyPlayer.getWorld())) { // 确保玩家在同一世界 |         for (Player nearbyPlayer : world.getPlayers()) { | ||||||
|                 if (p.getLocation().distance(nearbyPlayer.getLocation()) <= 20) { |             if (p.getLocation().distance(nearbyPlayer.getLocation()) <= 50) { | ||||||
|  |                 // 判断这个玩家是否已加入岛屿 | ||||||
|  |                 if(!ASkyBlockAPI.getInstance().hasIsland(nearbyPlayer.getUniqueId())) { | ||||||
|                     nearbyPlayers.add(nearbyPlayer); |                     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) { |         for (Player nearbyPlayer : nearbyPlayers) { | ||||||
|             if (!p.equals(nearbyPlayer)) { // 避免将玩家自己添加到GUI中 |             if (!p.equals(nearbyPlayer)) { // 避免将玩家自己添加到GUI中 | ||||||
|                 inv.addItem(itemUtil.addTeam(nearbyPlayer.getName())); |                 inv.addItem(addTeam(nearbyPlayer.getName())); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         p.openInventory(inv); |         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(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,17 +1,26 @@ | ||||||
| package me.Demon.AskyBlockWarps.Listener; | package me.Demon.AskyBlockWarps.Listener; | ||||||
| 
 | 
 | ||||||
| import com.wasteofplastic.askyblock.ASkyBlockAPI; | 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.Main; | ||||||
| import me.Demon.AskyBlockWarps.Util.itemUtil; | import me.Demon.AskyBlockWarps.Util.itemUtil; | ||||||
| import me.Demon.DemonPlugin.DemonAPI; | import me.Demon.DemonPlugin.DemonAPI; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
|  | import org.bukkit.Location; | ||||||
|  | import org.bukkit.Material; | ||||||
|  | import org.bukkit.Sound; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
| import org.bukkit.event.EventHandler; | import org.bukkit.event.EventHandler; | ||||||
| import org.bukkit.event.Listener; | import org.bukkit.event.Listener; | ||||||
| import org.bukkit.event.inventory.InventoryClickEvent; | import org.bukkit.event.inventory.InventoryClickEvent; | ||||||
| import org.bukkit.inventory.Inventory; | import org.bukkit.inventory.Inventory; | ||||||
| import org.bukkit.inventory.ItemStack; | import org.bukkit.inventory.ItemStack; | ||||||
|  | import org.bukkit.inventory.meta.ItemMeta; | ||||||
| 
 | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
| import java.util.UUID; | import java.util.UUID; | ||||||
| 
 | 
 | ||||||
| public class LandTeamGui implements Listener { | public class LandTeamGui implements Listener { | ||||||
|  | @ -19,27 +28,89 @@ public class LandTeamGui implements Listener { | ||||||
| 
 | 
 | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onclick(InventoryClickEvent e) { |     public void onclick(InventoryClickEvent e) { | ||||||
|  |         int rawSlot = e.getRawSlot(); | ||||||
|  |         Inventory inv = e.getInventory(); | ||||||
|         Player p = (Player) e.getWhoClicked(); |         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); |             e.setCancelled(true); | ||||||
|             ItemStack item = e.getCurrentItem(); |             ItemStack item = e.getCurrentItem(); | ||||||
|             if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize() && !DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) { |             if (rawSlot >= 0 && rawSlot < inv.getSize()) { | ||||||
|                 if (ASkyBlockAPI.getInstance().getIslandAt(p.getLocation()).equals(p.getUniqueId())) { |                 if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) { | ||||||
|                     String playName = item.getItemMeta().getDisplayName().replace("§6§l成员 §e", ""); |                     NBTItem nbtItem = new NBTItem(item); | ||||||
|                     p.performCommand("is expel " + playName); |                     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) { |     public static void Opengui(Player p) { | ||||||
|         Inventory inv = Bukkit.createInventory(null, 27, invtitle); |         Inventory inv = Bukkit.createInventory(null, 27, invtitle); | ||||||
|         for (UUID uid : ASkyBlockAPI.getInstance().getTeamMembers(p.getUniqueId())) { |         Island island = ASkyBlockAPI.getInstance().getIslandAt(p.getLocation()); | ||||||
|             inv.addItem(itemUtil.teamList(Main.convertUUIDToName(uid))); |         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); |         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(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,21 +2,30 @@ package me.Demon.AskyBlockWarps.Listener; | ||||||
| 
 | 
 | ||||||
| import cn.hamster3.cdapi.CDTimeAPI; | import cn.hamster3.cdapi.CDTimeAPI; | ||||||
| import com.wasteofplastic.askyblock.ASkyBlockAPI; | 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.Main; | ||||||
| import me.Demon.AskyBlockWarps.Manage.GameManage; | import me.Demon.AskyBlockWarps.Manage.GameManage; | ||||||
| import me.Demon.AskyBlockWarps.Util.itemUtil; | import me.Demon.AskyBlockWarps.Util.itemUtil; | ||||||
| import me.Demon.DemonPlugin.DemonAPI; | import me.Demon.DemonPlugin.DemonAPI; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.Location; | import org.bukkit.Location; | ||||||
|  | import org.bukkit.Material; | ||||||
| import org.bukkit.Sound; | import org.bukkit.Sound; | ||||||
| import org.bukkit.configuration.file.FileConfiguration; | import org.bukkit.configuration.file.FileConfiguration; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  | import org.bukkit.entity.Vex; | ||||||
| import org.bukkit.event.EventHandler; | import org.bukkit.event.EventHandler; | ||||||
| import org.bukkit.event.Listener; | import org.bukkit.event.Listener; | ||||||
| import org.bukkit.event.inventory.InventoryClickEvent; | import org.bukkit.event.inventory.InventoryClickEvent; | ||||||
| import org.bukkit.inventory.Inventory; | import org.bukkit.inventory.Inventory; | ||||||
|  | import org.bukkit.inventory.ItemFlag; | ||||||
| import org.bukkit.inventory.ItemStack; | import org.bukkit.inventory.ItemStack; | ||||||
|  | import org.bukkit.inventory.meta.ItemMeta; | ||||||
| 
 | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
| import java.util.UUID; | import java.util.UUID; | ||||||
| 
 | 
 | ||||||
| public class MainGui implements Listener { | public class MainGui implements Listener { | ||||||
|  | @ -27,103 +36,278 @@ public class MainGui implements Listener { | ||||||
|         int rawSlot = e.getRawSlot(); |         int rawSlot = e.getRawSlot(); | ||||||
|         Inventory inv = e.getInventory(); |         Inventory inv = e.getInventory(); | ||||||
|         Player p = (Player) e.getWhoClicked(); |         Player p = (Player) e.getWhoClicked(); | ||||||
|  |         Location location = p.getLocation(); | ||||||
|         String name = p.getName(); |         String name = p.getName(); | ||||||
|         if (inv != null && inv.getTitle().contains(invtitle)) { |         if (inv != null && inv.getTitle().contains(invtitle)) { | ||||||
|             e.setCancelled(true); |             e.setCancelled(true); | ||||||
|             if (rawSlot >= 0 && rawSlot < inv.getSize()) { |             if (rawSlot >= 0 && rawSlot < inv.getSize()) { | ||||||
|                 UUID islandOwner = ASkyBlockAPI.getInstance().getOwner(p.getLocation()); |                 ItemStack item = e.getCurrentItem(); | ||||||
|                 if (e.getRawSlot() == 1) { |                 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.performCommand("is"); | ||||||
|                     p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F); |                     p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F); | ||||||
|                     p.closeInventory(); |                     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()); |                     Main.gameManage.setWarpLoc(name,p.getLocation()); | ||||||
|                     p.sendMessage(Main.prefix + "设置空岛地标点成功."); |                     p.sendMessage(Main.prefix + "设置空岛地标点成功."); | ||||||
|                             CDTimeAPI.setPlayerCD(p.getUniqueId(), "islandsetwarp", 1000 * 3); |                     CDTimeAPI.setPlayerCD(p.getUniqueId(), "islandsetwarp", 1000 * 5); | ||||||
|                             p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F); |                     p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.6F, 1.8F); | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  |                 if(itemName.contains("重置空岛")){ | ||||||
|                     p.closeInventory(); |                     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请联系群客服进行重置"); |                     DemonAPI.sendTitle(p, 10, 20, 10, "§c§l空岛重置", "§6请联系群客服进行重置"); | ||||||
|                     p.sendMessage(Main.prefix + "请联系客服进行空岛重置报备!!!"); |                     p.sendMessage(Main.prefix + "需要重置岛屿,请联系群内客服申请报备!!!"); | ||||||
|                     p.sendMessage(Main.prefix + "请联系客服进行空岛重置报备!!!"); |                     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.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 1.6F, 1.8F); | ||||||
|                     p.closeInventory(); |                     return; | ||||||
|                 } |                 } | ||||||
| 
 |                 if(itemName.contains("岛屿等级")){ | ||||||
|                 if (e.getRawSlot() == 11) { |  | ||||||
|                     p.performCommand("is top"); |  | ||||||
|                     p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F); |  | ||||||
|                     p.closeInventory(); |                     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()); |                     Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "asadmin lock " + p.getName()); | ||||||
|                     p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F); |                     p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.6F, 1.8F); | ||||||
|                     p.closeInventory(); |                     return; | ||||||
|                 } |                 } | ||||||
| 
 |                 if(itemName.contains("查看空岛成员")){ | ||||||
|                 if (e.getRawSlot() == 15) { |  | ||||||
|                     LandTeamGui.Opengui(p); |                     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) { |                 if(itemName.contains("挑战任务")){ | ||||||
|                     LandInviteGui.Opengui(p); |  | ||||||
|                     p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 2.0F); |  | ||||||
|                 } |  | ||||||
|                 if (e.getRawSlot() == 25) { |  | ||||||
|                     p.performCommand("challenge"); |                     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) { |     public static void Opengui(Player p) { | ||||||
|         Inventory inv = Bukkit.createInventory(null, 27, invtitle); |         Inventory inv = Bukkit.createInventory(null, 36, invtitle); | ||||||
|         boolean butt = ASkyBlockAPI.getInstance().hasIsland(p.getUniqueId()); |         Island island = ASkyBlockAPI.getInstance().getIslandAt(p.getLocation()); | ||||||
| 
 |         if (island == null) { | ||||||
|         inv.setItem(1, itemUtil.backisland(butt)); |             inv = Bukkit.createInventory(null, 9, invtitle); | ||||||
|         inv.setItem(3, itemUtil.setWarp()); |             inv.setItem(1, islandBack()); | ||||||
|         inv.setItem(5, itemUtil.warpList()); |             inv.setItem(3, checkWarpList()); | ||||||
|         inv.setItem(7, itemUtil.resetLand()); |             inv.setItem(5, islandInvite()); | ||||||
|         inv.setItem(11, itemUtil.looklandlevel(p, butt)); |             inv.setItem(8,backMenu()); | ||||||
|         inv.setItem(13, itemUtil.islandlock()); |         } else { | ||||||
|         inv.setItem(15, itemUtil.islandlook(butt)); |             inv.setItem(1, islandBack()); | ||||||
|         inv.setItem(19, itemUtil.isLandinvite()); |             inv.setItem(3, setWarp()); | ||||||
|         inv.setItem(25, itemUtil.islandQuest()); |             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); |         p.openInventory(inv); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void SetLocation(String key, Location loc) { |     public static ItemStack backMenu() { | ||||||
|         FileConfiguration yml = Main.plugin.getConfig(); |         ItemStack item = new ItemStack(Material.BOOK); | ||||||
|         yml.set(key + ".world", loc.getWorld().getName()); |         ItemMeta meta = item.getItemMeta(); | ||||||
|         yml.set(key + ".x", loc.getX()); |         meta.setDisplayName("§a§l返回主页"); | ||||||
|         yml.set(key + ".y", loc.getY()); |         item.setItemMeta(meta); | ||||||
|         yml.set(key + ".z", loc.getZ()); |         return item; | ||||||
|         yml.set(key + ".yaw", loc.getYaw()); |  | ||||||
|         yml.set(key + ".pitch", loc.getPitch()); |  | ||||||
|         Main.plugin.saveConfig(); |  | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     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; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,11 +3,14 @@ package me.Demon.AskyBlockWarps.Listener; | ||||||
| import cn.hamster3.cdapi.CDTimeAPI; | import cn.hamster3.cdapi.CDTimeAPI; | ||||||
| import com.wasteofplastic.askyblock.ASkyBlockAPI; | import com.wasteofplastic.askyblock.ASkyBlockAPI; | ||||||
| import com.wasteofplastic.askyblock.Island; | 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.Data.WarpData; | ||||||
| import me.Demon.AskyBlockWarps.Main; | import me.Demon.AskyBlockWarps.Main; | ||||||
| import me.Demon.AskyBlockWarps.Util.itemUtil; | import me.Demon.AskyBlockWarps.Util.itemUtil; | ||||||
| import me.Demon.DemonPlugin.DemonAPI; | import me.Demon.DemonPlugin.DemonAPI; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
|  | import org.bukkit.Location; | ||||||
| import org.bukkit.Material; | import org.bukkit.Material; | ||||||
| import org.bukkit.Sound; | import org.bukkit.Sound; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  | @ -28,22 +31,29 @@ public class WarpGui implements Listener { | ||||||
| 
 | 
 | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onclick(InventoryClickEvent e) { |     public void onclick(InventoryClickEvent e) { | ||||||
|  |         int rawSlot = e.getRawSlot(); | ||||||
|  |         Inventory inv = e.getInventory(); | ||||||
|         Player p = (Player) e.getWhoClicked(); |         Player p = (Player) e.getWhoClicked(); | ||||||
|  |         String name = p.getName(); | ||||||
|         if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) { |         if (e.getInventory() != null && e.getInventory().getTitle().contains(invtitle)) { | ||||||
|             e.setCancelled(true); |             e.setCancelled(true); | ||||||
|             ItemStack item = e.getCurrentItem(); |             ItemStack item = e.getCurrentItem(); | ||||||
|             if (e.getRawSlot() >= 0 && e.getRawSlot() < e.getInventory().getSize() && !DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) { |             if (rawSlot >= 0 && rawSlot < inv.getSize()) { | ||||||
|                 if (CDTimeAPI.getCD(p.getUniqueId(), "islandwarptp") < 0) { |                 if(DemonAPI.itemIsNull(item)){return;} | ||||||
|                     String playName = item.getItemMeta().getDisplayName().replace("§6§l传送到 §e", "").replace(" §6§l的空岛",""); |  | ||||||
|                     UUID islandOwner = ASkyBlockAPI.getInstance().getOwner(p.getLocation()); |  | ||||||
|                     p.teleport(Main.LandWarpLoc(playName)); |  | ||||||
|                     p.sendMessage(Main.prefix + "您已传送至 §e" + Main.convertUUIDToName(islandOwner) + "§f 的空岛地标旁."); |  | ||||||
|                     CDTimeAPI.setPlayerCD(p.getUniqueId(), "islandwarptp", 1000 * 3); |  | ||||||
|                     p.playSound(p.getLocation(), Sound.ENTITY_ENDEREYE_DEATH, 1.0F, 2.0F); |  | ||||||
|                     p.closeInventory(); |  | ||||||
|                 } else { |  | ||||||
|                     p.sendMessage(Main.prefix + "空岛地标传送冷却中..."); |  | ||||||
|                 p.closeInventory(); |                 p.closeInventory(); | ||||||
|  |                 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); | ||||||
|  |                     p.sendMessage(Main.prefix + "您已传送至 §e" + warpKey + "§f 的空岛地标旁."); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | @ -54,7 +64,10 @@ public class WarpGui implements Listener { | ||||||
|         HashMap<String, WarpData> warpDataHashMap = Main.gameManage.getWarpDataMap(); |         HashMap<String, WarpData> warpDataHashMap = Main.gameManage.getWarpDataMap(); | ||||||
|         for (String key : warpDataHashMap.keySet()){ |         for (String key : warpDataHashMap.keySet()){ | ||||||
|             WarpData warpData = warpDataHashMap.get(key); |             WarpData warpData = warpDataHashMap.get(key); | ||||||
|             inv.addItem(warpShow(warpData)); |             ItemStack item = warpShow(warpData); | ||||||
|  |             if(item != null) { | ||||||
|  |                 inv.addItem(item); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|         p.openInventory(inv); |         p.openInventory(inv); | ||||||
|     } |     } | ||||||
|  | @ -64,12 +77,30 @@ public class WarpGui implements Listener { | ||||||
|         ItemMeta meta = item.getItemMeta(); |         ItemMeta meta = item.getItemMeta(); | ||||||
|         meta.setDisplayName("§6§l传送到 §e" + wData.getKey() + " §6§l的空岛"); |         meta.setDisplayName("§6§l传送到 §e" + wData.getKey() + " §6§l的空岛"); | ||||||
|         List<String> lore = new ArrayList<>(); |         List<String> lore = new ArrayList<>(); | ||||||
|         Island island = wData.getIsland(); |         Island island = ASkyBlockAPI.getInstance().getIslandAt(wData.getLocation()); | ||||||
|         lore.add(" §7岛屿等级: §f"+island.getLevelHandicap()); |         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("§r"); | ||||||
|             lore.add("§6▸ §e点击传送"); |             lore.add("§6▸ §e点击传送"); | ||||||
|             meta.setLore(lore); |             meta.setLore(lore); | ||||||
|             item.setItemMeta(meta); |             item.setItemMeta(meta); | ||||||
|         return item; |             NBTItem nbtItem = new NBTItem(item); | ||||||
|  |             nbtItem.setString("warpKey", wData.getKey()); | ||||||
|  |             nbtItem.setBoolean("warpLock", isBlockade); | ||||||
|  |             return nbtItem.getItem(); | ||||||
|  |         } | ||||||
|  |         return null; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,10 +1,7 @@ | ||||||
| package me.Demon.AskyBlockWarps; | package me.Demon.AskyBlockWarps; | ||||||
| 
 | 
 | ||||||
| import me.Demon.AskyBlockWarps.Command.iswarpCommand; | import me.Demon.AskyBlockWarps.Command.iswarpCommand; | ||||||
| import me.Demon.AskyBlockWarps.Listener.LandInviteGui; | import me.Demon.AskyBlockWarps.Listener.*; | ||||||
| import me.Demon.AskyBlockWarps.Listener.LandTeamGui; |  | ||||||
| import me.Demon.AskyBlockWarps.Listener.MainGui; |  | ||||||
| import me.Demon.AskyBlockWarps.Listener.WarpGui; |  | ||||||
| import me.Demon.AskyBlockWarps.Manage.GameManage; | import me.Demon.AskyBlockWarps.Manage.GameManage; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.Location; | 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 WarpGui(), plugin); | ||||||
|         Bukkit.getServer().getPluginManager().registerEvents(new LandTeamGui(), plugin); |         Bukkit.getServer().getPluginManager().registerEvents(new LandTeamGui(), plugin); | ||||||
|         Bukkit.getServer().getPluginManager().registerEvents(new LandInviteGui(), plugin); |         Bukkit.getServer().getPluginManager().registerEvents(new LandInviteGui(), plugin); | ||||||
|  |         Bukkit.getServer().getPluginManager().registerEvents(new AcceptGui(), plugin); | ||||||
|         getCommand("iswarps").setExecutor(new iswarpCommand()); |         getCommand("iswarps").setExecutor(new iswarpCommand()); | ||||||
|         getCommand("iswarps").setTabCompleter(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); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -54,14 +54,6 @@ public class GameManage { | ||||||
|         Main.plugin.saveConfig(); |         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){ |     public Location getWarpLoc(String key){ | ||||||
|         if(warpDataMap.get(key) == null){ |         if(warpDataMap.get(key) == null){ | ||||||
|  |  | ||||||
|  | @ -26,154 +26,4 @@ public class itemUtil { | ||||||
|         item.setItemMeta(meta); |         item.setItemMeta(meta); | ||||||
|         return item; |         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; |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| name: AskyBlockWarps | name: AskyBlockWarps | ||||||
| main: me.Demon.AskyBlockWarps.Main | main: me.Demon.AskyBlockWarps.Main | ||||||
| version: 1.0 | version: 1.1.0 | ||||||
| commands: | commands: | ||||||
|   iswarps: |   iswarps: | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user