ProtectionPerms - A simple player protection and control plugin

A new version has been released for ProtectionPerms, it is available for download here.


Indecisive Configurations

Release v1.4.0

Minecraft 1.12.2 - Tested on spongeforge-1.12.2-2555-7.1.0-BETA-2844

Changes

  • Changed the config options
    • invert was a little confusing, so mode is used instead with the options “whitelist” and “blacklist”.
    • To migrate simply delete the config file located at ~/config/protectionperms.conf

Enjoy!
Thanks to William “psyFi” Hatcher for his contributions.

is there a permission that allows all actions?

Just giving the permission protectionperms will give them everything that’s subbed to it.

ok ty. now i have another question is it possible to give that permission and also ban tnt at the same time?

Take a look at the blacklist mode Configuration · Zerthick/ProtectionPerms Wiki · GitHub In that case you would only grant the related TNT permissions you want to restrict like placing and crafting.

ok ty actually hadnt thought of it in that way before. in fact i im not sure i understood how it worked untill rereading it it just now. am i right in thinking that if i use it in that way, i can use the base permission to remove all building/mining rights from my default group as well. basically i am trying to build a server that anyone can join but only those put into my trusted group who have filled out an application can build.

There are many error in MC1.11.2 spongeforge-1.11.2-2792-6.1.0-BETA-2715.

[10:48:12] [Server thread/ERROR] [Sponge/]: //
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Exception during phase body /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
/
[10:48:12] [Server thread/ERROR] [Sponge/]: /* Something happened trying to run the main body of a phase org.spongepowered.common.event.tracking.phase.packet.AttackEntityPacketState@4a7771d0 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
PhaseContext : /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Source /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: PacketPlayer /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Packet /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: net.minecraft.network.play.client.CPacketUseEntity@bd90fb3 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Cursor /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: SpongeItemStackSnapshot{itemType=ItemAir{Name=null}, count=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: IgnoringCreative /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: false /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: ItemUsed /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: 1xtile.air@0 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: CapturedEntities /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: CapturedEntitiesSupplier{Captured=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: CapturedBlocks /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: CapturedBlocksSupplier{Captured=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Owner /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Notifier /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Phases remaining : /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Phase: org.spongepowered.common.event.tracking.phase.packet.AttackEntityPacketState@4a7771d0 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Context: /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Source /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: PacketPlayer /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Packet /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: net.minecraft.network.play.client.CPacketUseEntity@bd90fb3 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Cursor /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: SpongeItemStackSnapshot{itemType=ItemAir{Name=null}, count=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: IgnoringCreative /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: false /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: ItemUsed /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: 1xtile.air@0 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: CapturedEntities /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: CapturedEntitiesSupplier{Captured=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: CapturedBlocks /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: CapturedBlocksSupplier{Captured=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Owner /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Notifier /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: EntityPlayerMP[‘wen_jia’/90, l=‘world’, x=246.97, y=7.00, z=-384.47] /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Phase: org.spongepowered.common.event.tracking.phase.plugin.ScheduledTaskPhaseState@3e664e81 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Context: /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: Source /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: com.google.common.util.concurrent.ListenableFutureTask@4bb785c6 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: CapturedBlocks /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: CapturedBlocksSupplier{Captured=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
- Name: CapturedEntities /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Object: CapturedEntitiesSupplier{Captured=0} /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Stacktrace: /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
java.lang.NullPointerException: null /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.entity.player.EntityPlayerMP.restorePacketItem(EntityPlayerMP.java:3899) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.network.NetHandlerPlayServer.func_147340_a(NetHandlerPlayServer.java:2409) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.network.play.client.CPacketUseEntity.func_148833_a(SourceFile:69) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.network.play.client.CPacketUseEntity.func_148833_a(SourceFile:13) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
org.spongepowered.common.network.PacketUtil.lambda$onProcessPacket$0(PacketUtil.java:145) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
org.spongepowered.common.event.tracking.CauseTracker.switchToPhase(CauseTracker.java:162) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
org.spongepowered.common.network.PacketUtil.onProcessPacket(PacketUtil.java:144) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.network.PacketThreadUtil$1.redirect$onProcessPacket$zjm000(SourceFile:539) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
java.util.concurrent.FutureTask.run(Unknown Source) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.util.Util.func_181617_a(SourceFile:46) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
org.spongepowered.common.SpongeImplHooks.onUtilRunTask(SpongeImplHooks.java:257) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.server.MinecraftServer.redirect$onRun$zhl000(MinecraftServer.java:3969) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:679) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:384) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:624) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
java.lang.Thread.run(Unknown Source) /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
/
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Minecraft : 1.11.2 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
SpongeAPI : 6.1.0-SNAPSHOT-d1eb7e2 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
SpongeForge : 1.11.2-2476-6.1.0-BETA-2792 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
Minecraft Forge : 13.20.1.2476 /
[10:48:12] [Server thread/ERROR] [Sponge/]: /
**************************************************************************************************************************************************/

It’s a nice plugin. I used all versions.
and I try protectionperms v1.0.3 and spongeforge-1.11.2-2476-6.1.0-BETA-2715 that you tested, but the error is still…
What should I do? It’s the plugin’s problem?
Sorry for my poor English…

Does this only occur when ProtectionPerms is installed? That error doesn’t seem to be related to ProtectionPerms at all.

I just install spongeforge-2792,customnpc and ProtectionPerms 1.4.0

There is a error when the server being start

[11:45:26] [Server thread/ERROR] [Sponge/sponge]: Could not pass FMLInitializationEvent to Plugin{id=protectionperms, name=ProtectionPerms, version=1.4.0, description=A simple player protection and control plugin., authors=[Zerthick], source=C:\Users\Administrator\Desktop\DIc\mods\ProtectionPerms-1.4.0.jar}
java.lang.NoClassDefFoundError: org/spongepowered/api/event/item/inventory/ChangeInventoryEvent$Pickup$Pre
at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:1.8.0_144]
at java.lang.Class.privateGetDeclaredMethods(Unknown Source) ~[?:1.8.0_144]
at java.lang.Class.privateGetPublicMethods(Unknown Source) ~[?:1.8.0_144]
at java.lang.Class.getMethods(Unknown Source) ~[?:1.8.0_144]
at org.spongepowered.common.event.SpongeEventManager.registerListener(SpongeEventManager.java:222) ~[SpongeEventManager.class:1.11.2-2476-6.1.0-BETA-2792]
at org.spongepowered.common.event.SpongeEventManager.registerListeners(SpongeEventManager.java:284) ~[SpongeEventManager.class:1.11.2-2476-6.1.0-BETA-2792]
at io.github.zerthick.protectionperms.events.ListenerRegister.registerListeners(ListenerRegister.java:46) ~[ListenerRegister.class:?]
at io.github.zerthick.protectionperms.ProtectionPerms.onServerInit(ProtectionPerms.java:104) ~[ProtectionPerms.class:?]
at org.spongepowered.common.event.listener.GameInitializationEventListener_ProtectionPerms_onServerInit46.handle(Unknown Source) ~[?:?]
at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) ~[RegisteredListener.class:1.11.2-2476-6.1.0-BETA-2792]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:314) [SpongeModEventManager.class:1.11.2-2476-6.1.0-BETA-2792]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:345) [SpongeModEventManager.class:1.11.2-2476-6.1.0-BETA-2792]
at org.spongepowered.mod.SpongeMod.onStateEvent(SpongeMod.java:216) [SpongeMod.class:1.11.2-2476-6.1.0-BETA-2792]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_144]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) [minecraft_server.1.11.2.jar:?]
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:253) [LoadController.class:?]
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:231) [LoadController.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_144]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) [minecraft_server.1.11.2.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) [minecraft_server.1.11.2.jar:?]
at net.minecraftforge.fml.common.LoadController.redirect$onPost$zzd000(LoadController.java:561) [LoadController.class:?]
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:148) [LoadController.class:?]
at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:828) [Loader.class:?]
at net.minecraftforge.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:109) [FMLServerHandler.class:?]
at net.minecraftforge.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:337) [FMLCommonHandler.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:215) [lh.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:442) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.ClassNotFoundException: org.spongepowered.api.event.item.inventory.ChangeInventoryEvent$Pickup$Pre
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_144]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_144]
… 41 more
Caused by: java.lang.NullPointerException

That is definitely an issue with Sponge and not ProtectionPerms. The latest stable build of SpongeForge is 2931, please try upgrading and seeing if the issue persists.

Would love to have the option to modify like per-item ban reasons so that its not a popup in action bar with alot of text. Gives the freedom to state why such a item/block/entity was banned.

Yes, this is a long running feature request: Custom permission error messages · Issue #4 · Zerthick/ProtectionPerms · GitHub and something I hope to at some point add to this plugin. It’ll probably have to wait for when I update to 1.13 though.

Hi I have suggestion for a feature. I see that you have protectionperms.entity.damage..deal would you be able to do something like protectionperms.entity.damage..deal.with. I’m trying to find a way to disable damage from weapons when you are in a certain permission group.

A new version has been released for ProtectionPerms, it is available for download here.


Can’t Craft That, Really!

Release v1.4.3

Minecraft 1.12.2 - Tested on spongeforge-1.12.2-2768-7.1.5-RC3522

Changes:

  • Updated to Sponge API 7.1 to allow utilization of the CraftItemEvent for item craft permissions. Item craft permissions should now be less buggy

Enjoy!