以下是一个使用Java编写的Bukkit插件,基于SuperiorSkyblock2插件,可以在玩家加入服务器时,如果有空岛则直接传送到空岛,如果没有空岛则自动创建一个空岛。

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI;
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;

public class JoinIslandPlugin extends JavaPlugin implements Listener {
    
    @Override
    public void onEnable() {
        // 注册事件监听器
        Bukkit.getPluginManager().registerEvents(this, this);
    }
    
    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {
        Player player = event.getPlayer();
        SuperiorPlayer superiorPlayer = SuperiorSkyblockAPI.getPlayer(player);
        
        // 检查玩家是否已经有空岛
        if (superiorPlayer.getIsland() != null) {
            // 如果有空岛,直接传送到空岛
            Island island = superiorPlayer.getIsland();
            Location islandLocation = island.getCenter();
            teleportPlayer(player, islandLocation);
        } else {
            // 如果没有空岛,创建一个新的空岛
            World world = createIslandWorld();
            Location spawnLocation = world.getSpawnLocation();
            teleportPlayer(player, spawnLocation);
            
            // 设置玩家的空岛
            SuperiorSkyblockAPI.getGrid().getIslandAt(spawnLocation, island -> {
                if (island != null) {
                    superiorPlayer.setIsland(island);
                }
            });
        }
    }
    
    private void teleportPlayer(Player player, Location location) {
        player.teleport(location);
    }
    
    private World createIslandWorld() {
        WorldCreator worldCreator = new WorldCreator('island_world');
        worldCreator.generator(new EmptyWorldGenerator());
        return Bukkit.createWorld(worldCreator);
    }
}

请确保已经安装了SuperiorSkyblock2插件,并将其添加到您的项目依赖中。

此插件将在玩家加入服务器时触发PlayerJoinEvent事件,然后检查玩家是否已经有空岛。如果有空岛,则直接将玩家传送到空岛的中心位置;如果没有空岛,则创建一个名为island_world的新世界,并将玩家传送到该世界的生成点。然后,通过SuperiorSkyblockAPI.getGrid().getIslandAt()方法,将该空岛设置为玩家的空岛。

注意:EmptyWorldGenerator是一个空的世界生成器,它会生成一个没有任何方块的空白世界。您可以根据需要更改世界生成器的实现。

Bukkit 1.20.1 SuperiorSkyblock2 自动创建/传送空岛插件

原文地址: https://www.cveoy.top/t/topic/fybm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录