我编写了一个node.js服务器,它可以从Web界面生成Java子进程,并将jar的标准输出显示到该接口。现在我需要通过标准输入发送一些命令到罐子,这就是我的问题:
我生成服务器:
jar = cp.spawn('java', ['-Xmx1024M', '-jar', dir+'craftbukkit.jar', '-o true','-nojline'], {
cwd:dir);
Run Code Online (Sandbox Code Playgroud)
尝试发送一些命令:
jar.stdin('stop\n');
Run Code Online (Sandbox Code Playgroud)
但是它什么也没做。在“其他子进程”中,它的工作原理是这样的,但是现在我不知道如何执行此操作。有人有主意吗?
谢谢你们!
在为我的 bukkit 插件编程时,我意识到我需要有自己的配置文件,以便我可以在文件中添加注释。我还需要能够更新配置(如果它已经创建并且是旧的)。
我最近还完成了一个简单的 jQuery 插件,我使用jQuery.extend并合并了两个设置数组。我想知道这在带有配置文件的 java 中是否可行。
我的问题:
Is there a way i can merge the new default config with the one the user already has? (Removing non-needed values or changing the names of the same strings)
问题的解释:
这是我可能拥有的示例 config.yml:
# Comment here....
myString: defaultString
myBool: false
myList:
- Value
- Value 2
Run Code Online (Sandbox Code Playgroud)
很简单。假设这是我的默认配置。插件已将此配置(如果尚未存在)复制到插件文件夹中。但是,这带来了一个问题:
What if i need to update my config? (Add/Remove a bool, string, etc.)
有一天,我说“我不再需要那个布尔值myBool”。我从默认的 config.yml 中删除它,配置看起来像这样:
# Comment here....
myString: defaultString …Run Code Online (Sandbox Code Playgroud) 使用bukkit API,是否可以进行类似以下伪代码的调用:
Bukkit.getPluginManager().getPlugin("PluginName").getJarFile();
Run Code Online (Sandbox Code Playgroud)
对于像MobBountyReloaded这样的插件,它会返回plugins/MobBountyReloaded_v235.jar.
我尝试使用众所周知的命名方案来寻找文件,例如只是附加.jar或<version>.jar插件的名称,但这并不总能产生正确的结果.上面的例子失败了,因为plugin.yml文件中的版本号只是235和不是_v235,而一些插件使用的方案<PluginName>-<Version>-<buildnumber>.jar.
有没有一种简单的方法来实现这一目标?每个加载的插件的文件信息必须在内存中的某个位置,不是吗?
这是我的插件代码.
public boolean reapSoul(Player player, Player tplayer, double damage)
{
if(player.hasPermission("myrace.wraith.reap"))
{
player.sendMessage(ChatColor.DARK_GRAY + "You have reaped " + tplayer.getName() + "'s soul.");
damage = player.getLevel()/10;
double heal = damage/2;
tplayer.damage(damage);
player.setHealth(player.getHealth() + heal);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我知道可能存在很多错误,我可以自己处理它们.我无法处理的那个是
player.setHealth(player.getHealth() + heal);
Run Code Online (Sandbox Code Playgroud)
Eclipse(我的IDE)告诉我getHealth()方法对于Player类型是不明确的.
我知道自从Bukkit 1.6.x发布以来,这可能是一个非常受欢迎的问题,但我所做的搜索都没有给我一个我能理解的解决方案.
如果这确实是解决方案,请你帮我理解我能做些什么......
谢谢.
我想为我的config.yml. 如何正确添加translateAlternateColorCode到我的代码中?
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Player player = (Player) sender;
if(cmd.getName().equalsIgnoreCase("member")) {
player.sendMessage(getConfig().getString("MemberText"));
}
Run Code Online (Sandbox Code Playgroud) 我尝试在我的bukkit服务器中加载插件时遇到NullPointerException,但Eclipse中没有错误.我的插件是Rush pluing,很多东西没有使用/丢失.错误是这样的:
[18:11:10] [Server thread/ERROR]: Could not load 'plugins\rush.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.NullPointerException
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:182) ~ [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:308) ~ [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:231) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugins(CraftServer.java:255) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.craftbukkit.v1_7_R1.CraftServer.<init>(CraftServer.java:233) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.PlayerList.<init>(PlayerList.java:63) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.DedicatedPlayerList.<init>(SourceFile:14) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.DedicatedServer.init(DedicatedServer.java:126) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:424) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
Caused by: java.lang.NullPointerException
at me.mailh.Rush.MainRush.<init>(MainRush.java:62) ~[?:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_45]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_45]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~ [?:1.7.0_45]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.7.0_45]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:178) ~ [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
... 9 more
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
package me.mailh.Rush;
import …Run Code Online (Sandbox Code Playgroud) 我正在制作一个Bukkit插件,可以将任何玩家下方的区块改为发光石.
调度程序无法正常工作.地面将变为辉光石,但辉石石块不会恢复到原来的状态.
@EventHandler
public void onStep(PlayerMoveEvent pme) {
Player player = pme.getPlayer();
Location locUnderPlayer = player.getLocation();
locUnderPlayer.setY(locUnderPlayer.getY() - 1);
Location locForScheduler = player.getLocation();
locForScheduler.setY(locForScheduler.getY() + 1);
final Material materialForScheduler = locForScheduler.getBlock().getType();
Block block = locUnderPlayer.getBlock();
Material m = player.getItemInHand().getType();
if (m == Material.GLOWSTONE) {
if (block.getType() != Material.AIR && block.getType() != Material.WATER && block.getType() != Material.STATIONARY_WATER && block.getType() != Material.LAVA && block.getType() != Material.STATIONARY_LAVA && block.getType() != Material.REDSTONE_WIRE && block.getType() != Material.REDSTONE_COMPARATOR && block.getType() != Material.REDSTONE_TORCH_ON && block.getType() != Material.REDSTONE_TORCH_OFF) …Run Code Online (Sandbox Code Playgroud) 在 Bukkit 插件中,可以选择直接向玩家发送消息,如下所示:
p.sendMessage(message);
Run Code Online (Sandbox Code Playgroud)
是否可以选择将消息发送给所有在线玩家,将消息“广播”给所有人?
所以我一直在 Bukkit 中构建一些 EventHandlers,现在我坚持这个。这可能是一个非常愚蠢的错误,所以请原谅我。
我想要的是以下内容:当我右键单击一个块时,它应该每秒:test在聊天中。但它实际上每秒放置两次。我一直在调试几乎整个代码,但我没有让它工作。在我看来,它是注册两次。
Main() 类:
public class Main extends JavaPlugin {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(new Events(), this);
}
@Override
public void onDisable() {
}
}
Run Code Online (Sandbox Code Playgroud)
事件()类:
public class Events implements Listener {
public Plugin plugin = Main.getPlugin(Main.class);
@EventHandler
public void onInteract(PlayerInteractEvent e) {
Player player = e.getPlayer();
Action action = e.getAction();
if(action.equals(Action.RIGHT_CLICK_BLOCK)) {
new BukkitRunnable() {
@Override
public void run() {
player.sendMessage("Test");
}
}.runTaskTimer(plugin, 1, 20);
}
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在尝试对字符串列表进行排序。字符串包含用户名和他们的杀戮。我想使用用户名和 - 之前的杀死数对列表进行排序。我已经阅读了 Comparator 并尝试了一些但没有任何运气。
public class Test {
public static List<String> TOP10_Players = new ArrayList<>();
public static void AddPlayers() {
// TOP10_Players.add("[Kills]-[Username]");
TOP10_Players.add("1-Username1");
TOP10_Players.add("2-Username2");
TOP10_Players.add("3-Username3");
SortList();
}
public static void SortList() {
// Code to sort list
}
}
Run Code Online (Sandbox Code Playgroud)