Events.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package de.Linus122.customoregen;
  2. import java.util.AbstractMap;
  3. import java.util.Random;
  4. import java.util.Map.Entry;
  5. import org.bukkit.Material;
  6. import org.bukkit.block.Block;
  7. import org.bukkit.block.BlockFace;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.block.BlockFromToEvent;
  12. public class Events implements Listener {
  13. @EventHandler
  14. public void onFromTo(BlockFromToEvent event) {
  15. if (Main.disabledWorlds.contains(event.getBlock().getLocation().getWorld().getName())) {
  16. return;
  17. }
  18. // System.out.println("From: " + event.getBlock().getType().name());
  19. // System.out.println("To: " + event.getToBlock().getType().name());
  20. // System.out.println("Face: " + event.getFace().name());
  21. int id = event.getBlock().getTypeId();
  22. if ((id >= 8) && (id <= 11)) {
  23. Block b = event.getToBlock();
  24. Entry<Boolean, Boolean> e = generatesCobble(id, b);
  25. boolean generatesCobble = e.getKey();
  26. boolean stoneGen = e.getValue();
  27. int toid = b.getTypeId();
  28. if ((toid == 0) && (generatesCobble)) {
  29. GeneratorConfig gc = null;
  30. Player p = Main.getOwner(b.getLocation());
  31. if (p == null) {
  32. gc = Main.generatorConfigs.get(0);
  33. } else {
  34. int islandLevel = Main.getLevel(p);
  35. if (Main.activeInWorld.getName().equals(b.getWorld().getName())) {
  36. for (GeneratorConfig gc2 : Main.generatorConfigs) {
  37. if (gc2 == null) {
  38. continue;
  39. }
  40. if (p.hasPermission(gc2.permission) && islandLevel >= gc2.unlock_islandLevel) {
  41. // Weiter
  42. gc = gc2;
  43. }
  44. }
  45. }
  46. }
  47. if (gc == null)
  48. return;
  49. if (getObject(gc) == null)
  50. return;
  51. GeneratorItem winning = getObject(gc);
  52. if (Material.getMaterial(winning.name) == null)
  53. return;
  54. // b.setType(Material.getMaterial(winning));
  55. if (Material.getMaterial(winning.name).equals(Material.COBBLESTONE) && winning.damage == 0
  56. && stoneGen) {
  57. return;
  58. }
  59. b.setTypeIdAndData(Material.getMaterial(winning.name).getId(), winning.damage, true);
  60. }
  61. }
  62. }
  63. public GeneratorItem getObject(GeneratorConfig gc) {
  64. Random random = new Random();
  65. double d = random.nextDouble() * 100;
  66. for (GeneratorItem key : gc.itemList) {
  67. if ((d -= key.chance) < 0)
  68. return key;
  69. }
  70. return new GeneratorItem("COBBLESTONE", (byte) 0, 0); // DEFAULT
  71. }
  72. private final BlockFace[] faces = { BlockFace.SELF, BlockFace.UP, BlockFace.DOWN, BlockFace.NORTH, BlockFace.EAST,
  73. BlockFace.SOUTH, BlockFace.WEST };
  74. @SuppressWarnings("deprecation")
  75. public Entry<Boolean, Boolean> generatesCobble(int id, Block b) {
  76. int mirrorID1 = (id == 8) || (id == 9) ? 10 : 8;
  77. int mirrorID2 = (id == 8) || (id == 9) ? 11 : 9;
  78. for (BlockFace face : this.faces) {
  79. Block r = b.getRelative(face, 1);
  80. if ((r.getTypeId() == mirrorID1) || (r.getTypeId() == mirrorID2)) {
  81. Entry<Boolean, Boolean> e = new AbstractMap.SimpleEntry<Boolean, Boolean>(true, false);
  82. if (face.equals(BlockFace.UP)) {
  83. e.setValue(true);
  84. } else {
  85. e.setValue(false);
  86. }
  87. return e;
  88. }
  89. }
  90. Entry<Boolean, Boolean> e = new AbstractMap.SimpleEntry<Boolean, Boolean>(false, false);
  91. return new AbstractMap.SimpleEntry<Boolean, Boolean>(false, false);
  92. }
  93. }