Spongyisland - A Skyblock Plugin for Sponge

Spongyisland is a Skyblock plugin. For anyone who does not know what it is, it is a game mode where you start on a floating island where you have few resources to survive.
This plugin is still is the early stages so I’m using the overworld to place the islands. For this reason, you probably want to configure the server to generate a flat world with an empty preset. This can be done by changing the following properties in server.properties (add if they do not exist)

    level-type=FLAT
    generator-settings=3;minecraft\:air;127;decoration;2;

Also, you should add a spawn island. This can be done logging with an operator account and creating an island. Then issue the command /islandadmin unlink to remove the owner of the island and set the world spawn point somewhere on it.

This plugin has at the moment the next features:

  • Create your island
  • Complete challenges
  • Compete with your friends in a ranking system for the islands
  • Change the biome of your island through the biome shop
  • Challenges, block values and biomes are configurable

Planned features:

  • Join another person’s island
  • Make world configurable

Downloads

1 Like

Great! Finally Skyblock plugin for sponge!

Btw you can use world type VOID. Its simple:

    @Listener
    public void onGameStartingServerEvent(GameStartingServerEvent event) {
        createAndLoadWorld("skyworld", WorldArchetypes.THE_VOID);
    }
    
    private void createAndLoadWorld(String folderName, WorldArchetype settings) {
        try {
            final WorldProperties properties = Sponge.getServer().createWorldProperties(folderName, settings);
            Sponge.getServer().loadWorld(properties);
        } catch (IOException ex) {
            this.logger.error("Failed to create world data for [" + folderName + "]!", ex);
        }
    }
1 Like
Various things
  • Instead of URLs and replacing configuration loaders, consider using the Asset API.
  • For newSchematicCommand, you can use GenericArguments.location or GenericArguments.vector3d.
  • Don’t return CommandResult.success() if it wasn’t a success. Instead, throw CommandException.
  • In ChallengesCommand, you can resolve opLevel in one line - String level = args.<String>getOne(argsName).orElseGet(() -> data.getLastLevelIssued(player.getUniqueId());
  • It’s great if CommandResults are helpful - such as filling in the queryResult or successCount or something, especially for things that return a result, such as IsLevel.
  • IslandPlayer should be replaced with a Data API implementation; it results in unified access and a unified API, as well as auto NBT storage.
  • @IsCancelled defaults to Tristate.FALSE.
  • If you @Exclude(MoveEntityEvent.Teleport.class), it automatically includes subclasses like MoveEntityEvent.Teleport.Portal.
  • In onPortalTP, are you sure you want to teleport them to 0, 0, 0? Because that’s one block above the void. The goal is to find a relevant location, and rely on the agent to put you in a valid location.
1 Like

Hello people.
Thanks for the tips.
First of all, in my defense, I would like to say that when I started I didn’t know anything about plugin coding so that’s why it ended a bit as spaghetti code.
About the world thing, the problem I had is that I didn’t known a way to make players spawn in it (Also, didn’t know how to load/create the world so, thanks for the info)
And in response to pie_flavor, I was trying to make this the fastest I could, so I, maybe,I have accelerated the learning steps a bit more than I should… :sweat:
About the @exclude, I was experiencing that the event is triggered two times for teleport and tree for portals, so I ended excluding both, but don’t remember if I done that before testing it with only the the teleport or not.
And with the portal at 0, 0, 0, I want to make all player spawn in the same spot so everyone will have the same starting conditions. I used 0, 0, 0 because I think the game will try to find a suitable position for the portal near that. I hope that it does not matter the height I use.
Thanks for you suggestions, the truth is that I’m planning on recoding this when I have more knowledge so I can make a proper design

The height is definitely important; it will try to find the closest valid portal location. If this is in fact a couple blocks above bedrock, then so be it. Unsure why you want to make everyone spawn in the same position; the farther apart they are, the less likely they are to intrude on each others’ space.

It will try to find the closest safe portal location, so it won’t spawn in lava (if it can) but it’s true that it can spawn in a cavern beneath lava…
The problem with the nether is that the distances are 1/8 of the original. That will make players closer each other and it is likely that someone ends in some other people’s portal. Maybe I could make Nether distances match with the Overworld ones. Would that be a better idea?

That’s a great idea.

After creating the new island
It would be great to make the old island disappear

One more thing
Before I did not install this plug-in
The players have been playing for some time had their own home
After installing the plug-in can not open or destroy their own things

As I said, I’m using the overworld to place the islands at this moment. With that I mean that I’m protecting the world so that only the player that owns the island can interact with it (placing blocks, destroying them, etc).
The problem with making the old island disappear is that it would cause a lot of lag. I intend to add a command to clear the islands without players. This way, admins can issue it when the server has no players or in maintenance or whatever.
Sorry for being so late in answering you. When I have some time, I will add the option to change the world and some others improvements.

Ah no new version of I will die ~ will die ~
New Version New Version New Version
ლ(╹◡╹ლ)

This project seems to be abandoned. I’ll see if I can continue it.

Being able to join your friends islands is a must have if you ask me.

This project seems to be abandoned. I’ll see if I can continue.

I must admit it is. I’m a Master student doing the thesis and I’m just getting problems. I was hoping to do something this Christmas but I’m using my time to see if I can catch up

level-type=FLAT
generator-settings=3;minecraft:air,70minecraft:air,5minecraft:air,minecraft:air;3