Expanding Border - Plugin Request

Discussion in 'Spigot Plugin Development' started by TimoWagenvoort, Aug 16, 2018.

  1. Hi guys,

    Me and my friends want to start a new survival server in 1.13. We want to have a border that expands when someone gets an advancement or kills a certain amount of a mob type, however the border reduces when someone dies.


    These are my ideas for the plugin:
    - Border needs to be 5x5 blocks when we start.
    - It takes time for the border to expand when a player got an achievement, 1 block expansion per second.
    - A title in screen wich says if the border is going to expand/contract and the amount of blocks.

    **The border needs to contract when:
    - A player dies (20 blocks)
    - It can't get smaller than 20x20 blocks.

    **The border needs to expand when:
    - A player killed a certain amount of mobs:
    - Passive mobs = 1 block per 200 killed
    - Neutral mobs = 1 block per 100 killed
    - Hostile mobs = 1 block per 50 killed
    - Boss mobs = 20 blocks per 1 killed
    (Here is a list with all the mobs sorted in the groups: https://minecraft.gamepedia.com/Mob#List_of_mobs)
    - A player gets an advancement:
    Here's a list of the advancements ordered into 4 groups:
    There are 5 different advancements tabs in Minecraft, I've sorted all of them.
    No expansion (0 blocks):
    - Minecraft
    - Nether
    - The End
    - Adventure
    - Husbandry

    Easy (2 blocks expansion):
    **
    Minecraft advancements:
    - Stone Age
    - Getting an Upgrade
    - Acquire Hardware
    - Isn't It Iron Pick
    - Not Today, Thank You
    - Hot Stuff
    - Suit Up
    - Not Today, Thank You
    - Ice Bucket Challenge
    - Diamonds!
    - We Need to Go Deeper

    **Nether advancements:
    - Into Fire
    - Local Brewery

    **The End advancements:
    - The Next Generation
    - Remote Gateway
    - You Need a Mint
    - The City at the End of the Game

    **Adventure advancements:
    - Monster Hunter
    - Sweet dreams
    - What a Deal!
    - A Throwaway Joke
    - Take Aim
    - Hired Help

    **Husbandry:
    - The Parrots and the Bats
    - Best Friends Forever
    - A Seedy Place
    - Fishy Buisiness

    Medium (10 blocks expansion):
    **Minecraft advancements:
    - Cover Me With Diamonds
    - Enchanter
    - Zombie Doctor
    - Eye Spy

    **Nether advancements:
    - Subspace Bubble
    - A Terrible Fortress
    - Spooky Scary Skeleton
    - Withering Heights
    - Bring Home the Beacon

    **The End advancements:
    - Free the End
    - The End... Again...

    **Adventure advancements:
    - Monsters Hunted
    - Postmortal

    **Husbandry:
    - Tactical Fishing
    - Two by Two

    Hard (20 blocks expansion):
    **Minecraft advancements:
    - The End?

    **Nether advancements:
    - Uneasy Alliance
    - How Did We Get Here?
    - Beaconator

    **The End advancements:
    - Sky's the Limit
    - Great View From Up Here

    **Adventure advancements:
    - Adventuring Time
    - Very Very Frightening
    - Sniper duel

    **Husbandry:
    - A Balanced Diet
    - Serious Dedication

    (List of all the advancements: https://minecraft.gamepedia.com/Advancements#List_of_advancements)

    Explanation of the expansion: 10 blocks expansion means 5 blocks in every direction. Maybe this helps if you don't understand it: http://prntscr.com/kjb88q


    Tau already made a part of this plugin. It's great, but I actually want it more extended. You can find her plugin here. You are allowed to use her code, however this is what she said to me:
    "If you wish to compile this yourself, Or edit it, Feel free to, Just don't change the string in 'plugin.yml' regarding the author, or claim it as your own, And link to my spigot profile page if distributing it or it's code."

    Code (Java):
    package spigot.tau.ExpandingBorder;


    import java.util.ArrayList;
    import java.util.List;

    import org.bukkit.Bukkit;
    import org.bukkit.World;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.ConfigurationSection;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerAdvancementDoneEvent;
    import org.bukkit.event.player.PlayerStatisticIncrementEvent;
    import org.bukkit.plugin.java.JavaPlugin;

    public class Main extends JavaPlugin implements Listener {
        List<World> worlds = new ArrayList<World>();
        double border_minsize = 64;
        double border_ex_mobKill = 0.5;
        double border_ex_Advance = 5;
        double border_su_Death;
        public void onEnable() {
            this.saveDefaultConfig();
            if (this.getConfig().getInt("Config Version") == 1) {
                configLoad();
            } else {
                System.out.println("Config is outdated/for newer version for ExpandingBorder, Plugin disabled.");
                return;
            }
            Bukkit.getPluginManager().registerEvents(this, this);
        }
        public void configLoad() {
            FileConfiguration f = this.getConfig();
            for (String w : f.getStringList("Enabled Worlds")) {
                if (Bukkit.getServer().getWorld(w) != null) {
                    worlds.add(Bukkit.getWorld(w));
                }
            }  
       
            border_minsize = f.getDouble("Minimum Size")*2;
       
            ConfigurationSection consec = f.getConfigurationSection("EXPANDS");
            border_ex_mobKill = consec.getDouble("MobKill")*2;
            border_ex_Advance = consec.getDouble("Advancement")*2;
       
       
            consec = f.getConfigurationSection("CONTRACTS");
            border_su_Death = 0-consec.getDouble("Death")*2;
        }
        public void onDisable() {

        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {

            return true;
        }
        @EventHandler()
        public void onStatInc(PlayerStatisticIncrementEvent e) {
            switch (e.getStatistic()) {
            case DEATHS:
                incrementPlayer(e.getPlayer(), border_su_Death);
                break;
            case MOB_KILLS:
                incrementPlayer(e.getPlayer(), border_ex_mobKill);
                break;
            default:
                break;
       
            }
        }
        @EventHandler()
        public void onAdvance(PlayerAdvancementDoneEvent e) {
            incrementPlayer(e.getPlayer(), border_ex_Advance);
        }
        public void incrementPlayer(Player p, double border) {
            for (World w : worlds) {
                double s = w.getWorldBorder().getSize() + (border);
                if (s > border_minsize) {
                    if (s <= 60000000) {
                        w.getWorldBorder().setSize(s);
                    }
                } else {
                    w.getWorldBorder().setSize(border_minsize);
                }
            }

        }
    }
     


    I hope someone wants to do it :D.
    ~Timo
     
    • Like Like x 1
  2. Please reread all the sticky readme threads for this subforum.
     
    • Winner Winner x 2
  3. Post your budget and request here: https://www.spigotmc.org/forums/hiring-developers.55/
     
    • Agree Agree x 1
  4. DavidDevelops

    Supporter

    Oof, wrong place but good description at least, but no one if anyone will make this for free, id do it if you wanna contact me and talk over it