GithubHelp home page GithubHelp logo

playerparticles's Introduction

PlayerParticles

A Spigot particles plugin with more customizability than any other. Create particles around players or blocks with any particle effect in the game with a plethora of skillfully crafted styles.

Wiki

For information about how to use the plugin or API within the plugin, please refer to the Wiki

Server Compatibility

This plugin is compatible with Spigot and any forks, I recommend using Paper. Using CraftBukkit will not work. The versions of Minecraft that are currently supported are 1.7.10-1.19 and newer.

Compilation

PlayerParticles uses Gradle to compile and build the plugin. Run ./gradlew build in the project's root directory to build the jar. The plugin jar will be located in ./build/libs when finished.

Development Builds

You can find the latest stable development builds of this plugin here.

playerparticles's People

Contributors

chrisgdt avatar drynael avatar esophose avatar eth-p avatar hexedhero avatar leomelonseeds avatar noltoxgit avatar oribuin avatar qsefthuopq 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  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

playerparticles's Issues

[IMPROVEMENT] Improve performance

Playerparticles is very heavy on my server when a lot of players with particles are on, this could easily be solved by spawning the particles asynchronously. I am slightly confused as to why you don't do this already.

Particle Placeholders

It would be awesome to add a placeholder for PlaceholderAPI that returns the player's equipped particle(s).

Add support for WorldGuard flags

Rather than use the existing allowed and denied region settings in the config.yml, create a worldguard region flag named playerparticles-allow which defaults to true

Add /pp use

This command should act the same way as the older versions of PP did.
/pp use <effect|style|data> <value>
Using it should overwrite all other particles that are currently active. If /pp use effect is used before a style is chosen, the style will default to normal. If /pp use style is used before an effect is chosen, the effect will default to flame. Data will always use the default value by default.

Load preset group with command

Loading a preset group with a command when missing permission for an effect or style should still be allowed if the preset has allow-permission-override enabled. This doesn't appear to be working.

Estimated solution: Move this statement into the else block of the previous if statement. The permission for the group is getting checked twice on accident.

Permission check spam.

PlayerParticle v5.1
LuckPerms dev 670 https://ci.lucko.me/job/LuckPerms/changes

I enabled verbose logging for my permissions plugin to debug something and noticed that PlayerParticle spams permission checks repeatedly. Is there any way to optimize this to not check as frequently?

[06:44:52] [luckperms-0/INFO]: [LP] VB > mibby - playerparticles.* - undefined
[06:44:52] [luckperms-0/INFO]: [LP] VB > mibby - playerparticles.effect.* - undefined
[06:44:52] [luckperms-0/INFO]: [LP] VB > mibby - playerparticles.effect.none - true

https://paste.ubuntu.com/p/RcQGzwfCwZ/

Permission check on login

A configuration option called check-perms-on-login.
If this is enabled, then on login, PP will check if the player has permission to use the particles that they have active. It will remove the particles which they do not have permission for. If this is disabled which is how it currently acts, then players will keep their active particles, even if they do not have permission.

Setting should be disabled by default.

Player's setting resetted when join

Whenever i joined server, my effect and style be setted to none.
Using AuthmeReload for login security.
PlayerParticles latest release: 4.3

Updated: Found out why i lost effect. I'm OP so i have all permission to use paricles, but before joined by authme I'm not OP, authme temp remove my op permission.
Please add support for AuthmeReload. Thanks

Make 'Save New Group' GUI button not require a chat message

My server's chat is handled by Bungee, so sending a message doesn't register when using the 'Save New Group' GUI button. It would be cool if this would instead open up an Anvil GUI or something to set the name there so there aren't any conflicts

Correct permission for preset groups?

Hi there!
I'm having issues with setting up the permissions for my preset groups, since I can't find a specific permission for them.
Should players have access to the styles and effects involved in those presets beforehand or can I just give the preset to a certain rank without giving the effect?
Please let me know what I'm not doing right.

Best regards,
vcp5k

Add ParticleStyleRegistrationEvent

Add an event named ParticleStyleRegistrationEvent and replace the current API implementation for registering styles. We do not want to allow dynamically registering custom styles to prevent the Data manager from properly loading PPlayers. This custom event will be called after the plugin startup and reload command and will be used internally to replace the existing Default styles registration implementation.
The event should contain the following methods:
#getRegisteredStyles() : Map<String, ParticleStyle>
#getRegisteredEventStyles() : Map<String, ParticleStyle>
#registerStyle(ParticleStyle)
#registerEventStyle(ParticleStyle)

The maps returned by the getters should be intentionally mutable to let extension plugins remove existing registered styles in the plugin. Attempting to call a register style method with a style with a duplicate internal name will fail and print an error message to the console.

Feature Request: Permission for additional particles at once

Feature Request Details:

Have a permission such that users with this permission can have that many active particles on at once, overriding the config. Currently all that is available is "unlimited" - which wouldn't be good and cause lag.

Example:

playerparticles.particles.num will allow a user with this permission to use num amount of particles at once.

This would be useful for donation rewards etc, allowing user to have more active particles up to their at once if they so wish.

Alternative method

Have it in the config instead of permissions. i.e

Default: 1
Donator: 2
VIP: 3
MVP: 4

would allow each rank have that amount of particles active at once.

Thanks.

Disable messages with empty ''

Hey,

I wonder if you can add when you set a message to '' (so no text) that it will not be displayed at all instead of an error?

Tnxx anyway!

World Guard error spam

Hello! Today I faced with error, PP start spam this error:

[22:12:24 WARN]: [PlayerParticles] Task #370 for PlayerParticles v7.15 generated an exception
java.lang.IncompatibleClassChangeError: Found class com.sk89q.worldguard.protection.ApplicableRegionSet, but interface was expected
        at dev.esophose.playerparticles.libs.worldguardwrapper.implementation.legacy.WorldGuardImplementation.getRegions(WorldGuardImplementation.java:114) ~[PlayerParticles_v7.15.jar:?]
        at dev.esophose.playerparticles.libs.worldguardwrapper.WorldGuardWrapper.getRegions(WorldGuardWrapper.java:25) ~[PlayerParticles_v7.15.jar:?]
        at dev.esophose.playerparticles.hook.WorldGuardHook.isInAllowedRegion(WorldGuardHook.java:40) ~[PlayerParticles_v7.15.jar:?]
        at dev.esophose.playerparticles.manager.ParticleManager.updateWorlGuardStatuses(ParticleManager.java:194) ~[PlayerParticles_v7.15.jar:?]
        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:59) ~[MG.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:352) [MG.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:783) [MG.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [MG.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:713) [MG.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:616) [MG.jar:git-PaperSpigot-"4c7641d"]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]

Incompatibility with latest WorldGuard - CommandException: WorldEdit does not appear to be enabled

Paper dev 449 (Spigot 1.16.5)
PlayerParticles v7.17 dev 49
FastAsyncWorldEdit dev 585
WorldGuard dev 2098

@Esophose Did compatibility with WorldGuard break? :(

Breaking commit from what I can tell. EngineHub/WorldGuard@04d5a3b

[11:56:24] [Server thread/INFO]: [PlayerParticles] Loading PlayerParticles v7.17
[11:56:24] [Server thread/ERROR]: [org.bukkit.craftbukkit.v1_16_R3.CraftServer] com.sk89q.minecraft.util.commands.CommandException: WorldEdit does not appear to be enabled. initializing PlayerParticles v7.17 (Is it up to date?)
java.lang.RuntimeException: com.sk89q.minecraft.util.commands.CommandException: WorldEdit does not appear to be enabled.
	at dev.esophose.playerparticles.libs.worldguardwrapper.implementation.v7.WorldGuardImplementation.<init>(WorldGuardImplementation.java:68) ~[?:?]
	at dev.esophose.playerparticles.libs.worldguardwrapper.WorldGuardWrapper.<init>(WorldGuardWrapper.java:58) ~[?:?]
	at dev.esophose.playerparticles.libs.worldguardwrapper.WorldGuardWrapper.getInstance(WorldGuardWrapper.java:20) ~[?:?]
	at dev.esophose.playerparticles.hook.WorldGuardHook.initialize(WorldGuardHook.java:28) ~[?:?]
	at dev.esophose.playerparticles.PlayerParticles.onLoad(PlayerParticles.java:97) ~[?:?]
	at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:394) ~[patched_1.16.5.jar:git-Tuinity-"2830324"]
	at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:207) ~[patched_1.16.5.jar:git-Tuinity-"2830324"]
	at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:937) ~[patched_1.16.5.jar:git-Tuinity-"2830324"]
	at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:174) ~[patched_1.16.5.jar:git-Tuinity-"2830324"]
	at java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: com.sk89q.minecraft.util.commands.CommandException: WorldEdit does not appear to be enabled.
	at com.sk89q.worldguard.bukkit.WorldGuardPlugin.getWorldEdit(WorldGuardPlugin.java:389) ~[?:?]
	at dev.esophose.playerparticles.libs.worldguardwrapper.implementation.v7.WorldGuardImplementation.<init>(WorldGuardImplementation.java:66) ~[?:?]
	... 9 more

Downgrading to WorldGuard dev 2088, no error at start-up from PlayerParticles. WorldEdit & WorldGuard initialize fine in both cases, just the later WG dev build causes PP to error.

Make ParticleStyle constructors protected

People keep getting the API confused when trying to use styles. They keep using the constructors for the styles instead of accessing the registered ones through DefaultStyles.

Console commands great! One found issue -- creating dragon_breath celebration

All effects and styles I've tried so far from console work fine except for when using dragon_breath celebration. Doing so generates the following in an endless stream in console, forcing server restart: --FYI--
[05:59:47 WARN]: [PlayerParticles] Task #23490 for PlayerParticles v7.0 generated an exception java.lang.NullPointerException: null at dev.esophose.playerparticles.manager.ParticleManager.displayParticles(ParticleManager.java:187) ~[?:?] at dev.esophose.playerparticles.styles.ParticleStyleCelebration$1.run(ParticleStyleCelebration.java:126) ~[?:?] at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftTask.run(CraftTask.java:84) ~[patched_1.14.4.jar:git-Paper-243] at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:452) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.MinecraftServer.b(MinecraftServer.java:1171) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:417) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:1098) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:925) ~[patched_1.14.4.jar:git-Paper-243] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221] [05:59:47 WARN]: [PlayerParticles] Task #23524 for PlayerParticles v7.0 generated an exception java.lang.NullPointerException: null at dev.esophose.playerparticles.manager.ParticleManager.displayParticles(ParticleManager.java:187) ~[?:?] at dev.esophose.playerparticles.styles.ParticleStyleCelebration$1.run(ParticleStyleCelebration.java:126) ~[?:?] at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftTask.run(CraftTask.java:84) ~[patched_1.14.4.jar:git-Paper-243] at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:452) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.MinecraftServer.b(MinecraftServer.java:1171) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:417) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:1098) ~[patched_1.14.4.jar:git-Paper-243] at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:925) ~[patched_1.14.4.jar:git-Paper-243] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221]
Upon restart it is apparent that no particles instance was generated.

Patterns get weird at large coordinates

A user reported that patterns end up getting distorted at large x and z coordinates. I think the MathL class using floats might be the culprate. Change the MathL class to use doubles instead.

Error in a command..

[18:03:45 INFO]: OxLemonxO issued server command: /pp data
[18:03:45 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'pp' in plugin PlayerParticles v4.5
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchCommand(CraftServer.java:650) ~[minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PlayerConnection.handleCommand(PlayerConnection.java:1354) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1189) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.NullPointerException
at com.esophose.playerparticles.ParticleCommandExecutor.onData(ParticleCommandExecutor.java:162) ~[?:?]
at com.esophose.playerparticles.ParticleCommandExecutor.onCommand(ParticleCommandExecutor.java:88) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[minecraft_server.jar:git-Spigot-3fb9445-6e3cec8]
... 15 more

Option to use anvil renaming GUI for saving group

My server uses Bungeecord with chat shared between all servers, and as a result chat never reaches the individual servers. This makes it impossible to save a particle group from the GUI and it must be done via command instead. Adding an option to use the anvil GUI to specify the name of the particle group would solve this. Alternatively, an option to remove the GUI option to save would at least prevent players from entering the naming dialog for servers where it cannot be used.

NPE on InventoryClickEvent when the GUI is disabled (PP v5 1.8)

I'm getting a console error when I click (right and left) in/outside an inventory, when the GUI is disabled thanks to the plugin.
I know that you said there will no longer be new builds for 1.8, but this is a pretty big issue (it could cause additionnal lags on big server such as mine).

I'm running PaperSpigot 1.8.8, and here is the error if that helps : http://prntscr.com/jip5nu

Caused by: java.lang.NullPointerException
at com.esophose.playerparticles.gui.PlayerParticlesGui.onInventoryInteract(PlayerParticlesGui.java:574)

SQLite Constraint error

It doesn't seem to cause any problems function-wise, but I'm seeing this in the console from time to time. Occurs when invoking multiple /pp fixed commands from console. Just FYI.

[11:30:23 ERROR]: [PlayerParticles] An error occurred executing an SQLite query: [SQLITE_CONSTRAINT] Abort due to constraint violation (UNIQUE constraint failed: playerparticles_fixed.owner_uuid, playerparticles_fixed.id) [11:30:23 WARN]: org.sqlite.SQLiteException: [SQLITE_CONSTRAINT] Abort due to constraint violation (UNIQUE constraint failed: playerparticles_fixed.owner_uuid, playerparticles_fixed.id) [11:30:23 WARN]: at org.sqlite.core.DB.newSQLException(DB.java:941) [11:30:23 WARN]: at org.sqlite.core.DB.newSQLException(DB.java:953) [11:30:23 WARN]: at org.sqlite.core.DB.execute(DB.java:854) [11:30:23 WARN]: at org.sqlite.core.DB.executeUpdate(DB.java:895) [11:30:23 WARN]: at org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:102) [11:30:23 WARN]: at dev.esophose.playerparticles.manager.DataManager.lambda$saveFixedEffect$13(DataManager.java:441) [11:30:23 WARN]: at dev.esophose.playerparticles.database.SQLiteConnector.connect(SQLiteConnector.java:50) [11:30:23 WARN]: at dev.esophose.playerparticles.manager.DataManager.lambda$saveFixedEffect$14(DataManager.java:413) [11:30:23 WARN]: at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84) [11:30:23 WARN]: at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) [11:30:23 WARN]: at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) [11:30:23 WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [11:30:23 WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [11:30:23 WARN]: at java.lang.Thread.run(Thread.java:748)

NullPointerException: null - displayFixedParticleEffect

Compiled as of commit 3d2306e

Using the 1.12 compiled version on Paper dev 1562 (Spigot 1.12.2).

Edit: This also occurs with the latest spigot uploaded version.

@Esophose This error spams repeatedly at start-up, non-stop.

[06:26:59] [Server thread/WARN]: [PlayerParticles] Task #217 for PlayerParticles v5.2 generated an exception
java.lang.NullPointerException: null
	at com.esophose.playerparticles.manager.ParticleManager.displayFixedParticleEffect(ParticleManager.java:265) ~[?:?]
	at com.esophose.playerparticles.manager.ParticleManager.run(ParticleManager.java:209) ~[?:?]
	at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:63) ~[patched_1.12.2.jar:git-Paper-1562]
	at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:423) ~[patched_1.12.2.jar:git-Paper-1562]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:840) ~[patched_1.12.2.jar:git-Paper-1562]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) ~[patched_1.12.2.jar:git-Paper-1562]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774) ~[patched_1.12.2.jar:git-Paper-1562]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666) ~[patched_1.12.2.jar:git-Paper-1562]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]

Random error in console

I have done nothing, but this error appeared in console.
pp version 6.4
paper version124 build (1.14.3)

[01:30:05 ERROR]: Could not pass event EntityShootBowEvent to PlayerParticles v6.4
java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_14_R1.entity.CraftSpectralArrow cannot be cast to class org.bukkit.entity.Arrow (org.bukkit.craftbukkit.v1_14_R1.entity.CraftSpectralArrow and org.bukkit.entity.Arrow are in unnamed module of loader 'app')
        at com.esophose.playerparticles.styles.ParticleStyleArrows.onArrowFired(ParticleStyleArrows.java:86) ~[?:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor235.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.14.3.jar:git-Paper-124]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.14.3.jar:git-Paper-124]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.14.3.jar:git-Paper-124]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:536) ~[patched_1.14.3.jar:git-Paper-124]
        at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callEntityShootBowEvent(CraftEventFactory.java:485) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.ItemBow.a(ItemBow.java:65) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.ItemStack.a(ItemStack.java:560) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.EntityLiving.clearActiveItem(EntityLiving.java:2952) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1289) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.PacketPlayInBlockDig.a(SourceFile:40) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.PacketPlayInBlockDig.a(SourceFile:10) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:18) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:127) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:105) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:1002) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:995) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:115) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:979) ~[patched_1.14.3.jar:git-Paper-124]
        at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:912) ~[patched_1.14.3.jar:git-Paper-124]
        at java.lang.Thread.run(Thread.java:834) [?:?]

Preset Groups Cap

The preset groups page in the GUI currently caps out at 28. This page should be paginated.

Effect/Style GUI icons are hardcoded

As it is now, all effect and style GUI icons are hardcoded into the ConfigurationManager.Setting enum. These should be split into the ParticleEffect enum and ParticleStyle interface then commuted down to the config to allow custom styles to set icons properly.

GUI only works with OP

I've checked the config and permissions and /pp gui only works if you are OP. The key "gui-require-permission" is set to false and I've even given the gui permission just to be sure and still it will only open for OPs. Any thoughts as to what is going on here?

PP permissions

I found a bug where if you set a user with a rank (using LP) that allows them to have permissions to the pp, and the activite it. If you decide to demote them to a rank without it, their player particle doesn't get set to nothing, although they don't have access to the gui.

Spectral Arrow (playerparticles-v6.4)

version: 6.4

[00:14:35 ERROR]: Could not pass event EntityShootBowEvent to PlayerParticles v6.4
java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_14_R1.entity.CraftSpectralArrow cannot be cast to class org.bukkit.entity.Arrow (org.bukkit.craftbukkit.v1_14_R1.entity.CraftSpectralArrow and org.bukkit.entity.Arrow are in u
nnamed module of loader 'app')
        at com.esophose.playerparticles.styles.ParticleStyleArrows.onArrowFired(ParticleStyleArrows.java:86) ~[?:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor235.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.14.3.jar:git-Paper-127]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.14.3.jar:git-Paper-127]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.14.3.jar:git-Paper-127]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:536) ~[patched_1.14.3.jar:git-Paper-127]
        at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callEntityShootBowEvent(CraftEventFactory.java:485) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.ItemBow.a(ItemBow.java:65) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.ItemStack.a(ItemStack.java:560) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.EntityLiving.clearActiveItem(EntityLiving.java:2952) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1289) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.PacketPlayInBlockDig.a(SourceFile:40) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.PacketPlayInBlockDig.a(SourceFile:10) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:18) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:127) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:105) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:1002) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:995) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeAll(IAsyncTaskHandler.java:91) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:978) ~[patched_1.14.3.jar:git-Paper-127]
        at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:912) ~[patched_1.14.3.jar:git-Paper-127]
        at java.lang.Thread.run(Thread.java:834) [?:?]

Command to fully remove all effects and styles both at once.

Since the styles and effects GUI are now sorted alphabetically, I've had users complain that the option to disable particles no longer exists. It use to be in the top left, now somewhere down in the middle of each gui section.

Would it be possible to implement a single command to fully remove your particle so players could /pp none for example instead of having to find the option on each section or type /pp particle none & /pp style none? Alternatively, what about an option on the main PP GUI page to remove your particle below the 3 available options?

Add effect with ID

Hello,

First off really nice plugin.

I need a feature for my server. I need to be able to add an effect by setting the id myself.

I am using a custom gui and for example i would have to set an effect for arrow at ID 2. Like this, if my player want to change the arrow effect for another, i know that arrows effect always have ID 2 and i can edit or remove the effect with ID 2, without removing other effect he already wear, like a head effect on ID 1 for example.

Like this, its easier to manage for player, because they know they can for example have 1 effect for arrow, 1 trail, and 1 cloak.

The feature i request is mainly to prevent user to spam my gui and equip the same arrow effect like 3 times. If the player spam the button, it will only remove the effect at ID 2 and add it again.

Thanks

SQLTransientConnectionException

Java 13 (OpenJDK)
Purpur dev 486 (Paper Fork / Spigot 1.15.2)
PlayerParticles dev 14 (https://ci.codemc.io/job/Esophose/job/PlayerParticles/changes)

Since updating to the latest dev build and to java 13, I seem to be getting this error at start-up. Did something change recently breaking mysql tables or the database? The fixed particle I set a while ago at my spawn location is still loading fine.

I try to update dev builds / compile the source (prior to jenkins) every couple days if there are new commits.

[10:01:45] [Craft Scheduler Thread - 27/ERROR]: [PlayerParticles] An error occurred executing a MySQL query: HikariPool-1 - Connection is not available, request timed out after 30000ms.
[10:01:45] [Craft Scheduler Thread - 4/ERROR]: [PlayerParticles] An error occurred executing a MySQL query: HikariPool-1 - Connection is not available, request timed out after 30010ms.
[10:01:45] [Craft Scheduler Thread - 27/WARN]: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:676)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:190)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at dev.esophose.playerparticles.database.MySQLConnector.connect(MySQLConnector.java:41)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.lambda$getPPlayer$2(DataManager.java:112)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[10:01:45] [Craft Scheduler Thread - 27/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:830)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30010ms.
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:676)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:190)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at dev.esophose.playerparticles.database.MySQLConnector.connect(MySQLConnector.java:41)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.lambda$saveParticleGroup$10(DataManager.java:313)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.async(DataManager.java:533)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.saveParticleGroup(DataManager.java:313)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.lambda$getPPlayer$1(DataManager.java:244)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at dev.esophose.playerparticles.database.MySQLConnector.connect(MySQLConnector.java:42)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.lambda$getPPlayer$2(DataManager.java:112)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[10:01:45] [Craft Scheduler Thread - 4/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:830)
[10:01:45] [Craft Scheduler Thread - 30/ERROR]: [PlayerParticles] An error occurred executing a MySQL query: HikariPool-1 - Connection is not available, request timed out after 30000ms.
[10:01:45] [Craft Scheduler Thread - 30/WARN]: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:676)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:190)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at dev.esophose.playerparticles.database.MySQLConnector.connect(MySQLConnector.java:41)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.lambda$saveParticleGroup$10(DataManager.java:313)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.async(DataManager.java:533)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.saveParticleGroup(DataManager.java:313)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.lambda$getPPlayer$1(DataManager.java:244)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at dev.esophose.playerparticles.database.MySQLConnector.connect(MySQLConnector.java:42)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at dev.esophose.playerparticles.manager.DataManager.lambda$getPPlayer$2(DataManager.java:112)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[10:01:45] [Craft Scheduler Thread - 30/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:830)

Other plugins that rely on the same mysql database connect and load fine without timing out or erroring. :( The SQL database is local as well, no remote access.

French language and 6.3

Hi,

With 6.3 the accents of the french language (é, è, ê...) do not display correctly contrary to 6.2

6.3 :
capture

6.2 :
capture2

I use PaperSpigot 1.13.2.

Fishing Style Applies to all players

When someone is using the Fishing Style, any user who fishes will have the same particle effect as the user using it applied even if they do not have permission to the style.

Using the latest version of the plugin and paper 1.15.2

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.