Bukkit Player removeResourcePack?

时间:2016-07-11 12:45:25

标签: bukkit

我知道如何将特定的ResourcePack发送到我服务器上的播放器。 我使用多个小型迷你游戏服务器,其中一个迷你游戏需要一个ResourcePack,因此我发送了具有此功能的ResourcePack:

p.setResourcePack("URL");

但是现在如果播放器被发送回大厅服务器,则不会自动删除ResourcePack。我真的想删除ResourcePack,因为如果玩家玩另一个游戏,他可能会被所有特殊纹理混淆。我已经尝试发送一个“null”ResourcePack

p.setResourcePack(null);

但这引发了异常。

http://hastebin.com/gojuqesafa.profile

那么有人知道另一个解决方案然后向他发送一个默认的ResourcePack吗?

2 个答案:

答案 0 :(得分:1)

我认为最好的方法可能是将播放器资源包设置为默认值,这样做:

首先,创建一个名为default(或其他)的新文件夹。

然后进入你的.minecraft /版本打开你的插件支持的minecraft版本的文件夹,用winrar这样的程序打开jar文件,并将assets文件夹复制到你刚刚创建的默认纹理包文件夹中。然后使用以下内容创建一个名为pack.mcmeta的文件:

{
  "pack": {
    "pack_format": 1,
    "description": "Default texture pack"
  }
}

之后,创建一个新图像(大小最好应该是64x64或128x128)并将其设为黑色,因为它并不重要,然后将其上传到mediafire或其他网站并获取文件链接(用于mediafire) ,转到他们为您提供的链接,右键单击绿色按钮并按复制链接位置。

完成后,在您的代码中执行:

p.setResourcePack("URL TO DEFAULT TEXTURE PACK");

这不会将玩家纹理包设置为之前的状态,但会将其设置回默认的Minecraft纹理包

答案 1 :(得分:0)

正如javadocs所述,无法将播放器的资源包设置为默认值:

  

在Minecraft中没有将资源包重置为默认值的概念,因此玩家必须重新执行此操作。

你可以做的是拥有一个类似默认的资源包URL,然后让玩家下载它,但它不会是默认值。

也没有办法知道播放器使用的包是否为默认包(他可能有一个自定义包,不会是默认版本)