mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2025-01-25 17:01:28 +01:00
Dragon egg fix, island setspawn fix, update EpicSpawners hooks
This commit is contained in:
parent
17a0b30161
commit
4214c60fe3
@ -32,7 +32,7 @@ dependencies {
|
||||
implementation (group: 'me.robin', name: 'leaderheads', version: '1.0')
|
||||
|
||||
// EpicSpawners
|
||||
implementation (group: 'com.songoda', name: 'epicspawners', version: '5.7.1')
|
||||
implementation (group: 'com.songoda', name: 'epicspawners', version: '6-pre4')
|
||||
|
||||
// WildStacker
|
||||
implementation (group: 'com.bgsoftware', name: 'wildstacker-api', version: 'b14')
|
||||
@ -44,6 +44,9 @@ dependencies {
|
||||
shade (group: 'org.apache.commons', name: 'commons-lang3', version: '3.0')
|
||||
shade (group: 'commons-io', name: 'commons-io', version: '2.5')
|
||||
|
||||
// JetBrains Annotations
|
||||
compile (group: 'org.jetbrains', name: 'annotations', version: '13.0')
|
||||
|
||||
// Songoda Updater
|
||||
shade (group: 'com.songoda', name: 'songodaupdater', version: '1')
|
||||
|
||||
|
@ -70,7 +70,7 @@ public class SetSpawnCommand extends SubCommand {
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
} else if (location.getY() - location.getBlockY() != 0.0D) {
|
||||
} else if (!player.getLocation().clone().subtract(0, 0.1, 0).getBlock().getType().isSolid()) {
|
||||
messageManager.sendMessage(player,
|
||||
configLoad.getString("Command.Island.SetSpawn.Protection.Ground.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
@ -92,11 +92,13 @@ public class SetSpawnCommand extends SubCommand {
|
||||
|
||||
return;
|
||||
} else {
|
||||
if (location.getBlock().getType() != Material.AIR && location.getBlock().getType() != Materials.MOVING_PISTON.parseMaterial()) {
|
||||
Material type = location.getBlock().getType();
|
||||
if (type.isSolid() && type.isOccluding()) {
|
||||
location.getBlock().breakNaturally();
|
||||
}
|
||||
|
||||
if (location.clone().add(0.0D, 1.0D, 0.0D).getBlock().getType() != Material.AIR && location.getBlock().getType() != Materials.MOVING_PISTON.parseMaterial()) {
|
||||
Material typeBelow = location.clone().add(0.0D, 1.0D, 0.0D).getBlock().getType();
|
||||
if (typeBelow.isSolid() && type.isOccluding()) {
|
||||
location.clone().add(0.0D, 1.0D, 0.0D).getBlock().breakNaturally();
|
||||
}
|
||||
|
||||
@ -104,7 +106,7 @@ public class SetSpawnCommand extends SubCommand {
|
||||
}
|
||||
}
|
||||
|
||||
Location newSpawnLocation = new Location(location.getWorld(), location.getBlockX() + 0.5, location.getBlockY(), location.getBlockZ() + 0.5, location.getYaw(), location.getPitch());
|
||||
Location newSpawnLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
|
||||
island.setLocation(world, environment, newSpawnLocation);
|
||||
|
||||
messageManager.sendMessage(player,
|
||||
|
@ -89,6 +89,7 @@ public class LevellingManager {
|
||||
|
||||
Map<LevellingData, Long> levellingData = new HashMap<>();
|
||||
Set<Location> spawnerLocations = new HashSet<>(); // These have to be checked synchronously :(
|
||||
Set<Location> epicSpawnerLocations = new HashSet<>();
|
||||
|
||||
List<Material> blacklistedMaterials = new ArrayList<>();
|
||||
blacklistedMaterials.add(Materials.AIR.getPostMaterial());
|
||||
@ -103,7 +104,7 @@ public class LevellingManager {
|
||||
if (!chunk.isReadyToScan()) return;
|
||||
|
||||
if (chunk.isFinished()) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> finalizeMaterials(levellingData, spawnerLocations, player, island), 1);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(skyblock, () -> finalizeMaterials(levellingData, spawnerLocations, epicSpawnerLocations, player, island), 1);
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
@ -157,15 +158,16 @@ public class LevellingManager {
|
||||
Location location = new Location(world, chunkSnapshotList.getX() * 16 + x, y, chunkSnapshotList.getZ() * 16 + z);
|
||||
|
||||
if (isEpicSpawnersEnabled) {
|
||||
com.songoda.epicspawners.api.EpicSpawners epicSpawners = com.songoda.epicspawners.api.EpicSpawnersAPI.getImplementation();
|
||||
com.songoda.epicspawners.EpicSpawners epicSpawners = com.songoda.epicspawners.EpicSpawners.getInstance();
|
||||
if (epicSpawners.getSpawnerManager().isSpawner(location)) {
|
||||
com.songoda.epicspawners.api.spawner.Spawner spawner = epicSpawners.getSpawnerManager().getSpawnerFromWorld(location);
|
||||
amount = spawner.getSpawnerDataCount();
|
||||
spawnerType = spawner.getCreatureSpawner().getSpawnedType();
|
||||
com.songoda.epicspawners.spawners.spawner.Spawner spawner = epicSpawners.getSpawnerManager().getSpawnerFromWorld(location);
|
||||
if (spawner != null)
|
||||
epicSpawnerLocations.add(location);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (isWildStackerEnabled && spawnerType == null) {
|
||||
if (isWildStackerEnabled) {
|
||||
com.bgsoftware.wildstacker.api.handlers.SystemManager wildStacker = com.bgsoftware.wildstacker.api.WildStackerAPI.getWildStacker().getSystemManager();
|
||||
com.bgsoftware.wildstacker.api.objects.StackedSpawner spawner = wildStacker.getStackedSpawner(location);
|
||||
if (spawner != null) {
|
||||
@ -224,7 +226,7 @@ public class LevellingManager {
|
||||
}.runTaskTimerAsynchronously(skyblock, 0L, 1L);
|
||||
}
|
||||
|
||||
private void finalizeMaterials(Map<LevellingData, Long> levellingData, Set<Location> spawnerLocations, Player player, Island island) {
|
||||
private void finalizeMaterials(Map<LevellingData, Long> levellingData, Set<Location> spawnerLocations, Set<Location> epicSpawnerLocations, Player player, Island island) {
|
||||
for (Location location : spawnerLocations) {
|
||||
if (!(location.getBlock().getState() instanceof CreatureSpawner))
|
||||
continue;
|
||||
@ -238,6 +240,23 @@ public class LevellingManager {
|
||||
levellingData.put(data, totalAmount);
|
||||
}
|
||||
|
||||
for (Location location : epicSpawnerLocations) {
|
||||
com.songoda.epicspawners.EpicSpawners epicSpawners = com.songoda.epicspawners.EpicSpawners.getInstance();
|
||||
if (epicSpawners.getSpawnerManager().isSpawner(location)) {
|
||||
com.songoda.epicspawners.spawners.spawner.Spawner spawner = epicSpawners.getSpawnerManager().getSpawnerFromWorld(location);
|
||||
if (spawner == null)
|
||||
continue;
|
||||
|
||||
int amount = spawner.getFirstStack().getStackSize();
|
||||
EntityType spawnerType = spawner.getCreatureSpawner().getSpawnedType();
|
||||
|
||||
LevellingData data = new LevellingData(Materials.SPAWNER.parseMaterial(), (byte) 0, spawnerType);
|
||||
Long totalAmountInteger = levellingData.get(data);
|
||||
long totalAmount = totalAmountInteger == null ? amount : totalAmountInteger + amount;
|
||||
levellingData.put(data, totalAmount);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Long> materials = new HashMap<>();
|
||||
for (LevellingData data : levellingData.keySet()) {
|
||||
long amount = levellingData.get(data);
|
||||
|
@ -128,10 +128,8 @@ public class Block implements Listener {
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
if (LocationUtil.isLocationLocation(block.getLocation(),
|
||||
island.getLocation(world, IslandEnvironment.Main)
|
||||
.clone()
|
||||
.subtract(0.0D, 1.0D, 0.0D))) {
|
||||
if (LocationUtil.isLocationLocation(block.getLocation(), island.getLocation(world, IslandEnvironment.Main).clone().subtract(0.0D, 1.0D, 0.0D))
|
||||
|| LocationUtil.isLocationLocation(block.getLocation(), island.getLocation(world, IslandEnvironment.Main).clone())) {
|
||||
if (configLoad.getBoolean("Island.Spawn.Protection")) {
|
||||
event.setCancelled(true);
|
||||
skyblock.getMessageManager().sendMessage(player,
|
||||
|
@ -62,6 +62,21 @@ public class Interact implements Listener {
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
StackableManager stackableManager = skyblock.getStackableManager();
|
||||
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_BLOCK) {
|
||||
if (block.getType() == Material.DRAGON_EGG) {
|
||||
if (!islandManager.hasPermission(player, block.getLocation(), "DragonEggUse")) {
|
||||
event.setCancelled(true);
|
||||
|
||||
messageManager.sendMessage(player,
|
||||
skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"))
|
||||
.getFileConfiguration().getString("Island.Settings.Permission.Message"));
|
||||
soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
if (stackableManager != null
|
||||
&& stackableManager.getStackableMaterials().contains(event.getMaterial())
|
||||
@ -322,17 +337,6 @@ public class Interact implements Listener {
|
||||
.getFileConfiguration().getString("Island.Settings.Permission.Message"));
|
||||
soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
}
|
||||
} else if (block.getType() == Material.DRAGON_EGG) {
|
||||
if (!islandManager.hasPermission(player, block.getLocation(), "DragonEggUse")) {
|
||||
event.setCancelled(true);
|
||||
|
||||
messageManager.sendMessage(player,
|
||||
skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"))
|
||||
.getFileConfiguration().getString("Island.Settings.Permission.Message"));
|
||||
soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
}
|
||||
} else if (block.getType() == Material.HOPPER) {
|
||||
|
Loading…
Reference in New Issue
Block a user