java - 我想在玩家重生时传送他,但它不起作用,玩家不会被传送

标签 java plugins minecraft bukkit

所以我制作了一个插件,在执行/pvpeventon 后注册事件,并在执行/pvpeventoff 后取消注册所有事件。 它是一个 PVP 事件插件。 我想在玩家重生后传送他们,但它不起作用。他们不会被传送。顺便说一句:我很长时间没有编写 Spigot 代码了。这是我的代码:

package me.leopa.R1.FFA;




import org.bukkit.Location;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;

import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.md_5.bungee.api.ChatColor;




public class MainFFA extends JavaPlugin implements Listener{

@Override
public void onEnable() {
    System.out.println("[INFO Leopa] Start");
    super.onEnable();
}

@Override
public void onDisable() {
System.out.println("[INFO Leopa] Stop");
super.onDisable();
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {


    if(command.getName().equalsIgnoreCase("PVPEVENTon")) {
        if(sender instanceof Player) {
        getServer().getPluginManager().registerEvents(this, this);

        }
    }



    if(command.getName().equalsIgnoreCase("PVPEVENToff")) {
        HandlerList.unregisterAll();
    }
    return true;


    }
@EventHandler
public void onRespawnPVPEVENT(PlayerRespawnEvent pvpevent) {
    Player p = pvpevent.getPlayer();
    double x = 22;
    double y = 82;
    double z = 22;
    Location loc = new Location(Bukkit.getWorld("world"), x, y, z);
    p.teleport(loc);


}
@EventHandler
public void sed(PlayerDeathEvent totevent) {
    Player p1 = totevent.getEntity();
    p1.sendMessage(ChatColor.GOLD + "[PvP Event] " + ChatColor.AQUA + "Du Bist Gestorben und somit raus");
}


}

最佳答案

PlayerRespawnEvent 有一个方法 setRespawnLocation(),它允许您更改玩家重生的位置。您的 PlayerRespawnEvent 处理程序应如下所示:

@EventHandler
public void onRespawnPVPEVENT(PlayerRespawnEvent pvpevent) {
    Player p = pvpevent.getPlayer();
    double x = 22;
    double y = 82;
    double z = 22;
    Location loc = new Location(Bukkit.getWorld("world"), x, y, z);
    pvpevent.setRespawnLocation(loc);
}

关于java - 我想在玩家重生时传送他,但它不起作用,玩家不会被传送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334746/

相关文章:

java - 当我装备盔甲时激活的方法

c# - MS Dynamics CRM 插件错误 - [A]CrmWebSvc 无法转换为 [B]CrmWebSvc

c++ - 如何在插件系统中正确暴露 API?

kotlin - 如何在Gradle插件中表达项目依赖关系?

java - 我的世界插件 : Get Block Type at specific coordinates

java - request.getMethod().equalsIgnoreCase ("post") 在 (pre-Spring-3.0) Spring 博客应用程序中是个坏主意吗?

java - Retrofit 的响应无法获取对象值

java - asList 函数是 Lamdaj 库的一部分

需要基于Java的工作流引擎

java - Minecraft 插件 我如何修复我的武器系统?