Fixed Generators on 1.12.2.

This commit is contained in:
Wertík 2020-04-11 22:07:13 +02:00 committed by Brianna
parent 42b4d09294
commit b54a55c4be

View File

@ -349,10 +349,12 @@ public class Block implements Listener {
// Find highest generator available // Find highest generator available
for (Generator generator : generators) { for (Generator generator : generators) {
for (Player p : possiblePlayers) { for (Player p : possiblePlayers) {
if (generator.isPermission()) {
if (!p.hasPermission(generator.getPermission()) && !p.hasPermission("fabledskyblock.generator.*") && !p.hasPermission("fabledskyblock.*")) { if (generator.isPermission() &&
continue; !p.hasPermission(generator.getPermission()) &&
} !p.hasPermission("fabledskyblock.generator.*") &&
!p.hasPermission("fabledskyblock.*")) {
continue;
} }
org.bukkit.block.BlockState genState = generatorManager.generateBlock(generator, block); org.bukkit.block.BlockState genState = generatorManager.generateBlock(generator, block);
@ -361,7 +363,6 @@ public class Block implements Listener {
toBlockState.setData(genState.getData()); toBlockState.setData(genState.getData());
toBlockState.setType(genState.getType()); toBlockState.setType(genState.getType());
toBlockState.update(); toBlockState.update();
return; return;
} }
} }
@ -530,6 +531,7 @@ public class Block implements Listener {
IslandManager islandManager = skyblock.getIslandManager(); IslandManager islandManager = skyblock.getIslandManager();
Island island = islandManager.getIslandAtLocation(block.getLocation()); Island island = islandManager.getIslandAtLocation(block.getLocation());
if (island == null) return; if (island == null) return;
// Check spawn block protection // Check spawn block protection
@ -541,27 +543,33 @@ public class Block implements Listener {
} }
} }
Material material = block.getType(); CompatibleMaterial material = CompatibleMaterial.getMaterial(block);
if (material != CompatibleMaterial.WATER.getBlockMaterial() if (material != CompatibleMaterial.WATER
&& material != CompatibleMaterial.LAVA.getBlockMaterial()) && material != CompatibleMaterial.LAVA)
return; return;
BlockState state = event.getNewState(); BlockState state = event.getNewState();
Material type = state.getType(); Material type = state.getType();
if (type != Material.COBBLESTONE && type != Material.STONE) return; if (type != Material.COBBLESTONE && type != Material.STONE) return;
GeneratorManager generatorManager = skyblock.getGeneratorManager(); GeneratorManager generatorManager = skyblock.getGeneratorManager();
if (generatorManager == null) return; if (generatorManager == null) return;
List<Generator> generators = Lists.newArrayList(generatorManager.getGenerators()); List<Generator> generators = Lists.newArrayList(generatorManager.getGenerators());
if (generators == null || generators.isEmpty()) return;
if (generators.isEmpty()) return;
Collections.reverse(generators); // Use the highest generator available Collections.reverse(generators); // Use the highest generator available
// Filter valid players on the island. // Filter valid players on the island.
Set<Player> possiblePlayers = new HashSet<>(); Set<Player> possiblePlayers = new HashSet<>();
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
boolean isMember = island.hasRole(IslandRole.Owner, player.getUniqueId()) || island.hasRole(IslandRole.Member, player.getUniqueId()) || island.hasRole(IslandRole.Coop, player.getUniqueId()) boolean isMember = island.hasRole(IslandRole.Owner, player.getUniqueId()) ||
|| island.hasRole(IslandRole.Operator, player.getUniqueId()); island.hasRole(IslandRole.Member, player.getUniqueId()) ||
island.hasRole(IslandRole.Coop, player.getUniqueId()) ||
island.hasRole(IslandRole.Operator, player.getUniqueId());
if (isMember && islandManager.isLocationAtIsland(island, player.getLocation(), world)) { if (isMember && islandManager.isLocationAtIsland(island, player.getLocation(), world)) {
possiblePlayers.add(player); possiblePlayers.add(player);
} }