我正在尝试编写一个Minecraft插件,用一个命令使所有产生电荷的爬虫爬行,而使用另一个命令使它们不带电荷。我已经编写了用于设置侦听器的代码(这样,我的意思是我从https://youtu.be/oHKcQ184aa8?t=22复制了Dream的代码),我只想创建它,因此在以下代码中有一个布尔值代替true:最后一行) '''
@EventHandler
public void creeperSpawn(CreatureSpawnEvent event) {
if (event.getEntityType() == EntityType.CREEPER) {
Creeper creeper = (Creeper) event.getEntity();
creeper.setPowered(true);
}
}
''' 我想将true更改为名为PoweredOrNot的布尔型,然后在运行命令时将其设置为Powered或不设置为true。唯一的问题是它要么说未定义PoweredOrNot,要么当我添加扩展onCommand时,它给我错误“令牌“扩展”上的语法错误,引发预期错误” 和另外两个错误,一个在上面的括号中显示“语法错误,请插入“}”以完成ClassBody”,而添加另一个括号则不起作用。括号下面的另一个错误是“令牌“}语法错误””,请删除此令牌,这样可以消除错误。
我进行了研究,并制作了另一个名为Globals的类,它具有布尔名称或不具有布尔名称,但是当我执行Globals.PoweredOrNot时,它会说它没有定义
这是您可以反编译的jar文件,因为有许多类和软件包可以使用。注意,我认为您可能必须下载spiggot的参考库,但如果jar中包含idk,则请下载idk。 https://drive.google.com/file/d/18XWOHV13I2cB---xlG0socfRMOnnKfPv/view?usp=sharing
完整代码(用于startCommand类)
package me.Gwehyr.chargeall.commands;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
import org.bukkit.command.*;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import me.Gwehyr.chargeall.*;
public class StartCommand implements CommandExecutor, Listener {
private Main plugin;
public StartCommand(Main plugin) {
this.plugin = plugin;
plugin.getCommand("charge").setExecutor(this);
}
@Override
public boolean onCommand( CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player) {
sender.sendMessage("Only Console may execute this command");
return true;
}else {
boolean PoweredOrNot = true;
sender.sendMessage("Creepers Charged!");
}
return true;
}
@EventHandler
public void creeperSpawn(CreatureSpawnEvent event) extends onCommand {
if (event.getEntityType() == EntityType.CREEPER) {
Creeper creeper = (Creeper) event.getEntity();
creeper.setPowered(PoweredOrNot);
}
}
答案 0 :(得分:1)
之所以说尚未初始化是因为它仅在onCommand函数内部进行了初始化。因此,不要将布尔值放在此处(箭头所在的位置)
public boolean onCommand( CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player) {
sender.sendMessage("Only Console may execute this command");
return true;
}else {
boolean PoweredOrNot = true; <---------
sender.sendMessage("Creepers Charged!");
}
return true;
}
把您的课程排在首位。
public boolean PoweredOrNot;
这可以确保已定义它,并且如果您希望能够从另一个类访问此布尔值(我不确定为什么会这样,这取决于您在做什么),而是可以放入
public static boolean PoweredOrNot;
默认情况下该值没有值,因此您可能希望将其设置为false或其他值。
也有人对那些刚接触Bukkit /编码的人说,不要告诉他们“在开始之前先学习”,这是很好的帮助,它可以防止他们下次再做。希望对您有所帮助!