Git Product home page Git Product logo

player-expansion's Introduction

logo

ciImg releaseImg APIversionImg licenseImg

Information

PlaceholderAPI is a plugin for Spigot servers that allows server owners to display information from various plugins with a uniform format.

Support for specific plugins are provided either by the plugin itself or through expansions. The expansions may be downloaded in-game through the PAPI Expansion Cloud. There are currently over 240+ expansions that support a wide variety of plugins, such as Essentials, Factions, LuckPerms, and Vault.

PlaceholderAPI has been downloaded over 1,000,000 times and has been used concurrently on over 40,000 servers, which makes it a must-have for a server of any type or scale.

Contribute

If you would like to contribute towards PlaceholderAPI should you take a look at our Contributing file for the ins and outs on how you can do that and what you need to keep in mind.

Create an Expansion

If you would like to create your own Placeholder Expansion for PlaceholderAPI, take a look at our Wiki which contains a detailed tutorial on how you can achieve this.

Support

Quick Links

player-expansion's People

Contributors

aboodyy avatar blitzoffline avatar cj89898 avatar darbyjack avatar edexiam avatar extendedclip avatar frcsty avatar funny-cube avatar hexedhero avatar igabytm avatar kforbro avatar lemmotresto avatar maximvdw avatar montlikadani avatar pegasisforever avatar pixar02 avatar robindebaets avatar stonar96 avatar sxtanna avatar wesley51 avatar wildtooth avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

player-expansion's Issues

%player_direction% not working

Drake#1834 on the discord reported that %player_direction% is no longer working:
Spigot is 1.13.2, Papi is 2.10.0, and the expansion is 1.7.0

%player_item_in_hand__level_ENCHANTMENT% Does not parse enchants higher than 255

Describe the bug
The placeholder %player_item_in_hand_ENCHANTMENT% e.g. %player_item_in_hand_LOOT_BONUS_BLOCKS% parses up to 255 and not higher.

To Reproduce
Steps to reproduce the behavior:

  1. Enchant any item with fortune (higher than 255) e.g. 500
  2. Use the command /papi parse me %player_item_in_hand_LOOT_BONUS_BLOCKS%
  3. As you will see it will parse 255 instead of 500

Screenshots
image
image

[Bug] OfflinePlayer support for Player Expansion

Currently, when used in conjunction with ParseOther, it returns no results for an offline player's %player_displayname%, although it is able to return a result with the %player_uuid% placeholder, as well as the %player_name% placeholder.

It is also unable to get the user's last %player_gamemode%, returning a blank result instead.

Update 1.17

Hi.

Have an bug after install the expansion: player on my 1.17 server
Console output

[18:33:35] [Server thread/INFO]: [PlaceholderAPI] Successfully registered expansion: mvdw
[18:33:35] [Server thread/INFO]: [PlaceholderAPI] Successfully registered expansion: player
[18:33:35] [Server thread/WARN]: java.lang.ClassNotFoundException: net.minecraft.server.v1_17_R1.MinecraftServer
[18:33:35] [Server thread/WARN]: at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:433)
[18:33:35] [Server thread/WARN]: at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:586)
[18:33:35] [Server thread/WARN]: at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
[18:33:35] [Server thread/WARN]: at java.base/java.lang.Class.forName0(Native Method)
[18:33:35] [Server thread/WARN]: at java.base/java.lang.Class.forName(Class.java:375)
[18:33:35] [Server thread/WARN]: at com.extendedclip.papi.expansion.server.ServerExpansion.(ServerExpansion.java:64)
[18:33:35] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[18:33:35] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
[18:33:35] [Server thread/WARN]: at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[18:33:35] [Server thread/WARN]: at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
[18:33:35] [Server thread/WARN]: at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
[18:33:35] [Server thread/WARN]: at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.createExpansionInstance(LocalExpansionManager.java:336)
[18:33:35] [Server thread/WARN]: at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.register(LocalExpansionManager.java:138)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
[18:33:35] [Server thread/WARN]: at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.ReduceOps$5.evaluateSequential(ReduceOps.java:257)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.ReduceOps$5.evaluateSequential(ReduceOps.java:248)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
[18:33:35] [Server thread/WARN]: at java.base/java.util.stream.ReferencePipeline.count(ReferencePipeline.java:709)
[18:33:35] [Server thread/WARN]: at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$registerAll$2(LocalExpansionManager.java:288)
[18:33:35] [Server thread/WARN]: at me.clip.placeholderapi.util.Futures.lambda$null$0(Futures.java:46)
[18:33:35] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:81)
[18:33:35] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:400)
[18:33:35] [Server thread/WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1252)
[18:33:35] [Server thread/WARN]: at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:436)
[18:33:35] [Server thread/WARN]: at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1200)
[18:33:35] [Server thread/WARN]: at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1027)
[18:33:35] [Server thread/WARN]: at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:307)
[18:33:35] [Server thread/WARN]: at java.base/java.lang.Thread.run(Thread.java:831)

%player_item_in_hand_lore%

Would it be possible to add %player_item_in_hand_lore%, functioning exactly the same as %player_item_in_hand_name%, but returning the item's Lore instead?

Armor variables

Could it be possible to add Armor variables?
Here are some examples:
Held items:
%player_mainhand_displayname% = Main hand's display-name
%player_offhand_displayname% = Offhand's display-name
%player_mainhand_durability% = Main hand's durability
%player_offhand_durability% = Offhand's durability

Armor slots:
%armor_helmet_displayname% = Helmet displayname
%armor_chestplate_displayname% = Chestplate displayname
%armor_leggings_displayname% = Leggings displayname
%armor_boots_displayname% = Boots displayname
%armor_helmet_durability% = Helmet's durability
%armor_chestplate_durability% = Chestplate's durability
%armor_leggings_durability% = Leggings' durability
%armor_boots_durability% = Boots' durability

Since these placeholders ares still based on the PLAYER I thougth adding them in this Expansion would be the best idea. Ofcourse these could be added in a seperate expansion. Just checking what would be better.
@extendedclip

can not register

placeholderAPI-2.10.10-dev-122 and placeholderAPI-2.10.9
mohist-1.16.5
Failed to register exoansion from PAPI-Expansion-Player.jar

%player_ping% not working in 1.20.2

[15:42:43 INFO]: Strahill issued server command: /papi parse Strahill %player_ping%
[15:42:43 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'papi' in plugin PlaceholderAPI v2.11.4
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:168) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R2.CraftServer.dispatchCommand(CraftServer.java:1003) ~[purpur-1.20.2.jar:git-Purpur-2076]
at org.bukkit.craftbukkit.v1_20_R2.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[purpur-1.20.2.jar:git-Purpur-2076]
at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:265) ~[purpur-1.20.2.jar:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:338) ~[?:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:322) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2274) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$20(ServerGamePacketListenerImpl.java:2234) ~[?:?]
at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.2.jar:git-Purpur-2076]
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:1349) ~[purpur-1.20.2.jar:git-Purpur-2076]
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:193) ~[purpur-1.20.2.jar:git-Purpur-2076]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1326) ~[purpur-1.20.2.jar:git-Purpur-2076]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1319) ~[purpur-1.20.2.jar:git-Purpur-2076]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1297) ~[purpur-1.20.2.jar:git-Purpur-2076]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1185) ~[purpur-1.20.2.jar:git-Purpur-2076]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:318) ~[purpur-1.20.2.jar:git-Purpur-2076]
at java.lang.Thread.run(Thread.java:1589) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Attempt to get boolean field "net.minecraft.server.level.EntityPlayer.f" with illegal data type conversion to int
at jdk.internal.reflect.FieldAccessorImpl.newGetIllegalArgumentException(FieldAccessorImpl.java:130) ~[?:?]
at jdk.internal.reflect.FieldAccessorImpl.newGetIntIllegalArgumentException(FieldAccessorImpl.java:193) ~[?:?]
at jdk.internal.reflect.MethodHandleBooleanFieldAccessorImpl.getInt(MethodHandleBooleanFieldAccessorImpl.java:87) ~[?:?]
at java.lang.reflect.Field.getInt(Field.java:614) ~[?:?]
at com.extendedclip.papi.expansion.player.PlayerUtil$1.apply(PlayerUtil.java:66) ~[?:?]
at com.extendedclip.papi.expansion.player.PlayerUtil$1.apply(PlayerUtil.java:50) ~[?:?]
at com.extendedclip.papi.expansion.player.PlayerUtil.getPing(PlayerUtil.java:131) ~[?:?]
at com.extendedclip.papi.expansion.player.PlayerExpansion.retrievePing(PlayerExpansion.java:481) ~[?:?]
at com.extendedclip.papi.expansion.player.PlayerExpansion.onRequest(PlayerExpansion.java:403) ~[?:?]
at me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:119) ~[PlaceholderAPI-2.11.4.jar:?]
at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:71) ~[PlaceholderAPI-2.11.4.jar:?]
at me.clip.placeholderapi.commands.impl.local.CommandParse.evaluateParseSingular(CommandParse.java:117) ~[PlaceholderAPI-2.11.4.jar:?]
at me.clip.placeholderapi.commands.impl.local.CommandParse.evaluate(CommandParse.java:57) ~[PlaceholderAPI-2.11.4.jar:?]
at me.clip.placeholderapi.commands.PlaceholderCommandRouter.onCommand(PlaceholderCommandRouter.java:114) ~[PlaceholderAPI-2.11.4.jar:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
... 23 more

A Placeholder To Get The Player's Yaw & Pitch

Hey there.
I was wondering if it was possible to add a placeholder to get the parsed player's yaw and pitch (rotation). There is already a %player_direction% which returns the name of the cardinal direction (W/E/N/S) but it'd be much nicer to have the actual number.

My idea is to simply have %player_yaw% and %player_pitch%.

Thanks for your consideration.

"%player_total_exp%" doesn't update when using anvil / enchanting table

When using exp levels in anvil (ex. enchanting pickaxe with enchanted book) or enchanting table %player_total_exp% placeholder doesn't update it's value. Value updates and shows correct number when I use Essentials /exp command (ex. /exp take player 0).

EDIT: My bad using wrong placeholder.

PAPI version 2.10.10
Player Expansion version 2.0.2
Purpur-1393 (MC: 1.17.1)

[Request] Player Absorption Placeholder Vairable

Player Absorption placeholder vairable which measures the absorption of a player.

Source: https://minecraft.fandom.com/wiki/Absorption

Absorption is a status effect that impacts a player's health bar in a positive manner by adding "extra hearts" in addition to a player's typical 20 HP. Absorption adds 4 HP per level of extra health to the player. Once enough damage has been taken by a player to deplete an absorption heart (or after the effect wears off), the extra hearts will disappear from the user's health bar permanently until a player gets the status effect back.

image

%player_absorption%

E.g: The maximum value for absorption after eating a Golden Apple would be 4.

Would be very useful for many servers.

I have this error with the variable %player_locale_display_country%

[22:22:33 WARN]: java.lang.NullPointerException: Cannot invoke "String.replace(java.lang.CharSequence, java.lang.CharSequence)" because "localeStr" is null
[22:22:33 WARN]:        at com.extendedclip.papi.expansion.player.PlayerExpansion.onRequest(PlayerExpansion.java:200)
[22:22:33 WARN]:        at PlaceholderAPI-2.11.3-DEV-160.jar//me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:119)
[22:22:33 WARN]:        at PlaceholderAPI-2.11.3-DEV-160.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:71)
[22:22:33 WARN]:        at PlaceholderAPI-2.11.3-DEV-160.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:99)
[22:22:33 WARN]:        at InteractiveChat-4.2.3.8.jar//com.loohp.interactivechat.utils.PlaceholderParser.parse0(PlaceholderParser.java:104)
[22:22:33 WARN]:        at InteractiveChat-4.2.3.8.jar//com.loohp.interactivechat.utils.PlaceholderParser.parse(PlaceholderParser.java:83)
[22:22:33 WARN]:        at InteractiveChat-4.2.3.8.jar//com.loohp.interactivechat.modules.PlayernameDisplay.processPlayer(PlayernameDisplay.java:104)
[22:22:33 WARN]:        at InteractiveChat-4.2.3.8.jar//com.loohp.interactivechat.modules.PlayernameDisplay.process(PlayernameDisplay.java:85)
[22:22:33 WARN]:        at InteractiveChat-4.2.3.8.jar//com.loohp.interactivechat.listeners.OutMessagePacket.processPacket(OutMessagePacket.java:530)
[22:22:33 WARN]:        at InteractiveChat-4.2.3.8.jar//com.loohp.interactivechat.listeners.OutMessagePacket.access$200(OutMessagePacket.java:83)
[22:22:33 WARN]:        at InteractiveChat-4.2.3.8.jar//com.loohp.interactivechat.listeners.OutMessagePacket$1.lambda$onPacketSending$0(OutMessagePacket.java:415)
[22:22:33 WARN]:        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[22:22:33 WARN]:        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[22:22:33 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[22:22:33 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[22:22:33 WARN]:        at java.base/java.lang.Thread.run(Thread.java:833)

%player_online% error

Type
Plugin Bug

What happens?
When using %parseother_{offline_player}_{player_online} returns an error and doesnt output a value.

Expected Behaviour
value "false"

How to Reproduce
Use the placeholder like this "%parseother_{offline_player}_{player_online}" or just %player_online%

/papi dump Output
https://paste.helpch.at/otimonecil

Console Log
https://pastebin.com/G4QRMMmx

Errors
No response

Additional Info
Im using this in another plugin, but every plugin i use this in this error keeps happening.
Even when the player is online the output will still have the error.

Player expansion 2.0.1 lists as 2.0.0

  • Download Player expansion 2.0.1 = PAPI-Expansion-Player_i3C3hs6.jar
  • Remove previous Player expansion in plugins/PlaceholderAPI/expansions/
  • Install PAPI-Expansion-Player_i3C3hs6.jar in plugins/PlaceholderAPI/expansions/
  • Execute papi reload (or restart server)
  • Observe that papi list shows Player 2.0.0, out-of-date

Bugged Player Placeholders

Spigot 1.14.3 (Spigot 5e4e7f32349feb)
PlaceholderAPI 2.10.3

Issue

What is the issue? Describe it like you would tell a friend.
Basically when using the Player expansion placeholders, namely %player_time%, %player_timestamp% and %player_biome% they don't act as intended. And after testing these 3 different player placeholders I'm guessing all of these are broken.

Expected behaviour

What should PlaceholderAPI do?
It should give the corresponding information for those placeholders.

Actual behaviour

What does PlaceholderAPI actually do?
It just prints out the placeholder names instead of their intended output.

How to reproduce

What steps did you made, to get this bug?

  1. I used it in ChatControl Pro.
  2. Downloaded the expansion.
  3. Reloaded PAPI.
  4. Restarted Server.
  5. Does not show what they're supposed to.

Allow more ping colors

Suggestion:

Add the possibility to add more ping values/colors in the PlaceholderAPI configuration.

Example:

  player:
    ping_color:
      extremelyhigh: '&4&l'
      veryhigh: '&4'
      higherthanhigh: '&c'
      high: '&6'
      medium: '&e'
      low: '&b'
      lowerthanlow: '&a'
      verylow: '&d'
      extremelylow: '&5'
    ping_value:
      extremelyhigh: 250
      veryhigh: 200
      higherthanhigh: 150
      high: 100
      medium: 50
      low: 30
      lowerthanlow: 20
      verylow: 10
      extremelylow: 1

new placeholder

Add a new placeholder:
%player_exp_commas% # 100,000
Instead of:
%player_total_exp% # 100000

I have looked all over the Placeholders wiki there is no placeholder for exp using commas.

Add %player_item_in_SLOT_name%

I can't pull request, but I think that this placeholder could be very usefull for everyone, just that, add:
%player_item_in_SLOT_name% (and variants.)
where slot, could be helmet, chest, leggs, feed, hand, offhand

New placeholder (block-data)

Hello, is it possible to add a new placeholder to check the placed block data (when a player looking/interact with block)?
(Maybe %player_block_data%)

Like anvil face direction, and other blocks, screen example how the placeholder must return:

εικόνα

Placeholder to check player recipe status

Type

  • New function for PlaceholderAPI.
    A new function that developers could use.
  • Change to code (Internal).
    Changes to code that won't affect the end-user.
  • Change to code (External).
    Changes to code that will affect the end-user (breaks stuff).

Info

Ability to check player recipe status. Can be useful on servers with doLimitedCrafting gamerule.

%player_can_craft_<recipe>% 

%player_can_craft_minecraft:iron_hoe%

%player_known_recipes%

ping placeholder returns error

Caused by: java.lang.IllegalArgumentException: Attempt to get net.minecraft.server.level.PlayerInteractManager field "net.minecraft.server.level.EntityPlayer.e" with illegal data type conversion to int

Player ping is double (not int) on versions below ~1.16.5

On minecraft versions below ~1.16.5 player ping is double, not int.
Tested on 1.7.10, 1.8.8, 1.12.2


ping = entityPlayer.getClass().getDeclaredField(VersionHelper.IS_1_17_OR_NEWER ? "e" : "ping");

Item ID of main hand doesn't show full ID, only meta

{iteminhand:typeid} {iteminmainhand:typeid} are both the same and they both show only the base ID unlike /itemdb command in essentials which shows base:data

For example when I have a jungle plank in my hand, but instead of just "5" I want there to be an option to make it "5:3"
or for grass "2" -> "2:0"

Please add this it is very important for my creative server and will help a lot! All help will be greatly appreciated.

Issues with 1.17 for player expansion

i thing this also effects other placeholders of this expansion in my case its the ping one

[22:35:51] [Craft Scheduler Thread - 88/WARN]: java.lang.NoSuchFieldException: ping
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at java.base/java.lang.Class.getDeclaredField(Class.java:2549)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.extendedclip.papi.expansion.player.PlayerUtil$1.cacheReflection(PlayerUtil.java:88)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.extendedclip.papi.expansion.player.PlayerUtil$1.apply(PlayerUtil.java:61)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.extendedclip.papi.expansion.player.PlayerUtil$1.apply(PlayerUtil.java:49)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.extendedclip.papi.expansion.player.PlayerUtil.getPing(PlayerUtil.java:95)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.extendedclip.papi.expansion.player.PlayerExpansion.retrievePing(PlayerExpansion.java:345)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.extendedclip.papi.expansion.player.PlayerExpansion.onRequest(PlayerExpansion.java:294)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:160)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:70)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:98)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.Zrips.CMI.Modules.Placeholders.Placeholder.updatePlaceHolders(Placeholder.java:586)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.Zrips.CMI.Modules.Placeholders.Placeholder.updatePlaceHolders(Placeholder.java:451)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at com.Zrips.CMI.Modules.TabList.TabListManager$3.run(TabListManager.java:777)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:81)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[22:35:51] [Craft Scheduler Thread - 88/WARN]:  at java.base/java.lang.Thread.run(Thread.java:831)

Console Warning Messages

I'm not sure if this issue is related to this expansion, but it has been bugging me a while.

[01:01:53 WARN]: java.lang.NoSuchFieldException: ping
[01:01:53 WARN]: at java.base/java.lang.Class.getDeclaredField(Class.java:2610)
[01:01:53 WARN]: at com.extendedclip.papi.expansion.player.PlayerUtil.getPing(PlayerUtil.java:46)
[01:01:53 WARN]: at com.extendedclip.papi.expansion.player.PlayerExpansion.onRequest(PlayerExpansion.java:298)
[01:01:53 WARN]: at PlaceholderAPI-2.11.3.jar//me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:119)
[01:01:53 WARN]: at PlaceholderAPI-2.11.3.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:71)
[01:01:53 WARN]: at PlaceholderAPI-2.11.3.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:99)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.utils.PlaceholderParser.parse0(PlaceholderParser.java:104)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.utils.PlaceholderParser.parse(PlaceholderParser.java:83)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.modules.PlayernameDisplay.processPlayer(PlayernameDisplay.java:104)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.modules.PlayernameDisplay.process(PlayernameDisplay.java:85)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.listeners.OutMessagePacket.processPacket(OutMessagePacket.java:598)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.listeners.OutMessagePacket.access$200(OutMessagePacket.java:84)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.listeners.OutMessagePacket$1.lambda$onPacketSending$0(OutMessagePacket.java:483)
[01:01:53 WARN]: at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[01:01:53 WARN]: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[01:01:53 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[01:01:53 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[01:01:53 WARN]: at java.base/java.lang.Thread.run(Thread.java:833)
[01:01:53 WARN]: java.lang.NoSuchFieldException: ping
[01:01:53 WARN]: at java.base/java.lang.Class.getDeclaredField(Class.java:2610)
[01:01:53 WARN]: at com.extendedclip.papi.expansion.player.PlayerUtil.getPing(PlayerUtil.java:46)
[01:01:53 WARN]: at com.extendedclip.papi.expansion.player.PlayerExpansion.onRequest(PlayerExpansion.java:300)
[01:01:53 WARN]: at PlaceholderAPI-2.11.3.jar//me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:119)
[01:01:53 WARN]: at PlaceholderAPI-2.11.3.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:71)
[01:01:53 WARN]: at PlaceholderAPI-2.11.3.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:99)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.utils.PlaceholderParser.parse0(PlaceholderParser.java:104)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.utils.PlaceholderParser.parse(PlaceholderParser.java:83)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.modules.PlayernameDisplay.processPlayer(PlayernameDisplay.java:104)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.modules.PlayernameDisplay.process(PlayernameDisplay.java:85)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.listeners.OutMessagePacket.processPacket(OutMessagePacket.java:598)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.listeners.OutMessagePacket.access$200(OutMessagePacket.java:84)
[01:01:53 WARN]: at InteractiveChat-4.2.6.0.jar//com.loohp.interactivechat.listeners.OutMessagePacket$1.lambda$onPacketSending$0(OutMessagePacket.java:483)
[01:01:53 WARN]: at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[01:01:53 WARN]: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[01:01:53 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[01:01:53 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[01:01:53 WARN]: at java.base/java.lang.Thread.run(Thread.java:833)

Direction

%player_direction%
This provides the wrong direction.
I am facing North but the placeholder says East

[suggestion] %player_is_elytra_flying%

there is currently no expansion that support such function of detecting whether a player is using elytra flying and glide, if possible please add it, thank you

[FR] %player_biome% placeholder returns unformatted text.

Can we get an supplementary placeholder that returns proper title text, e.g. "Warm Ocean" instead of "WARM_OCEAN". I thought it might be useful information to display to my players on their scoreboard. Yes I could just write a Js hook for this, but I feel it would increase server overhead, when the string could just as easily be formatted in papi. Perhaps, just %player_biome_formatted% would be nice to have. Thanks.

SUGGESTION - 2 new placeholders

  1. Placeholder that would display the level of set potion type that player has applied? For example if I have strength potion of level 3 the placeholder would be smth like: %player_potionlevel_strength% and it would display a number 3 (for as long as the player has the effect)

  2. Placeholder that would display the amount of set attribute on the item that's player currently holding? Example: Player holds a sword with attribute attack_damage in it, its amount is 10. So the placeholder would be smth like %player_attributelevel_attack% and it would display number 10 (as long as the player holds the item)

[Request] New placeholder for showing last damage given.

This is a suggestion from PlaceholderAPI/PlaceholderAPI#56

Idea would be to add a placeholder to show the last damage a player has given to an entity.

My idea there is to change %player_last_damage% by splitting it up into %player_last_damage_taken% for damage the player took and %player_last_damage_given% (or dealt?) that shows the last damage the player dealt to a entity.
Only issue I see is to (temporary) store the info, since it doesn't seem like there's a way the damage a player has given is stored somewhere to easy access.

New Placeholders for Health

Add the ability to check if the player has health boost:

%has_health_boost%

Add the ability to check how much total health the health boost is adding:

%health_boost%

This would be useful for developers making RPG-style tools or armor sets that increase the health of a player.

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.