001/* This file is part of Vault. 002 003 Vault is free software: you can redistribute it and/or modify 004 it under the terms of the GNU Lesser General Public License as published by 005 the Free Software Foundation, either version 3 of the License, or 006 (at your option) any later version. 007 008 Vault is distributed in the hope that it will be useful, 009 but WITHOUT ANY WARRANTY; without even the implied warranty of 010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 011 GNU Lesser General Public License for more details. 012 013 You should have received a copy of the GNU Lesser General Public License 014 along with Vault. If not, see <http://www.gnu.org/licenses/>. 015*/ 016package net.milkbowl.vault.chat; 017 018import net.milkbowl.vault.permission.Permission; 019 020import org.bukkit.World; 021import org.bukkit.entity.Player; 022 023/** 024 * The main Chat API - allows for Prefix/Suffix nodes along with generic Info nodes if the linked Chat system supports them 025 * 026 */ 027public abstract class Chat { 028 029 private Permission perms; 030 031 public Chat(Permission perms) { 032 this.perms = perms; 033 } 034 /** 035 * Gets name of permission method 036 * @return Name of Permission Method 037 */ 038 abstract public String getName(); 039 040 /** 041 * Checks if permission method is enabled. 042 * @return Success or Failure 043 */ 044 abstract public boolean isEnabled(); 045 046 /** 047 * Get players prefix 048 * @param world World name 049 * @param player Player name 050 * @return Prefix 051 */ 052 abstract public String getPlayerPrefix(String world, String player); 053 054 /** 055 * Get players prefix 056 * @param world World Object 057 * @param player Player name 058 * @return Prefix 059 */ 060 public String getPlayerPrefix(World world, String player) { 061 return getPlayerPrefix(world.getName(), player); 062 } 063 064 /** 065 * Get players prefix 066 * @param player Player Object 067 * @return Prefix 068 */ 069 public String getPlayerPrefix(Player player) { 070 return getPlayerPrefix(player.getWorld().getName(), player.getName()); 071 } 072 073 /** 074 * Set players prefix 075 * @param world World name 076 * @param player Player name 077 * @param prefix Prefix 078 */ 079 abstract public void setPlayerPrefix(String world, String player, String prefix); 080 081 /** 082 * Set players prefix 083 * @param world World Object 084 * @param player Player name 085 * @param prefix Prefix 086 */ 087 public void setPlayerPrefix(World world, String player, String prefix) { 088 setPlayerPrefix(world.getName(), player, prefix); 089 } 090 091 /** 092 * Set players prefix 093 * @param player Player Object 094 * @param prefix Prefix 095 */ 096 public void setPlayerPrefix(Player player, String prefix) { 097 setPlayerPrefix(player.getWorld().getName(), player.getName(), prefix); 098 } 099 100 /** 101 * Get players suffix 102 * @param world World name 103 * @param player Player name 104 * @return Suffix 105 */ 106 abstract public String getPlayerSuffix(String world, String player); 107 108 /** 109 * Get players suffix 110 * @param world World Object 111 * @param player Player name 112 * @return Suffix 113 */ 114 public String getPlayerSuffix(World world, String player) { 115 return getPlayerSuffix(world.getName(), player); 116 } 117 118 /** 119 * Get players suffix 120 * @param player Player Object 121 * @return Suffix 122 */ 123 public String getPlayerSuffix(Player player) { 124 return getPlayerSuffix(player.getWorld().getName(), player.getName()); 125 } 126 127 /** 128 * Set players suffix 129 * @param world World name 130 * @param player Player name 131 * @param suffix Suffix 132 */ 133 abstract public void setPlayerSuffix(String world, String player, String suffix); 134 135 /** 136 * Set players suffix 137 * @param world World Object 138 * @param player Player name 139 * @param suffix Suffix 140 */ 141 public void setPlayerSuffix(World world, String player, String suffix) { 142 setPlayerSuffix(world.getName(), player, suffix); 143 } 144 145 /** 146 * Set players suffix 147 * @param player Player Object 148 * @param suffix Suffix 149 */ 150 public void setPlayerSuffix(Player player, String suffix) { 151 setPlayerSuffix(player.getWorld().getName(), player.getName(), suffix); 152 } 153 154 /** 155 * Get group prefix 156 * @param world World name 157 * @param group Group name 158 * @return Prefix 159 */ 160 abstract public String getGroupPrefix(String world, String group); 161 162 /** 163 * Get group prefix 164 * @param world World Object 165 * @param group Group name 166 * @return Prefix 167 */ 168 public String getGroupPrefix(World world, String group) { 169 return getGroupPrefix(world.getName(), group); 170 } 171 172 /** 173 * Set group prefix 174 * @param world World name 175 * @param group Group name 176 * @param prefix Prefix 177 */ 178 abstract public void setGroupPrefix(String world, String group, String prefix); 179 180 /** 181 * Set group prefix 182 * @param world World Object 183 * @param group Group name 184 * @param prefix Prefix 185 */ 186 public void setGroupPrefix(World world, String group, String prefix) { 187 setGroupPrefix(world.getName(), group, prefix); 188 } 189 190 /** 191 * Get group suffix 192 * @param world World name 193 * @param group Group name 194 * @return Suffix 195 */ 196 abstract public String getGroupSuffix(String world, String group); 197 198 /** 199 * Get group suffix 200 * @param world World Object 201 * @param group Group name 202 * @return Suffix 203 */ 204 public String getGroupSuffix(World world, String group) { 205 return getGroupSuffix(world.getName(), group); 206 } 207 208 /** 209 * Set group suffix 210 * @param world World name 211 * @param group Group name 212 * @param suffix Suffix 213 */ 214 abstract public void setGroupSuffix(String world, String group, String suffix); 215 216 /** 217 * Set group suffix 218 * @param world World Object 219 * @param group Group name 220 * @param suffix Suffix 221 */ 222 public void setGroupSuffix(World world, String group, String suffix) { 223 setGroupSuffix(world.getName(), group, suffix); 224 } 225 /** 226 * Get a players informational node (Integer) value 227 * @param world World name 228 * @param player Player name 229 * @param node Permission node 230 * @param defaultValue Default value 231 * @return Value 232 */ 233 abstract public int getPlayerInfoInteger(String world, String player, String node, int defaultValue); 234 235 /** 236 * Get a players informational node (Integer) value 237 * @param world World Object 238 * @param player Player name 239 * @param node Permission node 240 * @param defaultValue Default value 241 * @return Value 242 */ 243 public int getPlayerInfoInteger(World world, String player, String node, int defaultValue) { 244 return getPlayerInfoInteger(world.getName(), player, node, defaultValue); 245 } 246 247 /** 248 * Get a players informational node (Integer) value 249 * @param player Player Object 250 * @param node Permission node 251 * @param defaultValue Default value 252 * @return Value 253 */ 254 public int getPlayerInfoInteger(Player player, String node, int defaultValue) { 255 return getPlayerInfoInteger(player.getWorld().getName(), player.getName(), node, defaultValue); 256 } 257 258 /** 259 * Set a players informational node (Integer) value 260 * @param world World name 261 * @param player Player name 262 * @param node Permission node 263 * @param value Value to set 264 */ 265 abstract public void setPlayerInfoInteger(String world, String player, String node, int value); 266 267 /** 268 * Set a players informational node (Integer) value 269 * @param world World Object 270 * @param player Player name 271 * @param node Permission node 272 * @param value Value to set 273 */ 274 public void setPlayerInfoInteger(World world, String player, String node, int value) { 275 setPlayerInfoInteger(world.getName(), player, node, value); 276 } 277 278 /** 279 * Set a players informational node (Integer) value 280 * @param player Player Object 281 * @param node Permission node 282 * @param value Value to set 283 */ 284 public void setPlayerInfoInteger(Player player, String node, int value) { 285 setPlayerInfoInteger(player.getWorld().getName(), player.getName(), node, value); 286 } 287 288 /** 289 * Get a groups informational node (Integer) value 290 * @param world World name 291 * @param group Group name 292 * @param node Permission node 293 * @param defaultValue Default value 294 * @return Value 295 */ 296 abstract public int getGroupInfoInteger(String world, String group, String node, int defaultValue); 297 298 /** 299 * Get a groups informational node (Integer) value 300 * @param world World Object 301 * @param group Group name 302 * @param node Permission node 303 * @param defaultValue Default value 304 * @return Value 305 */ 306 public int getGroupInfoInteger(World world, String group, String node, int defaultValue) { 307 return getGroupInfoInteger(world.getName(), group, node, defaultValue); 308 } 309 310 /** 311 * Set a groups informational node (Integer) value 312 * @param world World name 313 * @param group Group name 314 * @param node Permission node 315 * @param value Value to set 316 */ 317 abstract public void setGroupInfoInteger(String world, String group, String node, int value); 318 319 /** 320 * Set a groups informational node (Integer) value 321 * @param world World Object 322 * @param group Group name 323 * @param node Permission node 324 * @param value Value to set 325 */ 326 public void setGroupInfoInteger(World world, String group, String node, int value) { 327 setGroupInfoInteger(world.getName(), group, node, value); 328 } 329 330 /** 331 * Get a players informational node (Double) value 332 * @param world World name 333 * @param player Group name 334 * @param node Permission node 335 * @param defaultValue Default value 336 * @return Value 337 */ 338 abstract public double getPlayerInfoDouble(String world, String player, String node, double defaultValue); 339 340 /** 341 * Get a players informational node (Double) value 342 * @param world World Object 343 * @param player Player name 344 * @param node Permission node 345 * @param defaultValue Default value 346 * @return Value 347 */ 348 public double getPlayerInfoDouble(World world, String player, String node, double defaultValue) { 349 return getPlayerInfoDouble(world.getName(), player, node, defaultValue); 350 } 351 352 /** 353 * Get a players informational node (Double) value 354 * @param player Player Object 355 * @param node Permission node 356 * @param defaultValue Default value 357 * @return Value 358 */ 359 public double getPlayerInfoDouble(Player player, String node, double defaultValue) { 360 return getPlayerInfoDouble(player.getWorld().getName(), player.getName(), node, defaultValue); 361 } 362 363 /** 364 * Set a players informational node (Double) value 365 * @param world World name 366 * @param player Group name 367 * @param node Permission node 368 * @param value Value to set 369 */ 370 abstract public void setPlayerInfoDouble(String world, String player, String node, double value); 371 372 /** 373 * Set a players informational node (Double) value 374 * @param world World Object 375 * @param player Player name 376 * @param node Permission node 377 * @param value Value to set 378 */ 379 public void setPlayerInfoDouble(World world, String player, String node, double value) { 380 setPlayerInfoDouble(world.getName(), player, node, value); 381 } 382 383 /** 384 * Set a players informational node (Double) value 385 * @param player Player Object 386 * @param node Permission node 387 * @param value Value to set 388 */ 389 public void setPlayerInfoDouble(Player player, String node, double value) { 390 setPlayerInfoDouble(player.getWorld().getName(), player.getName(), node, value); 391 } 392 393 /** 394 * Get a groups informational node (Double) value 395 * @param world World name 396 * @param group Group name 397 * @param node Permission node 398 * @param defaultValue Default value 399 * @return Value 400 */ 401 abstract public double getGroupInfoDouble(String world, String group, String node, double defaultValue); 402 403 /** 404 * Get a groups informational node (Double) value 405 * @param world World Object 406 * @param group Group name 407 * @param node Permission node 408 * @param defaultValue Default value 409 * @return Value 410 */ 411 public double getGroupInfoDouble(World world, String group, String node, double defaultValue) { 412 return getGroupInfoDouble(world.getName(), group, node, defaultValue); 413 } 414 415 /** 416 * Set a groups informational node (Double) value 417 * @param world World name 418 * @param group Group name 419 * @param node Permission node 420 * @param value Value to set 421 */ 422 abstract public void setGroupInfoDouble(String world, String group, String node, double value); 423 424 /** 425 * Set a groups informational node (Double) value 426 * @param world World Object 427 * @param group Group name 428 * @param node Permission node 429 * @param value Value to set 430 */ 431 public void setGroupInfoDouble(World world, String group, String node, double value) { 432 setGroupInfoDouble(world.getName(), group, node, value); 433 } 434 435 /** 436 * Get a players informational node (Boolean) value 437 * @param world World name 438 * @param player Player name 439 * @param node Permission node 440 * @param defaultValue Default value 441 * @return Value 442 */ 443 abstract public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue); 444 445 /** 446 * Get a players informational node (Boolean) value 447 * @param world World Object 448 * @param player Player name 449 * @param node Permission node 450 * @param defaultValue Default value 451 * @return Value 452 */ 453 public boolean getPlayerInfoBoolean(World world, String player, String node, boolean defaultValue) { 454 return getPlayerInfoBoolean(world.getName(), player, node, defaultValue); 455 } 456 457 /** 458 * Get a players informational node (Boolean) value 459 * @param player Player Object 460 * @param node Permission node 461 * @param defaultValue Default value 462 * @return Value 463 */ 464 public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue) { 465 return getPlayerInfoBoolean(player.getWorld().getName(), player.getName(), node, defaultValue); 466 } 467 468 /** 469 * Set a players informational node (Boolean) value 470 * @param world World name 471 * @param player Player name 472 * @param node Permission node 473 * @param value Value to set 474 */ 475 abstract public void setPlayerInfoBoolean(String world, String player, String node, boolean value); 476 477 /** 478 * Set a players informational node (Boolean) value 479 * @param world World Object 480 * @param player Player name 481 * @param node Permission node 482 * @param value Value to set 483 */ 484 public void setPlayerInfoBoolean(World world, String player, String node, boolean value) { 485 setPlayerInfoBoolean(world.getName(), player, node, value); 486 } 487 488 /** 489 * Set a players informational node (Boolean) value 490 * @param player Player Object 491 * @param node Permission node 492 * @param value Value to set 493 */ 494 public void setPlayerInfoBoolean(Player player, String node, boolean value) { 495 setPlayerInfoBoolean(player.getWorld().getName(), player.getName(), node, value); 496 } 497 498 /** 499 * Get a groups informational node (Boolean) value 500 * @param world Name of World 501 * @param group Name of Group 502 * @param node Permission node 503 * @param defaultValue Default value 504 * @return Value 505 */ 506 abstract public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue); 507 508 /** 509 * Set a players informational node (Boolean) value 510 * @param world World Object 511 * @param group Group name 512 * @param node Permission node 513 * @param defaultValue Default value 514 * @return Value 515 */ 516 public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue) { 517 return getGroupInfoBoolean(world.getName(), group, node, defaultValue); 518 } 519 520 /** 521 * Set a groups informational node (Boolean) value 522 * @param world World name 523 * @param group Group name 524 * @param node Permission node 525 * @param value Value to set 526 */ 527 abstract public void setGroupInfoBoolean(String world, String group, String node, boolean value); 528 529 /** 530 * Set a players informational node (Boolean) value 531 * @param world World Object 532 * @param group Group name 533 * @param node Permission node 534 * @param value Value to set 535 */ 536 public void setGroupInfoBoolean(World world, String group, String node, boolean value) { 537 setGroupInfoBoolean(world.getName(), group, node, value); 538 } 539 540 /** 541 * Get a players informational node (String) value 542 * @param world World name 543 * @param player Player name 544 * @param node Permission node 545 * @param defaultValue Default value 546 * @return Value 547 */ 548 abstract public String getPlayerInfoString(String world, String player, String node, String defaultValue); 549 550 /** 551 * Get a players informational node (String) value 552 * @param world World Object 553 * @param player Player name 554 * @param node Permission node 555 * @param defaultValue Default value 556 * @return Value 557 */ 558 public String getPlayerInfoString(World world, String player, String node, String defaultValue) { 559 return getPlayerInfoString(world.getName(), player, node, defaultValue); 560 } 561 562 /** 563 * Get a players informational node (String) value 564 * @param player Player Object 565 * @param node Permission node 566 * @param defaultValue Default value 567 * @return Value 568 */ 569 public String getPlayerInfoString(Player player, String node, String defaultValue) { 570 return getPlayerInfoString(player.getWorld().getName(), player.getName(), node, defaultValue); 571 } 572 573 /** 574 * Set a players informational node (String) value 575 * @param world World name 576 * @param player Player name 577 * @param node Permission node 578 * @param value Value to set 579 */ 580 abstract public void setPlayerInfoString(String world, String player, String node, String value); 581 582 /** 583 * Set a players informational node (String) value 584 * @param world World name 585 * @param player Player name 586 * @param node Permission node 587 * @param value Value to set 588 */ 589 public void setPlayerInfoString(World world, String player, String node, String value) { 590 setPlayerInfoString(world.getName(), player, node, value); 591 } 592 593 /** 594 * Set a players informational node (String) value 595 * @param player Player Object 596 * @param node Permission node 597 * @param value Value ot set 598 */ 599 public void setPlayerInfoString(Player player, String node, String value) { 600 setPlayerInfoString(player.getWorld().getName(), player.getName(), node, value); 601 } 602 603 /** 604 * Get a groups informational node (String) value 605 * @param world Name of World 606 * @param group Name of Group 607 * @param node Permission node 608 * @param defaultValue Default value 609 * @return Value 610 */ 611 abstract public String getGroupInfoString(String world, String group, String node, String defaultValue); 612 613 /** 614 * Set a players informational node (String) value 615 * @param world World Object 616 * @param group Group name 617 * @param node Permission node 618 * @param defaultValue Default value 619 * @return Value 620 */ 621 public String getGroupInfoString(World world, String group, String node, String defaultValue) { 622 return getGroupInfoString(world.getName(), group, node, defaultValue); 623 } 624 625 /** 626 * Set a groups informational node (String) value 627 * @param world World name 628 * @param group Group name 629 * @param node Permission node 630 * @param value Value to set 631 */ 632 abstract public void setGroupInfoString(String world, String group, String node, String value); 633 634 /** 635 * Set a groups informational node (String) value 636 * @param world World name 637 * @param group Group name 638 * @param node Permission node 639 * @param value Value to set 640 */ 641 public void setGroupInfoString(World world, String group, String node, String value) { 642 setGroupInfoString(world.getName(), group, node, value); 643 } 644 645 /** 646 * Check if player is member of a group. 647 * @param world World name 648 * @param player Player name 649 * @param group Group name 650 * @return Success or Failure 651 */ 652 public boolean playerInGroup(String world, String player, String group) { 653 return perms.playerInGroup(world, player, group); 654 } 655 656 /** 657 * Check if player is member of a group. 658 * @param world World Object 659 * @param player Player name 660 * @param group Group name 661 * @return Success or Failure 662 */ 663 public boolean playerInGroup(World world, String player, String group) { 664 return playerInGroup(world.getName(), player, group); 665 } 666 667 /** 668 * Check if player is member of a group. 669 * @param player Player Object 670 * @param group Group name 671 * @return Success or Failure 672 */ 673 public boolean playerInGroup(Player player, String group) { 674 return playerInGroup(player.getWorld().getName(), player.getName(), group); 675 } 676 677 /** 678 * Gets the list of groups that this player has 679 * @param world World name 680 * @param player Player name 681 * @return Array of groups 682 */ 683 public String[] getPlayerGroups(String world, String player) { 684 return perms.getPlayerGroups(world, player); 685 } 686 687 /** 688 * Gets the list of groups that this player has 689 * @param world World Object 690 * @param player Player name 691 * @return Array of groups 692 */ 693 public String[] getPlayerGroups(World world, String player) { 694 return getPlayerGroups(world.getName(), player); 695 } 696 697 /** 698 * Gets the list of groups that this player has 699 * @param player Player Object 700 * @return Array of groups 701 */ 702 public String[] getPlayerGroups(Player player) { 703 return getPlayerGroups(player.getWorld().getName(), player.getName()); 704 } 705 706 /** 707 * Gets players primary group 708 * @param world World name 709 * @param player Player name 710 * @return Players primary group 711 */ 712 public String getPrimaryGroup(String world, String player) { 713 return perms.getPrimaryGroup(world, player); 714 } 715 716 /** 717 * Gets players primary group 718 * @param world World Object 719 * @param player Player name 720 * @return Players primary group 721 */ 722 public String getPrimaryGroup(World world, String player) { 723 return getPrimaryGroup(world.getName(), player); 724 } 725 726 /** 727 * Get players primary group 728 * @param player Player Object 729 * @return Players primary group 730 */ 731 public String getPrimaryGroup(Player player) { 732 return getPrimaryGroup(player.getWorld().getName(), player.getName()); 733 } 734 735 /** 736 * Returns a list of all known groups 737 * @return an Array of String of all groups 738 */ 739 public String[] getGroups() { 740 return perms.getGroups(); 741 } 742}