代码之家  ›  专栏  ›  技术社区  ›  Nicola Uetz

Bukkit Player是否删除资源包?

  •  1
  • Nicola Uetz  · 技术社区  · 10 年前

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

    p.setResourcePack("URL");
    

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

    p.setResourcePack(null);
    

    但这引发了一个例外。

    http://hastebin.com/gojuqesafa.profile

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

    2 回复  |  直到 10 年前
        1
  •  1
  •   ItzBenteThePig    10 年前

    我认为最好的方法可能是将玩家资源包设置为默认值,如下所示:

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

    然后进入你的.minecraft/versions打开插件支持的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纹理包

        2
  •  0
  •   LeoColman    10 年前

    如所述 javadocs ,无法将玩家的资源包设置为默认值:

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

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

    也无法知道这是否是玩家使用的默认包(他可以有一个自定义包,这不是默认版本)