blufenix / teleportationrunes Goto Github PK
View Code? Open in Web Editor NEWA command-less teleportation plugin for Minecraft.
License: Apache License 2.0
A command-less teleportation plugin for Minecraft.
License: Apache License 2.0
Reported in #9. Does not reproduce consistently.
Reported by players on my server, but I'm having trouble isolating and duplicating it. The reported issue, if you enter a sending pad that has 3 blocks vertical airspace and a solid ceiling above while on horseback, the pad will spam the message "left the teleport area". Testing myself, I can't get it to spam the message, but it does do it once or twice before the teleport finally activates.
I did find another issue during my testing though. Teleporting on horseback to one of my distant pads results in me arriving without my horse and me floating in air unable to move. Other players see me on horseback as expected, but I'm unable to move and don't see my horse. Relogging fixes the issue and the horse is present. However, when trying to do this from a local sender (short distance) to that same receiver, it behaves as expected. Sending and receiving pads are buried one block down, though I've tried removing that cover on the sender and it doesn't make a difference.
This is one of my favorite plugins, found it recently and loaded it into my 1.16.4 server successfully.
Will this plugin be updated to future versions of Minecraft, if required?
Sorry for logging an issue :)
Reported in #9.
This could be resolved by adding another way to name scrolls, or by naming the waypoints themselves and letting the waypoint name be displayed in the scroll data.
Reported here.
Need to decide proper behavior, and the fix may involve a non-trivial refactor.
I'm not familiar with Spigot's API, so I don't know if it's easy/possible to keep track of an item after it's been moved.
An alternative solution would be that the teleport gets canceled if you stop holding the Scroll of Warp during the delay (just like if you step off a teleporter). Especially when dropping the Scroll entirely, this would make more sense to me than the Scroll you're no longer holding successfully teleporting you.
Another alternative would be to consume the Scroll of Warp immediately upon starting the teleport. If you don't want the teleport to be cancelable, this seems like the easiest solution.
When you look at how e.g. Anvils work in vanilla Minecraft, they do not enforce XP requirements for players in creative mode.
This plugin should work the same way. Players in creative mode should be able to use any teleporter/Scroll of Warp regardless of how much XP they have, and using them should not subtract any XP from them.
When trying to activate a waypoint with a signature that has previously been used, an error is thrown in some cases:
(1. and 2. work as intended, and are just listed for comparison.)
java.lang.NullPointerException: Cannot read field "status" because "conflictInWorld" is null
at net.blufenix.teleportationrunes.TeleportationRunes.handleBookOfEnderAction(TeleportationRunes.java:156) ~[TeleportationRunes.jar:?]
at net.blufenix.teleportationrunes.TeleportationRunes.onPlayerInteractEvent(TeleportationRunes.java:133) ~[TeleportationRunes.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:75) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:git-Paper-182]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:670) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_19_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:544) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:525) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:1968) ~[?:?]
at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:37) ~[?:?]
at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.a(ServerboundUseItemOnPacket.java:9) ~[?:?]
at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:51) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1341) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:185) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1318) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1311) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1289) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1177) ~[paper-1.19.2.jar:git-Paper-182]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:305) ~[paper-1.19.2.jar:git-Paper-182]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Hey mate,
We built a sender in the overworld and a receiver in the nether and it did not link. I'm assuming cross-world teleportation doesn't work?
Reported in #8.
ex: a chance the teleport malfunctions and drops the player partially toward the destination
Reported in #9.
Mod is visible to other players, but not to the player which teleported.
Request: add particles effects around receiving pad to indicate someone is about to teleport in.
Some players are scheming to bury receivers in a few places so they can teleport in to randomly surprise players. While I do think this can be a legitimate use, I'd like to have some (optional) indication to nearby players that a player is about to arrive via teleport (if they're not paying attention and get surprised, that's they're own fault). I think activating the particle effects around the center of the receiving pad at the same time they're activated around the teleporting player would be a good way to deal with this.
Just updated to Paper 1.17.1. Plugin still works, but for some reason the cost message is no longer displaying. Already tried clearing out the plugin config and db, resetting it, no change. Also removed all other plugins, no change.
Really want to use this plugin, players are looking forward to it, but I'm getting errors when trying to activate a waypoint or attune a scroll. Silly thing is, if I'm reading this right, it doesn't even look like its an error in the plugin but rather with java itself. I'm hoping you'd have better insight on this than I.
Activation
[02:05:18 ERROR]: Could not pass event PlayerInteractEvent to TeleportationRunes v2.0.0
java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED
at java.nio.charset.CharsetDecoder.throwIllegalStateException(CharsetDecoder.java:996) ~[?:?]
at java.nio.charset.CharsetDecoder.flush(CharsetDecoder.java:679) ~[?:?]
at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:808) ~[?:?]
at java.nio.charset.Charset.decode(Charset.java:811) ~[?:?]
at org.sqlite.core.NativeDB.utf8ByteBufferToString(NativeDB.java:507) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.core.NativeDB.column_name(NativeDB.java:239) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.core.DB.column_names(DB.java:733) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.jdbc3.JDBC3Statement.getResultSet(JDBC3Statement.java:131) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:73) ~[patched_1.16.5.jar:git-Paper-775]
at net.blufenix.common.SimpleDatabase.rawQuery(SimpleDatabase.java:108) ~[?:?]
at net.blufenix.common.SimpleDatabase.query(SimpleDatabase.java:90) ~[?:?]
at net.blufenix.teleportationrunes.WaypointDB.getWaypointFromLocation(WaypointDB.java:98) ~[?:?]
at net.blufenix.teleportationrunes.Waypoint.fromLocation(Waypoint.java:46) ~[?:?]
at net.blufenix.teleportationrunes.TeleportationRunes.handleBookOfEnderAction(TeleportationRunes.java:132) ~[?:?]
at net.blufenix.teleportationrunes.TeleportationRunes.onPlayerInteractEvent(TeleportationRunes.java:125) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor27.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.16.5.jar:git-Paper-775]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.16.5.jar:git-Paper-775]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.16.5.jar:git-Paper-775]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:624) ~[patched_1.16.5.jar:git-Paper-775]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:549) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PlayerInteractManager.a(PlayerInteractManager.java:499) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1714) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PacketPlayInUseItem.a(PacketPlayInUseItem.java:32) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PacketPlayInUseItem.a(PacketPlayInUseItem.java:10) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:35) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1266) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1259) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1220) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1134) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-775]
at java.lang.Thread.run(Thread.java:831) [?:?]
Attune
[02:13:20 ERROR]: Could not pass event PlayerInteractEvent to TeleportationRunes v2.0.0
java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED
at java.nio.charset.CharsetDecoder.throwIllegalStateException(CharsetDecoder.java:996) ~[?:?]
at java.nio.charset.CharsetDecoder.flush(CharsetDecoder.java:679) ~[?:?]
at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:808) ~[?:?]
at java.nio.charset.Charset.decode(Charset.java:811) ~[?:?]
at org.sqlite.core.NativeDB.utf8ByteBufferToString(NativeDB.java:507) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.core.NativeDB.column_name(NativeDB.java:239) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.core.DB.column_names(DB.java:733) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.jdbc3.JDBC3Statement.getResultSet(JDBC3Statement.java:131) ~[patched_1.16.5.jar:git-Paper-775]
at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:73) ~[patched_1.16.5.jar:git-Paper-775]
at net.blufenix.common.SimpleDatabase.rawQuery(SimpleDatabase.java:108) ~[?:?]
at net.blufenix.common.SimpleDatabase.query(SimpleDatabase.java:90) ~[?:?]
at net.blufenix.teleportationrunes.WaypointDB.getWaypointFromLocation(WaypointDB.java:98) ~[?:?]
at net.blufenix.teleportationrunes.Waypoint.fromLocation(Waypoint.java:46) ~[?:?]
at net.blufenix.teleportationrunes.TeleportationRunes.handleScrollOfWarpAction(TeleportationRunes.java:166) ~[?:?]
at net.blufenix.teleportationrunes.TeleportationRunes.onPlayerInteractEvent(TeleportationRunes.java:127) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor27.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.16.5.jar:git-Paper-775]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.16.5.jar:git-Paper-775]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.16.5.jar:git-Paper-775]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:624) ~[patched_1.16.5.jar:git-Paper-775]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:549) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PlayerInteractManager.a(PlayerInteractManager.java:499) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1714) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PacketPlayInUseItem.a(PacketPlayInUseItem.java:32) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PacketPlayInUseItem.a(PacketPlayInUseItem.java:10) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:35) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1266) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1259) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1220) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1134) ~[patched_1.16.5.jar:git-Paper-775]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-775]
at java.lang.Thread.run(Thread.java:831) [?:?]
There is also a warning on server start that should probably be noted as well...
[01:51:41 INFO]: [TeleportationRunes] Loading TeleportationRunes v2.0.0
[01:51:41 WARN]: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast t o class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in m odule java.base of loader 'bootstrap')
[01:51:41 WARN]: at net.blufenix.common.JarUtils.addClassPath(JarUtils.java:89)
[01:51:41 WARN]: at net.blufenix.common.JarUtils.loadLibs(JarUtils.java:29)
[01:51:41 WARN]: at net.blufenix.teleportationrunes.TeleportationRunes.onLoad(TeleportationRunes.java:41)
[01:51:41 WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:399)
[01:51:41 WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:269)
[01:51:41 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1069)
[01:51:41 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[01:51:41 WARN]: at java.base/java.lang.Thread.run(Thread.java:831)
I REALLY hope your still supporting this plugin as I've not found any (compatible) others that offer a player buildable (non-command-line) teleportation solution like this. Also hoping 1.17 doesn't break it further.
OpenJDK16, Paper 1.16.5
Reported in #9.
@BLuFeNiX With the plugin working now, I'd like to make a few suggestions / requests if you're open to it.
Thanks for all your work on this!
Reported by players on my server. Leads are duplicating when used to lead a horse through a teleporter. We've haven't tired other animals yet.
Lead a horse into a teleporter. Teleport completes, horse is still on lead with you at the receiver pad. However, if you go back to the sender pad, you'll now find a lead on the ground.
(most of my players don't use horses, so it's not surprising we're just now discovering this)
The primary issue with doing this is determining cost. Short discussion is in #9.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.