以下是使用Java编写的Bukkit插件,可以在玩家进入地狱门时将其传送回进入地狱门之前的位置,并打开一个GUI界面。

首先,创建一个新的Java类文件,命名为"PortalPlugin",并在其中添加以下代码:

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.HashMap;

public class PortalPlugin extends JavaPlugin implements Listener {

    private HashMap<String, Location> previousLocations;

    @Override
    public void onEnable() {
        // 注册事件监听器
        getServer().getPluginManager().registerEvents(this, this);

        // 初始化HashMap
        previousLocations = new HashMap<>();
    }

    @Override
    public void onDisable() {
        // 清空HashMap
        previousLocations.clear();
    }

    @EventHandler
    public void onPlayerMove(PlayerMoveEvent event) {
        Player player = event.getPlayer();
        Location from = event.getFrom();
        Location to = event.getTo();

        // 检查玩家是否进入地狱门
        if (isNetherPortal(to.getBlock())) {
            // 将玩家传送回进入地狱门之前的位置
            if (previousLocations.containsKey(player.getName())) {
                Location previousLocation = previousLocations.get(player.getName());
                player.teleport(previousLocation);
            } else {
                // 如果没有记录玩家之前的位置,则将其传送到世界的默认位置
                World defaultWorld = Bukkit.getWorlds().get(0);
                player.teleport(defaultWorld.getSpawnLocation());
            }

            // 打开GUI界面
            openPortalGUI(player);

            // 取消传送事件
            event.setCancelled(true);
        }

        // 记录玩家的当前位置
        previousLocations.put(player.getName(), from);
    }

    private boolean isNetherPortal(Block block) {
        return block.getType() == Material.NETHER_PORTAL;
    }

    private void openPortalGUI(Player player) {
        Inventory gui = Bukkit.createInventory(null, 9, "Portal GUI");

        // 在GUI中添加物品
        ItemStack item = new ItemStack(Material.DIAMOND);
        ItemMeta meta = item.getItemMeta();
        meta.setDisplayName("Welcome to the Nether!");
        item.setItemMeta(meta);
        gui.setItem(4, item);

        // 打开GUI界面
        player.openInventory(gui);
    }
}

然后,在plugin.yml文件中添加以下内容:

name: PortalPlugin
version: 1.0
main: com.example.PortalPlugin
api-version: 1.20.1-R0.1-SNAPSHOT

最后,将以上代码保存并导出为一个jar文件,并将其放置在Bukkit服务器的插件文件夹中。

注意:以上代码仅适用于Bukkit 1.20.1版本。如果使用其他版本的Bukkit,可能需要做一些调整

用Java写一个Bukkit1201的 玩家进入地狱门的时候不会传送到地狱并且 会将玩家传送到进入地狱门之前并且打开一个Gui

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

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