A claim plugin based on FTB Chunks
at master 233 lines 12 kB view raw
1package dev.keii.keiichunks.events; 2 3import dev.keii.keiichunks.PlayerChunk; 4import dev.keii.keiichunks.saveload.User; 5import dev.keii.keiichunks.inventories.InventoryChunkPermission; 6import dev.keii.keiichunks.inventories.InventoryMap; 7import dev.keii.keiichunks.inventories.InventoryModifyChunk; 8import dev.keii.keiichunks.inventories.InventoryModifyChunkPermission; 9import net.kyori.adventure.text.Component; 10import net.kyori.adventure.text.format.NamedTextColor; 11import org.bukkit.Bukkit; 12import org.bukkit.Chunk; 13import org.bukkit.entity.Player; 14import org.bukkit.event.EventHandler; 15import org.bukkit.event.Listener; 16import org.bukkit.event.inventory.InventoryClickEvent; 17import org.bukkit.inventory.Inventory; 18import org.joml.Vector2i; 19 20import java.util.HashMap; 21import java.util.List; 22import java.util.Map; 23import java.util.Objects; 24 25public class InventoryClick implements Listener { 26 public static Map<String, Vector2i> modifyChunk = new HashMap<>(); 27 public static Map<String, Integer> modifyChunkPermissionUser = new HashMap<>(); 28 29 @EventHandler 30 public void onInventoryClick(InventoryClickEvent event) 31 { 32 Inventory inventory = event.getInventory(); 33 34 if(inventory.getHolder() instanceof InventoryMap) { 35 event.setCancelled(true); 36 Player player = (Player)event.getWhoClicked(); 37 38 if(event.getCurrentItem() == null) 39 { 40 return; 41 } 42 43 List<String> lore = Objects.requireNonNull(event.getCurrentItem()).getLore(); 44 45 Integer chunkX = null; 46 Integer chunkZ = null; 47 48 for(String line : Objects.requireNonNull(lore)) 49 { 50 if(line.startsWith("ChunkX")) { 51 String[] split = line.split(","); 52 chunkX = Integer.parseInt(split[0].substring(8)); 53 chunkZ = Integer.parseInt(split[1].substring(9)); 54 } 55 } 56 57 if(chunkX != null) 58 { 59 String owner = PlayerChunk.getChunkOwnerUUID(event.getWhoClicked().getWorld().getChunkAt(chunkX, chunkZ)); 60 if(owner != null) { 61 if(owner.equals(player.getUniqueId().toString())) { 62 player.closeInventory(); 63 InventoryModifyChunk mc = new InventoryModifyChunk(); 64 InventoryClick.modifyChunk.remove(player.getUniqueId().toString()); 65 InventoryClick.modifyChunk.put(player.getUniqueId().toString(), new Vector2i(chunkX, chunkZ)); 66 player.openInventory(mc.getInventory()); 67 } 68 return; 69 } 70 71 if(PlayerChunk.claimChunk(player, event.getWhoClicked().getWorld().getChunkAt(chunkX, chunkZ))) { 72 PlayerChunk.addChunkPermissionsForUser(player, null, event.getWhoClicked().getWorld().getChunkAt(chunkX, chunkZ)); 73 player.sendMessage(Component.text("Claimed Chunk").color(NamedTextColor.YELLOW)); 74 } else { 75 player.sendMessage(Component.text("Failed to claim chunk").color(NamedTextColor.RED)); 76 } 77 78 player.closeInventory(); 79 InventoryMap map = new InventoryMap(player); 80 player.openInventory(map.getInventory()); 81 } 82 } else if(inventory.getHolder() instanceof InventoryModifyChunk) { 83 event.setCancelled(true); 84 85 int slot = event.getSlot(); 86 if(slot > 17) 87 { 88 slot -= 9; 89 } 90 if(slot > 8) 91 { 92 slot -= 9; 93 } 94 95 Player player = (Player) event.getWhoClicked(); 96 97 Chunk chunk = event.getWhoClicked().getWorld().getChunkAt(modifyChunk.get(player.getUniqueId().toString()).x, modifyChunk.get(player.getUniqueId().toString()).y); 98 99 if(slot > 5) 100 { 101 if(PlayerChunk.unClaimChunk(player, chunk)) { 102 player.sendMessage(Component.text("Unclaimed chunk").color(NamedTextColor.YELLOW)); 103 player.closeInventory(); 104 105 InventoryMap map = new InventoryMap(player); 106 player.openInventory(map.getInventory()); 107 } else { 108 player.sendMessage(Component.text("Failed to unclaim chunk").color(NamedTextColor.RED)); 109 } 110 } else if(slot > 2) 111 { 112 if(!PlayerChunk.toggleExplosionPolicy(player, chunk)) 113 { 114 player.sendMessage(Component.text("Failed to toggle explosions for chunk").color(NamedTextColor.RED)); 115 return; 116 } 117 118 if(PlayerChunk.getExplosionPolicy(chunk)) 119 { 120 player.sendMessage(Component.text("Enabled explosions in chunk").color(NamedTextColor.YELLOW)); 121 } else 122 { 123 player.sendMessage(Component.text("Disabled explosions in chunk").color(NamedTextColor.YELLOW)); 124 } 125 126 127 } else { 128 player.closeInventory(); 129 InventoryChunkPermission cp = new InventoryChunkPermission(chunk); 130 player.openInventory(cp.getInventory()); 131 } 132 133 } else if(inventory.getHolder() instanceof InventoryChunkPermission) 134 { 135 event.setCancelled(true); 136 137 if(event.getCurrentItem() == null) 138 { 139 return; 140 } 141 142 Player player = (Player) event.getWhoClicked(); 143 Chunk chunk = event.getWhoClicked().getWorld().getChunkAt(modifyChunk.get(player.getUniqueId().toString()).x, modifyChunk.get(player.getUniqueId().toString()).y); 144 145 if(event.getCurrentItem().displayName().toString().contains("Everyone")) { 146// player.sendMessage("Found"); 147 modifyChunkPermissionUser.put(player.getUniqueId().toString(), null); 148 149 player.closeInventory(); 150 InventoryModifyChunkPermission mcp = new InventoryModifyChunkPermission(null, chunk); 151 player.openInventory(mcp.getInventory()); 152 } else if (!event.getCurrentItem().displayName().toString().contains("Add User")) { 153 String userid = null; 154 for(var i : Objects.requireNonNull(event.getCurrentItem().lore())) 155 { 156 if(i.toString().contains("User")) { 157 userid = i.toString().split("\"")[1].split(":")[1]; 158 } 159 } 160 if(userid == null) 161 { 162 return; 163 } 164 165 modifyChunkPermissionUser.put(player.getUniqueId().toString(), Integer.parseInt(userid.trim())); 166 167 player.closeInventory(); 168 InventoryModifyChunkPermission mcp = new InventoryModifyChunkPermission(User.getUUIDFromID(Integer.parseInt(userid.trim())), chunk); 169 player.openInventory(mcp.getInventory()); 170 } else { 171 PlayerChat.chunkListener.put(player.getUniqueId().toString(), new ChunkPermissionAddPlayer(chunk)); 172 player.sendMessage(Component.text("Type name of player you wish to add permissions for in chat!").color(NamedTextColor.YELLOW)); 173 player.closeInventory(); 174 } 175 } else if(inventory.getHolder() instanceof InventoryModifyChunkPermission) 176 { 177 event.setCancelled(true); 178 179 Player player = (Player) event.getWhoClicked(); 180 Chunk chunk = event.getWhoClicked().getWorld().getChunkAt(modifyChunk.get(player.getUniqueId().toString()).x, modifyChunk.get(player.getUniqueId().toString()).y); 181 182 if(event.getCurrentItem() == null) 183 { 184 return; 185 } 186 187 String displayName = event.getCurrentItem().displayName().toString(); 188 189 if(modifyChunkPermissionUser.get(player.getUniqueId().toString()) != null) { 190 if (displayName.contains("Interact")) { 191 PlayerChunk.setClaimPermission(player, chunk, User.getUUIDFromID(modifyChunkPermissionUser.get(player.getUniqueId().toString())), PlayerChunk.ChunkPermission.Interact, displayName.contains("Enable")); 192 } else if (displayName.contains("Block Break")) { 193 PlayerChunk.setClaimPermission(player, chunk, User.getUUIDFromID(modifyChunkPermissionUser.get(player.getUniqueId().toString())), PlayerChunk.ChunkPermission.BlockBreak, displayName.contains("Enable")); 194 } else if (displayName.contains("Block Place")) { 195 PlayerChunk.setClaimPermission(player, chunk, User.getUUIDFromID(modifyChunkPermissionUser.get(player.getUniqueId().toString())), PlayerChunk.ChunkPermission.BlockPlace, displayName.contains("Enable")); 196 } else if (displayName.contains("Bucket Empty")) { 197 PlayerChunk.setClaimPermission(player, chunk, User.getUUIDFromID(modifyChunkPermissionUser.get(player.getUniqueId().toString())), PlayerChunk.ChunkPermission.BucketEmpty, displayName.contains("Enable")); 198 } else if (displayName.contains("Bucket Fill")) { 199 PlayerChunk.setClaimPermission(player, chunk, User.getUUIDFromID(modifyChunkPermissionUser.get(player.getUniqueId().toString())), PlayerChunk.ChunkPermission.BucketFill, displayName.contains("Enable")); 200 } 201 } else { 202 if (displayName.contains("Interact")) { 203 PlayerChunk.setClaimPermission(player, chunk, null, PlayerChunk.ChunkPermission.Interact, displayName.contains("Enable")); 204 } else if (displayName.contains("Block Break")) { 205 PlayerChunk.setClaimPermission(player, chunk, null, PlayerChunk.ChunkPermission.BlockBreak, displayName.contains("Enable")); 206 } else if (displayName.contains("Block Place")) { 207 PlayerChunk.setClaimPermission(player, chunk, null, PlayerChunk.ChunkPermission.BlockPlace, displayName.contains("Enable")); 208 } else if (displayName.contains("Bucket Empty")) { 209 PlayerChunk.setClaimPermission(player, chunk, null, PlayerChunk.ChunkPermission.BucketEmpty, displayName.contains("Enable")); 210 } else if (displayName.contains("Bucket Fill")) { 211 PlayerChunk.setClaimPermission(player, chunk, null, PlayerChunk.ChunkPermission.BucketFill, displayName.contains("Enable")); 212 } 213 } 214 215 if(displayName.contains("Back")) 216 { 217 player.closeInventory(); 218 InventoryChunkPermission cp = new InventoryChunkPermission(chunk); 219 player.openInventory(cp.getInventory()); 220 return; 221 } 222 223 player.closeInventory(); 224 if(modifyChunkPermissionUser.get(player.getUniqueId().toString()) != null) { 225 InventoryModifyChunkPermission mcp = new InventoryModifyChunkPermission(User.getUUIDFromID(modifyChunkPermissionUser.get(player.getUniqueId().toString())), chunk); 226 player.openInventory(mcp.getInventory()); 227 } else { 228 InventoryModifyChunkPermission mcp = new InventoryModifyChunkPermission(null, chunk); 229 player.openInventory(mcp.getInventory()); 230 } 231 } 232 } 233}