Coder Social home page Coder Social logo

xiamozhishi / feathermorph Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 0.0 5.96 MB

Yet another morph/disguise plugin, for Paper servers

Home Page: https://modrinth.com/plugin/feathermorph

License: MIT License

Java 100.00%
java minecraft minecraft-plugin paper paper-plugin folia folia-plugin folia-plugins folia-supported

feathermorph's Introduction

cover

Pic

客户端集成Mod | Wiki (施工中)

~ 72变,但是MC ~


功能和特色

  • 变形成游戏中的各种生物

  • 支持伪装为玩家!

  • 能增强使用体验的客户端集成,例如伪装选择界面和技能快捷键

  • 多语言支持!根据玩家客户端语言自动切换!

  • 涵盖了绝大多数原版特性的技能和天赋实现

  • 聊天覆盖 —— 在聊天中伪装自己的名称

  • 交互镜像 —— 将你的操作镜像到别人的身上 (好像这两个都不太属于一个变形插件该有的功能

依赖

此插件需要以下这些东西来正常运作:

  • 一个Paper系(Paper或基于Paper)的服务端

为了在服务端向其他人显示伪装,我们需要以下这些插件:

若要运行之前的版本(非1.x和0.13.x),还需安装LibsDisguises

下载

Available on Modrinth Available on GitHub

Modrinth | GitHub(中文更新日志可在这里查看)


快速上手

  1. 你可以通过 /morph 指令来使用变形功能,用 /unmorph 来变回自己

  2. 如果没有安装客户端集成,默认情况下使用技能的方法是手持羽毛潜行+使用

  3. 默认情况下,客户端集成打开选择界面的按键是 N,使用技能是 V,你可以在键位设置中了解更多

  4. 你可以用 /request 指令来管理交换请求,接受别人的交换请求后双方都可以变成对方的样子

  5. 插件的剩余指令均在 /fm(或 /feathermorph)中,你可以通过 help 子指令来查看更多信息

  6. 插件的大多数功能都可以通过指令配置,用法是 /fm option <id> <值>

注意!

  • 如果不安装ProtocolLib插件也能运行,但需要依赖客户端集成来向别人显示伪装

  • 若服务器安装了其他聊天插件,聊天覆盖功能可能会失效!


构建

#!/usr/bin/env bash
git clone https://github.com/XiaMoZhiShi/FeatherMorph
cd FeatherMorph

./gradlew build --no-daemon

生成的文件将位于build/libs中,FeatherMorph-x.x.x-all.jar就是构建出来的插件。

feathermorph's People

Contributors

matrix-feather avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

feathermorph's Issues

question permissions

I have a question and that is that I want to give the users the disguises by permission what would be the permission that I would have to give them so that for example they can transform into the allay?

[TODO] Tweak ability system

调整现有的天赋系统:

  • 现有的AbilityHandler更名为AbilityManager,将负责天赋的注册管理和更新器的创建
    • 更新器现在交给DisguiseState自动创建,初始化DisguiseState时将创建一个空的更新器
  • 实现新的AbilityHandler(AbilityUpdater?),只负责处理更新玩家拥有的天赋状态
    • 更新器是否要允许中途添加天赋?
    • 更新器会根据玩家是否拥有权限决定是否更新某一天赋
      • 天赋被添加时默认会添加到一个列表,此列表会在下次tick时被调用,调用时会根据权限所有情况决定是否启用
      • 若中途被取消权限,则调用天赋的revokeFromPlayer移除天赋,并移入禁用列表
      • 若中途被赋予权限,则调用天赋的applyToPlayer重新应用天赋,并移出禁用
      • 添加天赋到更新器时会检查权限是否允许玩家应用此天赋,如果没有权限,则仅添加到禁用列表
  • 调整DisguiseState中的天赋接口,使其返回新的更新器

这将整理现有的天赋流程,并允许我们更方便地根据权限决定要为玩家更新哪些天赋。

[TODO] Fix Client Renderer and make it a standalone backend

我们希望客户端渲染器能作为一个独立的后端存在,而非像现在这样四处穿插在插件各处。
同时在独立为后端后修复它的NBT同步。


We hope the Client Renderer can exist as a standalone backend like the Server Backend, rather than being everywhere in the plugin.

Also need to fix NBT syncing after it becomes a standalone backend.

无法加载此插件,并且已尝试多个版本

服务端是Mohist version 1.20.1-604 (MC: 1.20.1) (Implementing API version 1.20.1-R0.1-SNAPSHOT, Forge version 47.2.20, NeoForge version 47.1.79)
image
[09:11:31 INFO]: [FeatherMorph] Enabling FeatherMorph v0.12.16
[09:11:31 ERROR]: 初始化xiamomc.morph.events.PlayerTracker@380848cf失败: io/papermc/paper/event/player/PlayerArmSwingEvent
[09:11:31 WARN]: java.lang.NoClassDefFoundError: io/papermc/paper/event/player/PlayerArmSwingEvent
[09:11:31 WARN]: at TRANSFORMER/[email protected]/com.mohistmc.bukkit.remapping.ClassLoaderRemapper.tryDefineClass(ClassLoaderRemapper.java:172)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/com.mohistmc.bukkit.remapping.ReflectionHandler_8.redirectGetDeclaredMethods(ReflectionHandler.java:47)
[09:11:31 WARN]: at xiamomc.morph.shaded.pluginbase.PluginObject.addInitializerMethods(PluginObject.java:53)
[09:11:31 WARN]: at xiamomc.morph.shaded.pluginbase.PluginObject.initialDependencyResolve(PluginObject.java:90)
[09:11:31 WARN]: at xiamomc.morph.shaded.pluginbase.PluginObject.(PluginObject.java:46)
[09:11:31 WARN]: at xiamomc.morph.MorphPluginObject.(MorphPluginObject.java:5)
[09:11:31 WARN]: at xiamomc.morph.events.PlayerTracker.(PlayerTracker.java:28)
[09:11:31 WARN]: at xiamomc.morph.MorphPlugin.onEnable(MorphPlugin.java:102)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:347)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:336)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:482)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:549)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:462)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_129815_(MinecraftServer.java:441)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130006_(MinecraftServer.java:341)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:224)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:850)
[09:11:31 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:281)
[09:11:31 WARN]: at java.base/java.lang.Thread.run(Unknown Source)

Exception: java.lang.NoClassDefFoundError thrown from the UncaughtExceptionHandler in thread "sentry-pool-1-thread-1"
[09:11:32 ERROR]: Error occurred while enabling FeatherMorph v0.12.16 (Is it up to date?)
java.lang.NoSuchMethodError: 'net.kyori.adventure.key.Key org.bukkit.attribute.Attribute.key()'
at xiamomc.morph.abilities.options.AttributeModifyOption.from(AttributeModifyOption.java:31) ~[?:?]
at xiamomc.morph.skills.DefaultConfigGenerator.lambda$addAbilityConfigurations$17(DefaultConfigGenerator.java:227) ~[?:?]
at xiamomc.morph.skills.DefaultConfigGenerator.addAbilityConfiguration(DefaultConfigGenerator.java:97) ~[?:?]
at xiamomc.morph.skills.DefaultConfigGenerator.addAbilityConfiguration(DefaultConfigGenerator.java:106) ~[?:?]
at xiamomc.morph.skills.DefaultConfigGenerator.addAbilityConfigurations(DefaultConfigGenerator.java:224) ~[?:?]
at xiamomc.morph.skills.DefaultConfigGenerator.getDefaultSkillConfiguration(DefaultConfigGenerator.java:136) ~[?:?]
at xiamomc.morph.storage.skill.SkillAbilityConfigurationStore.createDefault(SkillAbilityConfigurationStore.java:56) ~[?:?]
at xiamomc.morph.storage.skill.SkillAbilityConfigurationStore.createDefault(SkillAbilityConfigurationStore.java:30) ~[?:?]
at xiamomc.morph.shaded.pluginbase.JsonBasedStorage.(JsonBasedStorage.java:34) ~[?:?]
at xiamomc.morph.storage.MorphJsonBasedStorage.(MorphJsonBasedStorage.java:6) ~[?:?]
at xiamomc.morph.storage.skill.SkillAbilityConfigurationStore.(SkillAbilityConfigurationStore.java:30) ~[?:?]
at xiamomc.morph.MorphPlugin.onEnable(MorphPlugin.java:132) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:347) ~[forge-1.20.1-47.2.20-universal.jar%23197!/:?]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:336) ~[forge-1.20.1-47.2.20-universal.jar%23197!/:?]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:482) ~[forge-1.20.1-47.2.20-universal.jar%23197!/:?]
at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:549) ~[forge-1.20.1-47.2.20-universal.jar%23197!/:997de31d-ddc9a2dad-d2eba2c8-47.1.79]
at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:462) ~[forge-1.20.1-47.2.20-universal.jar%23197!/:997de31d-ddc9a2dad-d2eba2c8-47.1.79]
at net.minecraft.server.MinecraftServer.m_129815_(MinecraftServer.java:441) ~[server-1.20.1-20230612.114412-srg.jar%23192!/:?]
at net.minecraft.server.MinecraftServer.m_130006_(MinecraftServer.java:341) ~[server-1.20.1-20230612.114412-srg.jar%23192!/:?]
at net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:224) ~[server-1.20.1-20230612.114412-srg.jar%23192!/:?]
at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:850) ~[server-1.20.1-20230612.114412-srg.jar%23192!/:?]
at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:281) ~[server-1.20.1-20230612.114412-srg.jar%23192!/:?]
at java.lang.Thread.run(Unknown Source) [?:?]
[09:11:32 INFO]: [FeatherMorph] Disabling FeatherMorph v0.12.16
[09:11:32 ERROR]: 无法保存数据存储的配置: Cannot invoke "java.io.File.exists()" because "this.configurationFile" is null
[09:11:32 WARN]: Error occurred while disabling: java.lang.NullPointerException: Cannot invoke "java.io.File.exists()" because "this.configurationFile" is null
[09:11:32 WARN]: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.io.File.exists()" because "this.configurationFile" is null
[09:11:32 WARN]: at xiamomc.morph.shaded.pluginbase.JsonBasedStorage.saveConfiguration(JsonBasedStorage.java:147)
[09:11:32 WARN]: at xiamomc.morph.MorphManager.saveConfiguration(MorphManager.java:1361)
[09:11:32 WARN]: at xiamomc.morph.MorphManager.onPluginDisable(MorphManager.java:1169)
[09:11:32 WARN]: at xiamomc.morph.MorphPlugin.onDisable(MorphPlugin.java:176)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:349)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:365)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:507)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:482)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:549)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:462)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_129815_(MinecraftServer.java:441)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130006_(MinecraftServer.java:341)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:224)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:850)
[09:11:32 WARN]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:281)
[09:11:32 WARN]: at java.base/java.lang.Thread.run(Unknown Source)
[09:11:32 WARN]: Caused by: java.lang.NullPointerException: Cannot invoke "java.io.File.exists()" because "this.configurationFile" is null
[09:11:32 WARN]: at xiamomc.morph.shaded.pluginbase.JsonBasedStorage.saveConfiguration(JsonBasedStorage.java:131)
[09:11:32 WARN]: ... 16 more

[IDEA] Spilt commands into packets?

If so, we could use the vanilla network system to make the command system clearer, instead of parsing command strings to wrappers.

However that may require the standalone protocol library to access the Minecraft code, and at present I don't see any cross-platform tool that could support both modding and plugin platforms.

Suggestion: Vex targeting other mobs since spawned

Please change the plugin so that vexes summoned by a player disguised as an evoker attack mobs that attacked the summoner and mobs that the summoner attacks since now vexes just fly around useless after the mob is defeated.

folia 报错

[FeatherMorph] Unhandled exception number 1024 occurred in onPacketSending(PacketEvent) for FeatherMorph
java.lang.IllegalStateException: Asynchronous Chunk getEntities call!
at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:15) ~[luminol-1.20.4.jar:git-Luminol-"59a428e"]
at net.minecraft.server.level.ServerLevel.getEntities(ServerLevel.java:2832) ~[?:?]
at net.minecraft.server.level.ServerLevel.getEntity(ServerLevel.java:2246) ~[?:?]
at xiamomc.morph.backends.server.renderer.network.listeners.ProtocolListener.getNmsEntityFrom(ProtocolListener.java:56) ~[FeatherMor
ph-1.0.7-folia.jar:?]
at xiamomc.morph.backends.server.renderer.network.listeners.MetaPacketListener.onMetaPacket(MetaPacketListener.java:44) ~[FeatherMor
ph-1.0.7-folia.jar:?]
at xiamomc.morph.backends.server.renderer.network.listeners.MetaPacketListener.onPacketSending(MetaPacketListener.java:38) ~[Feather
Morph-1.0.7-folia.jar:?]
at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:219) ~[ProtocolLib .
jar:?]
at com.comphenix.protocol.injector.SortedPacketListenerList.invokeUnpackedPacketSending(SortedPacketListenerList.java:204) ~[Protoco
lLib .jar:?]
at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:160) ~[ProtocolLib .ja
r:?]
at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:139) ~[ProtocolLib .ja
r:?]
at com.comphenix.protocol.injector.PacketFilterManager.postPacketToListeners(PacketFilterManager.java:553) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:526) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.injector.netty.manager.NetworkManagerInjector.onPacketSending(NetworkManagerInjector.java:100) ~[ProtocolL
ib .jar:?]
at com.comphenix.protocol.injector.netty.channel.NettyChannelInjector.processOutbound(NettyChannelInjector.java:553) ~[ProtocolLib .
jar:?]
at com.comphenix.protocol.injector.netty.channel.NettyChannelInjector$2.doProxyRunnable(NettyChannelInjector.java:456) ~[ProtocolLib
.jar:?]
at com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.proxyRunnable(NettyEventLoopProxy.java:43) ~[ProtocolLib .jar:?
]
at com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.execute(NettyEventLoopProxy.java:252) ~[ProtocolLib .jar:?]
at net.minecraft.network.Connection.sendPacket(Connection.java:459) ~[?:?]
at net.minecraft.network.Connection$PacketSendAction.lambda$new$0(Connection.java:1043) ~[?:?]
at net.minecraft.network.Connection$WrappedConsumer.accept(Connection.java:1027) ~[?:?]
at net.minecraft.network.Connection.processQueue(Connection.java:590) ~[?:?]
at net.minecraft.network.Connection.flushQueue(Connection.java:547) ~[?:?]
at net.minecraft.network.Connection.send(Connection.java:438) ~[?:?]
at net.minecraft.server.network.ServerCommonPacketListenerImpl.send(ServerCommonPacketListenerImpl.java:295) ~[luminol-1.20.4.jar:gi
t-Luminol-"59a428e"]
at net.minecraft.server.network.ServerCommonPacketListenerImpl.send(ServerCommonPacketListenerImpl.java:280) ~[luminol-1.20.4.jar:gi
t-Luminol-"59a428e"]
at com.comphenix.protocol.reflect.accessors.DefaultMethodAccessor.invoke(DefaultMethodAccessor.java:23) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.injector.netty.channel.NettyChannelInjector.sendServerPacket(NettyChannelInjector.java:285) ~[ProtocolLib
.jar:?]
at com.comphenix.protocol.injector.netty.manager.NetworkManagerPlayerInjector.sendServerPacket(NetworkManagerPlayerInjector.java:59)
~[ProtocolLib .jar:?]
at com.comphenix.protocol.injector.PacketFilterManager.sendServerPacket(PacketFilterManager.java:183) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.async.AsyncMarker.sendPacket(AsyncMarker.java:388) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.async.PacketSendingQueue.sendPacket(PacketSendingQueue.java:276) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.async.PacketSendingQueue.processPacketHolder(PacketSendingQueue.java:219) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.async.PacketSendingQueue.trySendPackets(PacketSendingQueue.java:140) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.async.PacketSendingQueue.signalPacketUpdate(PacketSendingQueue.java:102) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.async.AsyncFilterManager.signalPacketTransmission(AsyncFilterManager.java:437) ~[ProtocolLib .jar:?]
at com.comphenix.protocol.async.AsyncFilterManager.signalPacketTransmission(AsyncFilterManager.java:397) ~[ProtocolLib .jar:?]
at net.imprex.orebfuscator.obfuscation.ObfuscationListenerAsync.postChunkProcessing(ObfuscationListenerAsync.java:37) ~[orebfuscator
-plugin-5.4.3.jar:?]
at net.imprex.orebfuscator.obfuscation.ObfuscationListener.complete(ObfuscationListener.java:139) ~[orebfuscator-plugin-5.4.3.jar:?]
at net.imprex.orebfuscator.obfuscation.ObfuscationListener.lambda$onPacketSending$1(ObfuscationListener.java:101) ~[orebfuscator-plu
gin-5.4.3.jar:?]
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179) ~[?:?]
at net.imprex.orebfuscator.obfuscation.ObfuscationRequest.complete(ObfuscationRequest.java:72) ~[orebfuscator-plugin-5.4.3.jar:?]
at net.imprex.orebfuscator.cache.ObfuscationCache.lambda$get$0(ObfuscationCache.java:65) ~[orebfuscator-plugin-5.4.3.jar:?]
at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?]
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:483) ~[?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) ~[?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312) ~[?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843) ~[?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808) ~[?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188) ~[?:?]

Folia下处于不同region是交互模拟会报错

[15:54:28 ERROR]: Thread Region Scheduler Thread #0 failed main thread check: Cannot getEntities asynchronously
java.lang.Throwable: null
        at io.papermc.paper.util.TickThread.ensureTickThread(TickThread.java:85) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at net.minecraft.world.level.Level.getEntities(Level.java:1579) ~[?:?]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.getNearbyEntities(CraftWorld.java:1146) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.rayTraceEntities(CraftWorld.java:1198) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.rayTrace(CraftWorld.java:1282) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.rayTrace(CraftWorld.java:1266) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at xiamomc.morph.misc.PlayerOperationSimulator.rayTrace(PlayerOperationSimulator.java:84) ~[FeatherMorph-1.0.14.jar:?]
        at xiamomc.morph.misc.PlayerOperationSimulator.simulateLeftClick(PlayerOperationSimulator.java:113) ~[FeatherMorph-1.0.14.jar:?]
        at xiamomc.morph.events.InteractionMirrorProcessor.simulateOperation(InteractionMirrorProcessor.java:432) ~[FeatherMorph-1.0.14.jar:?]
        at xiamomc.morph.events.InteractionMirrorProcessor.onPlayerInteract(InteractionMirrorProcessor.java:291) ~[FeatherMorph-1.0.14.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor328.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:git-Luminol-"7293124"]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:594) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:550) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:545) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:541) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleAnimate(ServerGamePacketListenerImpl.java:2575) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundSwingPacket.handle(ServerboundSwingPacket.java:25) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundSwingPacket.a(ServerboundSwingPacket.java:11) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:56) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$2(PacketUtils.java:102) ~[?:?]
        at io.papermc.paper.threadedregions.EntityScheduler.executeTick(EntityScheduler.java:173) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1648) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:408) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:404) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:525) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]
[15:54:28 ERROR]: Could not pass event PlayerInteractEvent to FeatherMorph v1.0.14
java.lang.IllegalStateException: Cannot getEntities asynchronously
        at io.papermc.paper.util.TickThread.ensureTickThread(TickThread.java:86) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at net.minecraft.world.level.Level.getEntities(Level.java:1579) ~[?:?]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.getNearbyEntities(CraftWorld.java:1146) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.rayTraceEntities(CraftWorld.java:1198) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.rayTrace(CraftWorld.java:1282) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.rayTrace(CraftWorld.java:1266) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at xiamomc.morph.misc.PlayerOperationSimulator.rayTrace(PlayerOperationSimulator.java:84) ~[FeatherMorph-1.0.14.jar:?]
        at xiamomc.morph.misc.PlayerOperationSimulator.simulateLeftClick(PlayerOperationSimulator.java:113) ~[FeatherMorph-1.0.14.jar:?]
        at xiamomc.morph.events.InteractionMirrorProcessor.simulateOperation(InteractionMirrorProcessor.java:432) ~[FeatherMorph-1.0.14.jar:?]
        at xiamomc.morph.events.InteractionMirrorProcessor.onPlayerInteract(InteractionMirrorProcessor.java:291) ~[FeatherMorph-1.0.14.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor328.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:git-Luminol-"7293124"]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[luminol-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:594) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:550) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:545) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:541) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleAnimate(ServerGamePacketListenerImpl.java:2575) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundSwingPacket.handle(ServerboundSwingPacket.java:25) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundSwingPacket.a(ServerboundSwingPacket.java:11) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:56) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$2(PacketUtils.java:102) ~[?:?]
        at io.papermc.paper.threadedregions.EntityScheduler.executeTick(EntityScheduler.java:173) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1648) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:408) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:404) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:525) ~[luminol-1.20.4.jar:git-Luminol-"7293124"]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]

Not working on minehut

In Minehut I tried to load FeatherMorph-1.1.0-beta.6-all.jar, but it doesn't make a folder and it deactivates even though I have ProtocolLib.jar and LibsDisguises.jar

residence的nofly flag对伪装不起作用

即使打开领地的nofly玩家也能飞。把Multiverse-Core中世界选项的的allowFlight改成false也没用。
现在玩家能飞出主城,所以把伪装飞行关了。
但是这样在生存世界就不能飞行,除了用屏障把主城顶封起来再设置worldborder没什么解决办法。
如果可以希望加一个特定世界的配置功能,例如特定世界禁用伪装或者禁用飞行之类的

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.