尝试使用 GeyserMC API 时出现 Java lambda 错误。我的世界 Bukkit

问题描述 投票:0回答:0

我在尝试使用 GeyserMC 的 API 检测单击表单按钮时遇到错误。这就是它所说的: 不可转换类型;不能将 '' 转换为 'org.geysermc.cumulus.response.SimpleFormResponse'

这就是我所做/尝试的错误:

package org.centoricraft.centoriui23;

import org.bukkit.Bukkit;
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 org.geysermc.cumulus.SimpleForm;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.cumulus.response.CustomFormResponse;
import org.geysermc.cumulus.response.SimpleFormResponse;

public class CentoriUI23 extends JavaPlugin implements Listener {

    private FloodgateApi floodgateApi;

    @Override
    public void onEnable() {
        if (getServer().getPluginManager().getPlugin("Floodgate") != null) {
            floodgateApi = FloodgateApi.getInstance();
            getServer().getPluginManager().registerEvents(this, this);
        } else {
            getLogger().warning("Floodgate plugin not found! Disabling plugin...");
            getServer().getPluginManager().disablePlugin(this);
        }
    }

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {
        Player player = event.getPlayer();
        if (floodgateApi.isFloodgatePlayer(player.getUniqueId())) {
            Bukkit.getScheduler().runTaskLater(this, () -> {
                FloodgatePlayer floodgatePlayer = floodgateApi.getPlayer(player.getUniqueId());
                if (floodgatePlayer != null) {
                    SimpleForm form = SimpleForm.builder()
                            .title("Centori UI")
                            .button("Play")
                            .button("Discord")
                            .build();
                    form.setResponseHandler((formPlayer, responseData) -> {
                        if (responseData instanceof SimpleFormResponse) {
                            SimpleFormResponse response = (SimpleFormResponse) responseData;
                            int buttonId = response.getClickedButtonId();
                            if (buttonId == 0) {
                                // Handle "Play" button click
                            } else if (buttonId == 1) {
                                // Handle "Discord" button click
                            }
                        } else if (responseData instanceof CustomFormResponse) {
                            CustomFormResponse response = (CustomFormResponse) responseData;
                            // Handle custom form response
                        }
                    });
                    floodgatePlayer.sendForm(form);
                }
            }, 20L); // Delay for 1 second (20 ticks)
        }
    }

}
java lambda minecraft bukkit
© www.soinside.com 2019 - 2024. All rights reserved.