所以即时创建一个简单的冻结插件,它应该冻结我。不知怎的,它不起作用,因为它无法识别我的oncommand。该插件应该通过将编写插件的播放器添加到toggleList来切换它。我有3节课。
main class (Freeze.java)
package net.parinacraft.freeze;
import org.bukkit.material.Command;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import net.parinacraft.freeze.player.commands.komento;
import net.parinacraft.freeze.komento;
public class Freeze extends JavaPlugin {
public static List<UUID> toggleList = new ArrayList<UUID>();
@Override
public void onEnable(){
registerCommands();
registerEvents();
}
public void registerCommands() {
getCommand("freeze").setExecutor(new komento());
}
public void registerEvents(){
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new Toggle(), this);
}
}
我猜的命令的第二个类(komento.java)
package net.parinacraft.freeze;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.material.Command;
public class komento implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command Freeze, String label, String[] args){
if(!(sender instanceof Player)){
sender.sendMessage(ChatColor.RED + "Sinun pitää olla pelaaja käyttääkseen tätä komentoa");
return true;
}
Player player = (Player) sender;
if(!Freeze.toggleList.contains(player.getUniqueId())){
player.sendMessage(ChatColor.GREEN + "sinut on jäädytetty tutkinnan ajaksi");
Freeze.toggleList.add(player.getUniqueId());
} else{
player.sendMessage(ChatColor.RED +"Et ole enään jäädytetty");
Freeze.toggleList.remove(player.getUniqueId());
}
return true;
}
}
然后我的第三课打开/关闭命令(Toggle.java)
package net.parinacraft.freeze;
import org.bukkit.Location;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
import package net.parinacraft.;
public class Toggle implements Listener {
@EventHandler
public void onPlayerMove(PlayerMoveEvent evt) {
Player player = evt.getPlayer();
if (Freeze.togglelist.contains(player.getUniqueId())){
Location back = new Location(evt.getFrom().getWorld(), evt.getFrom().getX(), evt.getFrom().getY(), evt.getFrom().getZ());
evt.getPlayer().teleport(back);
}
}
}
还有什么我应该添加到plugin.yml?
因为你没有发布plugin.yml
文件,我想你错过了冻结命令的定义。
典型的plugin.yml
文件包含commands
部分,其中定义了插件的所有命令。
name: Inferno
version: 1.4.1
description: This plugin is so 31337. You can set yourself on fire.
author: CaptainInflamo
authors: [Cogito, verrier, EvilSeph]
website: http://forums.bukkit.org/threads/MyPlugin.31337/
main: com.captaininflamo.bukkit.inferno.Inferno
database: false
depend: [NewFire, FlameWire]
commands:
flagrate:
description: Set yourself on fire.
aliases: [combust_me, combustMe]
permission: inferno.flagrate
usage: Syntax error! Simply type /<command> to ignite yourself.
在你的情况下你应该添加:
commands:
freeze:
description: Freeze yourself.
usage: Syntax error! Simply type /freeze to freeze yourself.
你可以在以下网址阅读关于plugin.yml
的信息: