mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2024-11-30 06:03:29 +01:00
Fix spawn point and beds being tempermental, fix island spawn falling
This commit is contained in:
parent
e4a0d6c451
commit
acd2551999
@ -194,8 +194,25 @@ public class Block implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
if (LocationUtil.isLocationAffectingLocation(block.getLocation(), island.getLocation(world, IslandEnvironment.Main))) {
|
||||
// Check spawn protection
|
||||
if (configLoad.getBoolean("Island.Spawn.Protection")) {
|
||||
boolean isObstructing = false;
|
||||
// Directly on the block
|
||||
if (LocationUtil.isLocationAffectingLocation(block.getLocation(), island.getLocation(world, IslandEnvironment.Main))) {
|
||||
isObstructing = true;
|
||||
}
|
||||
|
||||
// Specific check for beds
|
||||
if (block.getType().name().equals("BED") || block.getType().name().contains("_BED")) {
|
||||
BlockFace bedDirection = ((org.bukkit.material.Bed) event.getBlock().getState().getData()).getFacing();
|
||||
org.bukkit.block.Block bedBlock = block.getRelative(bedDirection);
|
||||
if (LocationUtil.isLocationAffectingLocation(bedBlock.getLocation(), island.getLocation(world, IslandEnvironment.Main))) {
|
||||
isObstructing = true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (isObstructing) {
|
||||
skyblock.getMessageManager().sendMessage(player,
|
||||
skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"))
|
||||
.getFileConfiguration().getString("Island.SpawnProtection.Place.Message"));
|
||||
|
@ -397,6 +397,16 @@ public class Entity implements Listener {
|
||||
|
||||
IslandWorld world = worldManager.getIslandWorld(event.getBlock().getWorld());
|
||||
|
||||
org.bukkit.block.Block block = event.getBlock();
|
||||
|
||||
// Check spawn block falling, this can be a bit glitchy, but it's better than nothing
|
||||
Location islandLocation = island.getLocation(world, IslandEnvironment.Main);
|
||||
if (LocationUtil.isLocationLocation(block.getLocation(), islandLocation.clone().subtract(0, 1, 0)) &&
|
||||
skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Spawn.Protection")) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((event.getEntityType() == EntityType.FALLING_BLOCK) && LocationUtil.isLocationLocation(event.getBlock().getLocation(),
|
||||
island.getLocation(world, IslandEnvironment.Main)
|
||||
.clone())
|
||||
@ -410,7 +420,7 @@ public class Entity implements Listener {
|
||||
Method getBlockDataMethod = FallingBlock.class.getMethod("getBlockData");
|
||||
byte data = (byte) getBlockDataMethod.invoke(fallingBlock);
|
||||
if (fallingBlock.getMaterial().name().endsWith("ANVIL")) {
|
||||
data = (byte) Math.ceil(data / 4);
|
||||
data = (byte) Math.ceil(data / 4.0);
|
||||
}
|
||||
fallingBlock.getWorld().dropItemNaturally(fallingBlock.getLocation(), new ItemStack(fallingBlock.getMaterial(), 1, (byte) data));
|
||||
} catch (Exception ignored) { }
|
||||
@ -422,21 +432,19 @@ public class Entity implements Listener {
|
||||
if (entity instanceof FallingBlock)
|
||||
return;
|
||||
|
||||
// Check entities interacting with spawn
|
||||
if (LocationUtil.isLocationAffectingLocation(block.getLocation(), islandLocation) &&
|
||||
skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Spawn.Protection")) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!islandManager.hasSetting(entity.getLocation(), IslandRole.Owner, "MobGriefing")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
if (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml"))
|
||||
.getFileConfiguration().getBoolean("Island.Block.Level.Enable")) return;
|
||||
org.bukkit.block.Block block = event.getBlock();
|
||||
|
||||
// Check spawn block protection
|
||||
Location islandLocation = island.getLocation(world, IslandEnvironment.Main);
|
||||
if (LocationUtil.isLocationAffectingLocation(block.getLocation(), islandLocation) &&
|
||||
skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Spawn.Protection")) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
Materials materials = Materials.getMaterials(block.getType(), block.getData());
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user