Code Monkey home page Code Monkey logo

lockettepro's Introduction

LockettePro Build Status

Caution

Versions for Minecraft 1.21 are not fully tested yet.
Please create an issue if you find anything wrong. Thank you.

All versions can be found at Nyaa CI server For the newest build on main branch, click here

LockettePro - A much better Lockette plugin for Bukkit

LockettePro is a block-protection plugin based on Lockette (https://github.com/Acru/Lockette), the code base is entirely re-written. It is 100% compatable with original Lockette, and the plugin behaviors are also 100% same.

LockettePro has a lot of enhancements compared to Lockette:

  1. Much better codebase and performance, fixed a lot of issues and glitches.
  2. Real UUID support.
  3. All blocks can be set to lockable or not. You can even prevent players from locking a chest.
  4. Unlimited [Private], [More Users], [Timer:x] signs format.
  5. Alert messages are editable, and UTF-8 characters are supported.
  6. Lock expircy feature, locks can expire after a certain amount of time.

Links

Spigot release page: https://www.spigotmc.org/resources/lockettepro.20427/
Bukkit release page: http://dev.bukkit.org/bukkit-plugins/lockettepro/
MCBBS release page: http://www.mcbbs.net/thread-567962-1-1.html
MC 1.6~1.7 Port: https://github.com/connection-lost/LockettePro/releases/tag/v1.9.4

Version history

  • 2.9.15 : Minecraft 1.21, downloadable from github actions
  • 2.9.x-1.15.1: Minecraft 1.15.1, since build 10
  • 2.9.x-1.14.4: Minecraft 1.14.4, until build 9

lockettepro's People

Contributors

alotofblahaj avatar andris155 avatar connection-lost avatar cyilin avatar doublehelix457 avatar lori3f6 avatar maxetto avatar natjerry avatar pawned avatar phoenixlzx avatar recursiveg avatar takaranoao avatar theclowner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lockettepro's Issues

Dye and glow ink doesn't display on signs with ProtocolLib enabled

When ProtocolLib is enabled, dye and glow ink effects don't display even on regular, non-Lockette signs.

This sign has been dyed with red dye and glow ink but the text displays as regular black text.
image

/data get block ~ ~ ~ shows that the sign has the correct NBT tags.
image

Running jar built from latest commit on 1.19 branch (f86c813) with Paper-446 and ProtocolLib v5.0.0-SNAPSHOT-b614.

Users can't destory locks because invalid character in player name

This is a name that can be a bug Butter#7550
When he using the plugin, a lock with below texts will created.

[私有]
Butter#7550#(uuid)

And after that, he can't doing anything because the uuid doesn't match
(All the above is my infer, if i saying sth wrong, please understand me)

Sign type is not preserved

When a Jungle sign is used to lock a barrel, the sign is always turned into an Oak sign. Breaking it drops the Oak sign. (Kedame server)

This shouldn't happen since putSignOn already tries to preserve the sign type. Weird.

Does not happen with Dark Oak.

Unhandled exception occured in onPacketSending(PacketEvent)

Hello,
First of all, thank you very much for maintaining this plugin. You're awesome !
However, I have this error that occurs when a player logs in, in an area where there are locked things. It doesn't seem to be breaking the locks, but I think it's better to report it to you. Or maybe it's a ProtocolLib problem ? 🤔

My environment :

  • Ubuntu 22.04
  • Oracle Java SE 17.0
  • Paper 1.18.2 build 387 (Latest one)
  • ProtocolLib 4.8.0 (Build 161, recommended for 1.18.x)
  • Your version of LockettePro for 1.18, build 3

The error happens many times, but I only pasted the first one.

Full traceback (46 lines)
[16:21:29] [Server thread/ERROR]: [LockettePro] Unhandled exception occured in onPacketSending(PacketEvent) for LockettePro
com.comphenix.protocol.reflect.FieldAccessException: No field with type java.util.List exists in class Integer.
    at com.comphenix.protocol.reflect.StructureModifier.readInternal(StructureModifier.java:218) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.reflect.StructureModifier.read(StructureModifier.java:197) ~[ProtocolLib.jar:?]
    at me.crafter.mc.lockettepro.DependencyProtocolLib$2.onPacketSending(DependencyProtocolLib.java:70) ~[LockettePro.jar:?]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:535) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:516) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.ProtocolInjector.packetQueued(ProtocolInjector.java:346) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.ProtocolInjector.onPacketSending(ProtocolInjector.java:308) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:436) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.ChannelInjector.access$800(ChannelInjector.java:72) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.ChannelInjector$3.handleScheduled(ChannelInjector.java:376) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.ChannelInjector$3.onMessageScheduled(ChannelInjector.java:346) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:127) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:95) ~[ProtocolLib.jar:?]
    at net.minecraft.network.Connection.writePacket(Connection.java:435) ~[?:?]
    at net.minecraft.network.Connection.processQueue(Connection.java:530) ~[?:?]
    at net.minecraft.network.Connection.flushQueue(Connection.java:493) ~[?:?]
    at net.minecraft.network.Connection.send(Connection.java:401) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2040) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2026) ~[?:?]
    at net.minecraft.server.level.ServerPlayer.trackChunk(ServerPlayer.java:2168) ~[?:?]
    at net.minecraft.server.level.ChunkMap.playerLoadedChunk(ChunkMap.java:2136) ~[paper-1.18.2.jar:git-Paper-387]
    at net.minecraft.server.level.ChunkMap.updateChunkTracking(ChunkMap.java:1617) ~[paper-1.18.2.jar:git-Paper-387]
    at io.papermc.paper.chunk.PlayerChunkLoader$PlayerLoaderData.sendChunk(PlayerChunkLoader.java:875) ~[paper-1.18.2.jar:git-Paper-387]
    at io.papermc.paper.chunk.PlayerChunkLoader.trySendChunks(PlayerChunkLoader.java:584) ~[paper-1.18.2.jar:git-Paper-387]
    at io.papermc.paper.chunk.PlayerChunkLoader.tickMidTick(PlayerChunkLoader.java:741) ~[paper-1.18.2.jar:git-Paper-387]
    at io.papermc.paper.chunk.PlayerChunkLoader.tick(PlayerChunkLoader.java:515) ~[paper-1.18.2.jar:git-Paper-387]
    at net.minecraft.server.level.ServerChunkCache.tick(ServerChunkCache.java:906) ~[?:?]
    at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:629) ~[?:?]
    at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1593) ~[paper-1.18.2.jar:git-Paper-387]
    at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:483) ~[paper-1.18.2.jar:git-Paper-387]
    at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1456) ~[paper-1.18.2.jar:git-Paper-387]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1226) ~[paper-1.18.2.jar:git-Paper-387]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-387]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
[16:21:29] [Server thread/ERROR]: Parameters: 
  net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket@63fd25cb[
    a=-15
    b=19
    c=net.minecraft.network.protocol.game.ClientboundLevelChunkPacketData@13b19ed4
    d=net.minecraft.network.protocol.game.ClientboundLightUpdatePacketData@4db7364f
    ready=true
  ]

Thanks for reading, and have a nice day ! ^^

Creating a sign manually does not add UUIDs

If you add a sign and type out the names manually, no UUID gets added after the added names (like with /lock 3 [playername]).

If you select a sign created this way with the first user being you, the UUID will be added.

Suggestion: Remove ProtocolLib dependency in favour of PDC

I'd like to suggest ditching ProtocolLib and migrating to to PDC to store UUIDs. In terms of performance ProtocolLib itself is not too great, adding packet processing on top of that doesn't make it faster either...

So I was looking into this from another perspective, it would be possible to store data that is stored on signs in PDC? With that get rid of ProtocolLib dependency and whole processing thing?

I guess the alternative would be to migrate to PacketEvents, which appears to be faster and more regularly updated.

Or do nothing, it works in the current state and changing this would break existing signs...

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.