gpt4 book ai didi

java - 全局 boolean 值不能被另一个类访问

转载 作者:行者123 更新时间:2023-12-01 16:35:30 26 4
gpt4 key购买 nike

我正在尝试编写一个 Minecraft 插件,使用一个命令可以使所有生成的苦力怕充电,而使用另一个命令则可以使它们全部不充电。我已经编写了设置监听器的代码(我的意思是我从 https://youtu.be/oHKcQ184aa8?t=22 复制了 Dream 的代码),我只是想让它在下面的代码中用一个 boolean 值代替 true (最后一行)'''

    @EventHandler
public void creeperSpawn(CreatureSpawnEvent event) {
if (event.getEntityType() == EntityType.CREEPER) {
Creeper creeper = (Creeper) event.getEntity();
creeper.setPowered(true);
}
}

''' 我想将 true 更改为名为 PoweredOrNot 的 boolean 值,然后运行命令时,将其设置为 Powered 或 not 为 true。唯一的问题是它要么说 PoweredOrNot 未定义,要么当我添加 extends onCommand 时,它给我错误“ token “扩展”上的语法错误,抛出预期”还有另外两个错误,其中一个在上面的括号上,显示“语法错误,插入“}”以完成 ClassBody”,添加另一个括号不起作用。下面括号中出现另一个错误,显示“ token “}”上的语法错误,请删除此 token ,删除即可消除该错误。

我做了研究并制作了另一个名为 Globals 的类,它也有 boolean 名称powered or not,但是当我做 Globals.PoweredOrNot 时,它会说它没有定义

这里是供您反编译的 jar 文件,因为有许多类和包需要使用。请注意,我认为您可能需要下载 spiggot 的引用库,但我不知道是否包含在 jar 中。 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);
}
}

最佳答案

它说它未初始化的原因是因为它仅在 onCommand 函数内初始化。因此,不要将 boolean 值放在这里(箭头所在的位置)

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;
}

在类(class)中名列前茅。

public boolean PoweredOrNot;

这可以确保它已定义,并且如果您希望能够从另一个类访问此 boolean 值(我不确定为什么要这样做,这取决于您正在制作的内容),您可以输入

public static boolean PoweredOrNot;

默认情况下它没有值,因此您可能需要将其设置为 false 或其他值。

对于那些对 Bukkit/编码不熟悉的人来说,不要告诉他们“在开始之前学习”,获得帮助是件好事,这会阻止他们下次这样做。希望这有帮助!

关于java - 全局 boolean 值不能被另一个类访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61957647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com