标签: bukkit

Node.js:如何写入java-childprocess-stdin

我编写了一个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)

但是它什么也没做。在“其他子进程”中,它的工作原理是这样的,但是现在我不知道如何执行此操作。有人有主意吗?

谢谢你们!

java stdin child-process node.js bukkit

3
推荐指数
1
解决办法
2322
查看次数

在 Java 中合并两个 Config.yml 文件?

在为我的 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)

java yaml minecraft bukkit

3
推荐指数
1
解决办法
4238
查看次数

有没有可靠的方法来获取插件的JAR文件的名称?

使用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.

有没有一种简单的方法来实现这一目标?每个加载的插件的文件信息必须在内存中的某个位置,不是吗?

java jar minecraft bukkit

2
推荐指数
1
解决办法
1879
查看次数

方法getHealth()对于Player-Bukkit 1.6.4类型是不明确的

这是我的插件代码.

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发布以来,这可能是一个非常受欢迎的问题,但我所做的搜索都没有给我一个我能理解的解决方案.

如果确实是解决方案,请你帮我理解我能做些什么......

谢谢.

java ambiguous minecraft bukkit

2
推荐指数
1
解决办法
8884
查看次数

向 Bukkit 插件添加颜色代码支持

我想为我的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)

java bukkit

2
推荐指数
1
解决办法
7751
查看次数

Java NullPointException Bukkit插件

我尝试在我的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)

java nullpointerexception minecraft bukkit

2
推荐指数
1
解决办法
1704
查看次数

将任何播放器下方的块设置为发光石,然后将其重新设置为原始材质

我正在制作一个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)

java bukkit

2
推荐指数
1
解决办法
4010
查看次数

如何使用 Bukkit 广播消息?

在 Bukkit 插件中,可以选择直接向玩家发送消息,如下所示:

p.sendMessage(message);
Run Code Online (Sandbox Code Playgroud)

是否可以选择将消息发送给所有在线玩家,将消息“广播”给所有人?

java minecraft bukkit

2
推荐指数
1
解决办法
1万
查看次数

Bukkit PlayerInteractEvent 注册两次

所以我一直在 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)

提前致谢!

java events bukkit

2
推荐指数
1
解决办法
1339
查看次数

对包含数字和字母的字符串列表进行排序

我正在尝试对字符串列表进行排序。字符串包含用户名和他们的杀戮。我想使用用户名和 - 之前的杀死数对列表进行排序。我已经阅读了 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)

java arrays sorting list bukkit

2
推荐指数
1
解决办法
141
查看次数