From 6ac6fe44c0ea0ce6038b5655cef9c6a94ec250f5 Mon Sep 17 00:00:00 2001 From: tastybento Date: Fri, 25 May 2018 12:20:26 -0700 Subject: [PATCH] AcidIsland addon for BSB. --- .../addon/acidisland/AISettings.java | 176 ++++++++++++++++++ .../addon/acidisland/AcidIsland.java | 6 +- .../addon/acidisland/AcidIslandWorld.java | 4 +- .../bskyblock/addon/acidisland/Settings.java | 82 -------- .../acidisland/listeners/IslandBuilder.java | 44 +++-- 5 files changed, 206 insertions(+), 106 deletions(-) create mode 100644 src/main/java/bskyblock/addon/acidisland/AISettings.java delete mode 100644 src/main/java/bskyblock/addon/acidisland/Settings.java diff --git a/src/main/java/bskyblock/addon/acidisland/AISettings.java b/src/main/java/bskyblock/addon/acidisland/AISettings.java new file mode 100644 index 0000000..9e56182 --- /dev/null +++ b/src/main/java/bskyblock/addon/acidisland/AISettings.java @@ -0,0 +1,176 @@ +package bskyblock.addon.acidisland; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.bukkit.entity.EntityType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffectType; + +import us.tastybento.bskyblock.api.configuration.WorldSettings; + +/** + * A lot of placeholders right now in here... + * @author tastybento + * + */ +public class AISettings implements WorldSettings { + + public int getAcidDamage() { + return 1; + } + + public List getAcidDamageType() { + List result = new ArrayList<>(); + result.add(PotionEffectType.CONFUSION); + return result; + } + + public List getChestItems() { + // TODO Auto-generated method stub + List result = new ArrayList<>(); + return result; + } + + public boolean getDamageOps() { + return true; + } + + @Override + public Map getEntityLimits() { + // TODO Auto-generated method stub + return null; + } + + public boolean getFullArmorProtection() { + // TODO Auto-generated method stub + return false; + } + + public boolean getHelmetProtection() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getIslandDistance() { + // TODO Auto-generated method stub + return 60; + } + + @Override + public int getIslandHeight() { + // TODO Auto-generated method stub + return 50; + } + + @Override + public int getIslandProtectionRange() { + // TODO Auto-generated method stub + return 50; + } + + @Override + public int getIslandStartX() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getIslandStartZ() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getIslandXOffset() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getIslandZOffset() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getMaxIslands() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getNetherSpawnRadius() { + // TODO Auto-generated method stub + return 0; + } + + public int getRainDamage() { + return 1; + } + + public int getSeaHeight() { + return 55; + } + + @Override + public Map getTileEntityLimits() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getWorldName() { + return "AcidIsland-world"; + } + + @Override + public boolean isEndGenerate() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isEndIslands() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isNetherGenerate() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isNetherIslands() { + // TODO Auto-generated method stub + return false; + } + + public boolean isNetherRoof() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isNetherTrees() { + // TODO Auto-generated method stub + return false; + } + + @Override + public String getFriendlyName() { + return "AcidIsland"; + } + + @Override + public boolean isDragonSpawn() { + // TODO Auto-generated method stub + return false; + } + + +} diff --git a/src/main/java/bskyblock/addon/acidisland/AcidIsland.java b/src/main/java/bskyblock/addon/acidisland/AcidIsland.java index b033d89..59c2d76 100644 --- a/src/main/java/bskyblock/addon/acidisland/AcidIsland.java +++ b/src/main/java/bskyblock/addon/acidisland/AcidIsland.java @@ -14,13 +14,13 @@ import us.tastybento.bskyblock.api.addons.Addon; */ public class AcidIsland extends Addon { - private Settings settings; + private AISettings settings; private AcidIslandWorld aiw; @Override public void onLoad() { // Load settings - settings = new Settings(); + settings = new AISettings(); // Create worlds aiw = new AcidIslandWorld(this); // TODO Register settings @@ -43,7 +43,7 @@ public class AcidIsland extends Addon { public void onDisable(){ } - public Settings getSettings() { + public AISettings getSettings() { return settings; } diff --git a/src/main/java/bskyblock/addon/acidisland/AcidIslandWorld.java b/src/main/java/bskyblock/addon/acidisland/AcidIslandWorld.java index a7e4680..d1de3c5 100644 --- a/src/main/java/bskyblock/addon/acidisland/AcidIslandWorld.java +++ b/src/main/java/bskyblock/addon/acidisland/AcidIslandWorld.java @@ -35,7 +35,7 @@ public class AcidIslandWorld { // Create the world if it does not exist islandWorld = WorldCreator.name(worldName).type(WorldType.FLAT).environment(World.Environment.NORMAL).generator(new ChunkGeneratorWorld(addon)) .createWorld(); - addon.getBSkyBlock().registerWorld("acidisland", islandWorld); + addon.getBSkyBlock().registerWorld(islandWorld, addon.getSettings()); // Make the nether if it does not exist if (addon.getSettings().isNetherGenerate()) { if (addon.getServer().getWorld(worldName + NETHER) == null) { @@ -47,7 +47,6 @@ public class AcidIslandWorld { netherWorld = WorldCreator.name(worldName + NETHER).type(WorldType.FLAT).generator(new ChunkGeneratorWorld(addon)) .environment(World.Environment.NETHER).createWorld(); } - addon.getBSkyBlock().registerWorld("acid_nether", netherWorld); } // Make the end if it does not exist if (addon.getSettings().isEndGenerate()) { @@ -60,7 +59,6 @@ public class AcidIslandWorld { endWorld = WorldCreator.name(worldName + THE_END).type(WorldType.FLAT).generator(new ChunkGeneratorWorld(addon)) .environment(World.Environment.THE_END).createWorld(); } - addon.getBSkyBlock().registerWorld("acid_end", endWorld); } } diff --git a/src/main/java/bskyblock/addon/acidisland/Settings.java b/src/main/java/bskyblock/addon/acidisland/Settings.java deleted file mode 100644 index 06bfd11..0000000 --- a/src/main/java/bskyblock/addon/acidisland/Settings.java +++ /dev/null @@ -1,82 +0,0 @@ -package bskyblock.addon.acidisland; - -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffectType; - -/** - * A lot of placeholders right now in here... - * @author tastybento - * - */ -public class Settings { - - public boolean isNetherGenerate() { - // TODO Auto-generated method stub - return false; - } - - public boolean isNetherIslands() { - // TODO Auto-generated method stub - return false; - } - - public boolean isEndGenerate() { - // TODO Auto-generated method stub - return false; - } - - public boolean isEndIslands() { - // TODO Auto-generated method stub - return false; - } - - public int getSeaHeight() { - return 125; - } - - public boolean isNetherRoof() { - // TODO Auto-generated method stub - return false; - } - - public String getWorldName() { - return "AcidIsland"; - } - - public int getRainDamage() { - return 1; - } - - public int getAcidDamage() { - return 1; - } - - public boolean getDamageOps() { - return true; - } - - public List getAcidDamageType() { - List result = new ArrayList<>(); - result.add(PotionEffectType.CONFUSION); - return result; - } - - public boolean getHelmetProtection() { - // TODO Auto-generated method stub - return false; - } - - public boolean getFullArmorProtection() { - // TODO Auto-generated method stub - return false; - } - - public List getChestItems() { - // TODO Auto-generated method stub - List result = new ArrayList<>(); - return result; - } -} diff --git a/src/main/java/bskyblock/addon/acidisland/listeners/IslandBuilder.java b/src/main/java/bskyblock/addon/acidisland/listeners/IslandBuilder.java index 463062d..6e2466a 100644 --- a/src/main/java/bskyblock/addon/acidisland/listeners/IslandBuilder.java +++ b/src/main/java/bskyblock/addon/acidisland/listeners/IslandBuilder.java @@ -2,6 +2,7 @@ package bskyblock.addon.acidisland.listeners; import java.util.UUID; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.TreeType; @@ -35,30 +36,37 @@ public class IslandBuilder implements Listener { } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - public void onIslandCreate(final IslandCreateEvent event) { - if (addon.isEnabled()) { + public void onIslandCreate(IslandCreateEvent event) { + // Only create islands in the AcidIsland worlds + if (addon.isEnabled() && addon.getAiw().inWorld(event.getLocation())) { event.setCancelled(true); - generateAcidIslandBlocks(event.getIsland(), addon.getAiw().getOverWorld()); - if (addon.getSettings().isNetherGenerate() && addon.getSettings().isNetherIslands()) { - generateAcidIslandBlocks(event.getIsland(), addon.getAiw().getNetherWorld()); - } - if (addon.getSettings().isEndGenerate() && addon.getSettings().isEndIslands()) { - generateAcidIslandBlocks(event.getIsland(), addon.getAiw().getEndWorld()); - } + createIsland(User.getInstance(event.getPlayerUUID()), event.getIsland()); } } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - public void onIslandReset(final IslandResetEvent event) { - if (addon.isEnabled()) { + public void onIslandReset(IslandResetEvent event) { + // Only create islands in the AcidIsland worlds + if (addon.isEnabled() && addon.getAiw().inWorld(event.getLocation())) { event.setCancelled(true); - generateAcidIslandBlocks(event.getIsland(), addon.getAiw().getOverWorld()); - if (addon.getSettings().isNetherGenerate() && addon.getSettings().isNetherIslands()) { - generateAcidIslandBlocks(event.getIsland(), addon.getAiw().getNetherWorld()); - } - if (addon.getSettings().isEndGenerate() && addon.getSettings().isEndIslands()) { - generateAcidIslandBlocks(event.getIsland(), addon.getAiw().getEndWorld()); - } + createIsland(User.getInstance(event.getPlayerUUID()), event.getIsland()); + } + } + + private void createIsland(User user, Island island) { + if (user != null) { + user.setGameMode(GameMode.SPECTATOR); + } + generateAcidIslandBlocks(island, addon.getAiw().getOverWorld()); + if (addon.getSettings().isNetherGenerate() && addon.getSettings().isNetherIslands()) { + generateAcidIslandBlocks(island, addon.getAiw().getNetherWorld()); + } + if (addon.getSettings().isEndGenerate() && addon.getSettings().isEndIslands()) { + generateAcidIslandBlocks(island, addon.getAiw().getEndWorld()); + } + // Teleport player to their island + if (user != null) { + addon.getIslands().homeTeleport(island.getWorld(), user.getPlayer()); } }