kernitus / BukkitOldCombatMechanics

Spigot plugin to configure combat mechanics from 1.9 onwards
https://www.spigotmc.org/resources/19510/
Mozilla Public License 2.0
160 stars 70 forks source link

1.9+ Attack cooldown active when it shouldn't be #711

Open qualityrice opened 5 months ago

qualityrice commented 5 months ago

Information

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.

# ############# OldCombatMechanics Plugin by kernitus and Rayzr522 ##########
#                                                                           #
# Bukkit Page: http://dev.bukkit.org/bukkit-plugins/oldcombatmechanics/     #
# Spigot Page: https://www.spigotmc.org/resources/oldcombatmechanics.19510/ #
# GitHub Page: https://github.com/kernitus/BukkitOldCombatMechanics/        #
#                                                                           #
# ###########################################################################

modesets:
  # These modesets are lists of modules that are enabled for a player in that mode.
  # Modules not listed in any modeset are assumed to always be available.
  # You can create as many modesets as you like by adding a new key and corresponding list.
  # When in PvP, the modeset of the attacker is checked first.
  # If not PvP, the modeset of the defending entity is checked.
  # Of course, the module must also be enabled in its own config section.
  # Sample below has modules enabled for "old" combat modeset and disabled for "new" combat modeset
  # PlaceholderAPI: %ocm_modeset%
  old:
      - "disable-attack-cooldown"
      - "disable-sword-sweep"
      - "disable-offhand"
      - "old-tool-damage"
      - "sword-blocking"
      - "shield-damage-reduction"
      - "old-golden-apples"
      - "old-player-knockback"
      - "old-player-regen"
      - "old-armour-strength"
      - "old-potion-effects"
      - "old-critical-hits"

worlds:
  # These are the modesets available in each world.
  # If player has no modeset when moving worlds they'll be assigned first mode in list,
  # unless the mode from the world they are coming from is also available in the new world.
  # Worlds not specified below will have all modesets available.

  #world: ["old"]
  #world_nether: ["old"]
  #world_the_end: ["old"]

  # old_world: ["old"]
  # brave_new_world: ["new"]

mode-messages:
  # Messages used when changing player mode
  mode-status: "&bYour current modeset is: &7%s"
  message-usage: "&eYou can use &c/ocm mode <modeset> [player] &eto change modeset"
  invalid-modeset: "&cPlease specify a valid modeset!"
  invalid-player: "&cPlease specify a valid player!"
  mode-set: "&2Set modeset to &7%s"

# ########################
# COMBAT MODULE SETTINGS
# ########################

disable-attack-cooldown:
  # This is to disable the attack cooldown
  enabled: true
  # What to set the attack speed to. Default for 1.9 is 4, at least 40 is needed for no cooldown.
  generic-attack-speed: 40

attack-frequency:
  # Allows changing the player invulnerability between hits
  enabled: true
  # The hit delay to apply. Default for 1.9+ is 20 ticks (1 second)
  playerDelay: 18
  mobDelay: 16

old-tool-damage:
  # This is to set the tool damage as in pre-1.9
  # IMPORTANT: Also enable disable-sword-sweep module or sweeps will have the damage value of the weapon in hand
  # NOTE: this will modify the damage, however the item tooltip will still show the 1.9+ damage
  enabled: true
  # Use old sharpness calculations, i.e. each level adds 1.25 damage
  # In 1.9+, sharpness adds 1 + 0.5 * level damage
  old-sharpness: true
  # Damage values shown in 1.9 representation (actual damage)
  # In 1.8 the damage tooltip value would be added to 1 'base damage', yielding the values below
  damages:
    # Axe damages
    GOLD_AXE: 4
    WOOD_AXE: 4
    STONE_AXE: 5
    IRON_AXE: 6
    DIAMOND_AXE: 7
    NETHERITE_AXE: 8
    # Shovel damages
    GOLD_SPADE: 2
    WOOD_SPADE: 2
    STONE_SPADE: 3
    IRON_SPADE: 4
    DIAMOND_SPADE: 5
    NETHERITE_SPADE: 6
    # Sword damages
    GOLD_SWORD: 5
    WOOD_SWORD: 5
    STONE_SWORD: 6
    IRON_SWORD: 7
    DIAMOND_SWORD: 8
    NETHERITE_SWORD: 9
    # Pickaxe damages
    GOLD_PICKAXE: 3
    WOOD_PICKAXE: 3
    STONE_PICKAXE: 4
    IRON_PICKAXE: 5
    DIAMOND_PICKAXE: 6
    NETHERITE_PICKAXE: 7
    # Hoe damages
    GOLD_HOE: 1
    WOOD_HOE: 1
    STONE_HOE: 1
    IRON_HOE: 1
    DIAMOND_HOE: 1
    NETHERITE_HOE: 1

old-critical-hits:
  # Makes critical hits work like in 1.8
  # With a critical hit, the damage will be multiplied by 1.5
  # In 1.9, the user must also not be sprinting for it to be a crit
  enabled: true
  world: [ ]
  # What the damage, after applying potions effects, is multiplied by
  multiplier: 1.5
  # Whether to allow crits while sprinting. 1.8: true, 1.9: false
  allow-sprinting: true

old-player-regen:
  # This is to make players' regeneration act mostly like it did in pre-1.9
  # Based on https://minecraft.gamepedia.com/Hunger?oldid=948685
  enabled: true
  # How often a player should regenerate health, in milliseconds (In 1.8: 4 seconds)
  # The foodTickerTimer might not be perfectly accurate so we give it ~10ms of leeway
  interval: 3990
  # How many half-hearts the player should heal by, every seconds specified above
  amount: 1
  # How much exhaustion the player should get from healing. In 1.8: 3    In 1.9: 4    In 1.11: 6
  # If, after adding this, Minecraft finds the value is above 4, it subtracts 4
  # and either reduces saturation or, if saturation is 0, reduces food level by 1 (1/2 a stick)
  exhaustion: 3

# ########################
# ARMOUR
# ########################

old-armour-strength:
  # This is to make armour calculations like in 1.8
  # Based on this: https://minecraft.gamepedia.com/index.php?title=Armor&oldid=909187
  enabled: true
  # Whether to introduce randomness in the calculation, as in 1.8
  randomness: true

old-armour-durability:
  # This makes armour take a constant amount of durability damage (except for explosions)
  enabled: true
  # By how much to reduce durability every attack. 1.8 default is 1
  reduction: 1

# ########################
# SWEEP, SHIELDS & BLOCKING
# ########################

shield-damage-reduction:
  # This module allows changing the damage reduction behaviour of shields
  enabled: true
  # How much damage blocking should reduce
  # Firstly, amount is subtracted, then value is multiplied by percentage
  # 1.8: (damage - 1) * 50%    1.9: damage * 33%   1.11: damage * 0%
  # Damage reduction = (damage - damageReductionAmount) * damageReductionPercentage / 100
  generalDamageReductionAmount: 1
  generalDamageReductionPercentage: 50
  # This value works the same but is exclusively for projectile damage
  # Set amount to 0 and percentage to 100 for 1.8 behaviour, i.e. arrows go through shields
  projectileDamageReductionAmount: 1
  projectileDamageReductionPercentage: 50

sword-blocking:
  # This is to allow players to block with swords again, by getting a shield while they hold right click with a sword
  enabled: false
  # How often, in ticks, OCM should check if the player is still blocking with a shield, and remove it if not
  # If this is too fast, the player will have their shield disappear before they're able to block again causing a slight delay
  # If this is too slow, players will have a shield in their hand well after they've stopped blocking
  # 20 ticks = 1 second
  restoreDelay: 40
  # Whether to require players to have oldcombatmechanics.swordblock permission to block with a sword
  use-permission: false

disable-sword-sweep:
  # This is to disable the sword sweep attack
  # With ProtocolLib, particle effect is also removed
  enabled: true

disable-sword-sweep-particles:
  # This is to disable the sword sweep attack particles
  # Requires ProtocolLib
  enabled: true

# ########################
# KNOCKBACK
# ########################

old-player-knockback:
  # This is to change knockback players receive from attacks.  Default values are as in 1.8.
  #
  # Practice servers tend to use lower knockback, for example:
  # knockback-horizontal: 0.35
  # knockback-vertical: 0.35
  # knockback-vertical-limit: 0.4
  # knockback-extra-horizontal: 0.425
  # knockback-extra-vertical: 0.085
  #
  # Minigame servers use higher vertical knockback and lower horizontal knockback, exact values are unknown.
  enabled: true
  # Horizontal knockback is reduced by 40% for every successful attack by the player, with no limit
  # Increase to make clicking more important, decrease to make it less important
  knockback-horizontal: 0.4
  # Vertical knockback is not reduced by clicking faster
  # Increase to make clicking less important, decrease to make clicking more important
  knockback-vertical: 0.4
  # Vertical knockback limit is applied after base vertical knockback
  # This limit can be exceeded by sprint hitting or knockback enchantments, from the extra vertical knockback
  knockback-vertical-limit: 0.4
  # Extra horizontal knockback is applied for each level of knockback enchant, and for sprinting
  # Increase to make sprint resetting (w-tapping) more important, decrease to make it less important
  # Increase to make clicking more important, decrease to make clicking less important
  knockback-extra-horizontal: 0.5
  # Extra vertical knockback is applied for each level of knockback enchant, and for sprinting
  # Increase to make sprint resetting (w-tapping) more important, decrease to make it less important
  # Increase to make clicking less important, decrease to make clicking more important
  knockback-extra-vertical: 0.1
  # Should knockback resistance be enabled? (e.g. netherite armour knockback resistance)
  enable-knockback-resistance: false

old-fishing-knockback:
  # This is to make the knockback of players when they get hit by a fishing bobber the same as it was in pre-1.9
  enabled: true
  # This is the damage done by the fishing rod attack
  damage: 0.0001
  # This is to cancel dragging in the entity attached to the fishing rod when reeling in, like in 1.8
  # Options: all, players, mobs, none. players allows compatibility with WorldGuard pvp-deny regions
  cancelDraggingIn: players
  # Whether to also give knockback on non-player living entities (e.g. mobs)
  knockbackNonPlayerEntities: false
  # This is the delay in milliseconds in-between rod damage, so the player hit has time to fall back down
  hitCooldown: 1000

fishing-rod-velocity:
  # In 1.9+ fishing rods go 8 blocks instead of 12 blocks
  # This is due to both gravity and initial launch speed
  # Set to true to revert back to the old calculations and gravity
  enabled: false

projectile-knockback:
  # This adds knockback and/or damage to players when they get hit by snowballs, eggs & enderpearls
  # This has been a Bukkit bug for so long people thought it was vanilla when it was patched
  enabled: true
  # This is the damage done by each projectile
  damage:
    snowball: 0.0001
    egg: 0.0001
    ender_pearl: 0.0001

# ########################
# GAPPLES & POTIONS
# ########################

old-golden-apples:
  # This is to change the behaviour / crafting of golden apples to how it was in pre-1.9
  # WARNING: If on 1.12 or above and you disable this module you must reload the server for the recipe to disappear
  enabled: true
  # Cooldown between eating the apples, in seconds
  cooldown:
    # The cooldown for normal golden apples
    # PlaceholderAPI: %ocm_gapple_cooldown%
    normal: 0
    # Message when user tries to eat golden apple during cooldown. Leave empty to disable.
    message-normal: "&ePlease wait %seconds%s before eating another golden apple."
    # The cooldown for enchanted golden apples
    # PlaceholderAPI: %ocm_napple_cooldown%
    enchanted: 0
    # Message when user tries to eat enchanted golden apple during cooldown. Leave empty to disable.
    message-enchanted: "&ePlease wait %seconds%s before eating another enchanted golden apple."
    # Whether the two apple types share a cooldown.
    # If this is true:
    #   1. Eating any apple resets both cooldowns
    #   2. Each apple type can only be eaten when its cooldown time is over
    #      This means that when you eat *any* apple you start two parallel cooldowns: One for enchanted and one
    #      for normal apples. Each type can only be eaten when its cooldown is over.
    #      Once any apple is eaten, both cooldowns are restarted, so you can not eat either type again
    #      before its full cooldown is over.
    #   3. To have the plugin treat normal and enchanted golden apples as having the same cooldown,
    #      then set the same cooldown time and enable shared mode. (This was the old mode)
    # If this is false:
    #   Eating an enchanted apple will prevent any *enchanted* apple type from being eaten before the cooldown is over
    #   Eating a normal apple will prevent any *normal* apple type from being eaten before the normal cooldown is over
    is-shared: false
  # If you want to allow enchanted golden apple crafting
  enchanted-golden-apple-crafting: true
  # Enabling this makes the potion effects gained by eating golden apples
  # and enchanted golden apples the same as it was in pre-1.9
  old-potion-effects: true
  # Potion effects golden apples should apply
  # Duration is in ticks (20 ticks = 1 second)
  # Amplifier is the potion level - 1, so Regeneration IV would be amplifier 3
  gapple-effects:
    regeneration:
      duration: 100
      amplifier: 1
    absorption:
      duration: 2400
      amplifier: 0
  # Potion effects enchanted golden apples should apply
  napple-effects:
    regeneration:
      duration: 600
      amplifier: 4
    damage_resistance:
      duration: 6000
      amplifier: 0
    fire_resistance:
      duration: 6000
      amplifier: 0
    absorption:
      duration: 2400
      amplifier: 0
  # Enable this if you have another plugin which adds a crafting recipe for
  # enchanted golden apples (requires server restart)
  no-conflict-mode: false

old-potion-effects:
  # This is to restore the 1.8 potion effects and duration
  enabled: false

  # DURATION: (in seconds)
  potion-durations:
    regen: # Regeneration
      drinkable:
        base: 45
        II: 22
        extended: 120
      splash:
        base: 33
        II: 16
        extended: 90

    speed: # Swiftness
      drinkable:
        base: 180
        II: 90
        extended: 480
      splash:
        base: 135
        II: 67
        extended: 360

    fire_resistance:
      drinkable:
        base: 180
        extended: 480
      splash:
        base: 135
        extended: 360

    poison:
      drinkable:
        base: 45
        II: 22
        extended: 120
      splash:
        base: 33
        II: 16
        extended: 90

    night_vision:
      drinkable:
        base: 180
        extended: 480
      splash:
        base: 180
        extended: 480

    weakness:
      drinkable:
        base: 90
        extended: 240
      splash:
        base: 90
        extended: 240

    strength:
      drinkable:
        base: 180
        II: 90
        extended: 480
      splash:
        base: 135
        II: 67
        extended: 360

    slowness:
      drinkable:
        base: 90
        extended: 240
      splash:
        base: 67
        extended: 180

    jump: # Leaping
      drinkable:
        base: 180
        II: 90
        extended: 480
      splash:
        base: 135
        II: 67
        extended: 360

    water_breathing:
      drinkable:
        base: 180
        extended: 480
      splash:
        base: 135
        extended: 360

    invisibility:
      drinkable:
        base: 180
        extended: 480
      splash:
        base: 135
        extended: 360

    # 1.9+ potions
    # Turtle Master potion currently incompatible, will just work like default
    luck:
      drinkable:
        base: 300
      splash:
        base: 300

    slow_falling:
      drinkable:
        base: 90
        extended: 240
      splash:
        base: 90
        extended: 240

  # EFFECTS
  # If 'multiplier' is true value is multiplied by base tool damage. If 'addend' it is added.
  # If both true, it is first increased by 1 then multiplied (same as +xx%)
  # Strength potion
  # 1.9: I = +3; II = +6;    1.8: I = +130%; II = +260%
  strength:
    modifier: 1.3
    multiplier: true
    addend: true
  # Weakness potion
  # 1.9 value: -4   1.8 value: -0.5
  weakness:
    modifier: -4
    multiplier: false

# ########################
# MISCELLANEOUS
# ########################

disable-crafting:
  # Disable the crafting of specified items
  enabled: false
  # List of denied items
  denied:
    - shield
  # Show the user a message if they try to craft a blacklisted item
  showMessage: true
  message: "&cThat item is disabled!"

disable-offhand:
  # Disable the usage of the offhand
  # Won't affect sword-blocking module
  enabled: true
  # Whether the following list allows items or blocks them
  whitelist: false
  # List of items that should be allowed/blocked
  # Example: [diamond_sword,BOW]
  items: [ ]
  # Message to send user when denied. Set to '' to disable
  denied-message: "&cOff-hand is disabled"

old-brewing-stand:
  # Automatically refuels brewing stands
  enabled: false

no-lapis-enchantments:
  # Automatically adds lapis to enchantment tables upon opening
  enabled: true
  # Whether to only allow this for players with oldcombatmechanics.nolapis permission
  usePermission: false

disable-elytra:
  # Do not allow players to wear elytra
  enabled: true

disable-enderpearl-cooldown:
  # Disables enderpearl cooldown
  enabled: true
  # The cooldown, in seconds
  # PlaceholderAPI: %ocm_enderpearl_cooldown%
  cooldown: 0
  # Show the user a message if they try to use an enderpearl and the cooldown has not expired yet
  showMessage: true
  message: "&cYou must wait &7%ds&c before using an enderpearl again!"

chorus-fruit:
  # This makes the chorus fruit behaviour configurable
  enabled: false
  # The maximum distance the fruit can teleport the player. This a PER AXIS value, so this outlines a cube with
  # 2 * max-teleportation-distance as the side length
  # Vanilla default is 8.
  # Setting this to 0 disables chorus fruit teleport.
  # Setting this to a value greater than 8 MIGHT CAUSE CONFLICTS with bukkit's internal anti cheat
  # and *potentially* any other anti-cheat you use. Please make sure this is not an issue before increasing
  # this value.
  max-teleportation-distance: 8
  # Whether to prevent eating the fruit completely. This also prevents the teleportation.
  prevent-eating: false
  # The saturation value of the chorus fruit.
  # Vanilla default is 2.4
  saturation-value: 2.4
  # The hunger value of the chorus fruit.
  # Vanilla default is 4 (2 bars)
  hunger-value: 4

old-burn-delay:
  # This makes it so entities will immediately start to burn when entering fire
  enabled: false
  # How long, in ticks, entities should be on fire for after not being in direct contact anymore
  fire-ticks: 120

disable-projectile-randomness:
  # This is to remove projectile randomness while firing arrows with a bow
  # Or to remove effects of velocity when player is running and launching potions etc
  # This is actually a very old feature and has been in the game for quite some time
  enabled: false
  # What projectiles are affected e.g. arrow, splash_potion, snowball, egg, fishing_hook
  projectile-types: [ arrow ]
  # This is the threshold between projectiles' (X,Z) values before they're considered the same and straightened
  # This value is only useful for multishot. The default of 0.1 works at all but extremely shallow angles,
  # where arrows end up bunched together. Set to 1 if you want multishots to all follow the same path.
  epsilon: 0.1

disable-bow-boost:
  # This is to stop players from boosting themselves forward by hitting themselves
  # while running with a punch II arrow from their bow
  # This module simply stops them from hitting themselves with arrows entirely
  enabled: false

disable-attack-sounds:
  # Disables attack sounds that were added with 1.9+
  # Requires ProtocolLib
  enabled: true
  # The sounds that will be blocked by this module
  blocked-sound-names:
    - "ENTITY_PLAYER_ATTACK_STRONG"
    - "ENTITY_PLAYER_ATTACK_SWEEP"
    - "ENTITY_PLAYER_ATTACK_NODAMAGE"
    - "ENTITY_PLAYER_ATTACK_KNOCKBACK"
    - "ENTITY_PLAYER_ATTACK_CRIT"
    - "ENTITY_PLAYER_ATTACK_WEAK"

disable-player-collisions:
  # This is to disable player collisions
  # This is compatible with most scoreboard and tablist-editing plugins
  enabled: true

# ########################
# SPECIAL SETTINGS BELOW #
# ########################

message-prefix: "&6[OCM]&r"

# This is to toggle the update checker
update-checker:
  # Whether to check for updates and notify players with the oldcombatmechanics.notify permission
  enabled: true
  # Whether to automatically download an update of the plugin
  # The update is applied on the next restart/reload of the server
  # Auto update is disabled if Spigot version is below 1.18.1 and force-below-1-18-1-config-upgrade is false
  # This is to prevent accidentally resetting the config
  auto-update: false

# Whether to force config upgrade even in Spigot versions below 1.18.1
# This is not advised, as all the comments would be removed
force-below-1-18-1-config-upgrade: false

# This enables command argument completion when pressing tab
command-completer:
  enabled: true

# This enables debug messages, only enable when troubleshooting
debug:
  enabled: false

# DO NOT CHANGE THIS NUMBER AS IT WILL RESET YOUR CONFIG
config-version: 63

Problem Description

The main problem is that the cooldown is not disabled when it should be. My server has the 1.9 cooldown no matter what I do. Some things in the plugin do work though like being able to craft enchanted golden apples, which I enabled in the config, that works fine. But disabling the cooldown does not work, and neither does disabling the offhand, among possibly other things that are hard to find out for sure.

To Reproduce

Steps to reproduce the behavior: 1. (Optional) delete the [new] modeset in the config 2. (Optional) use the command /ocm mode old (player) 3. Take out a sword or axe etc and left click anywhere. The 1.9+ cooldown is there like always. ### Expected Behaviour

The 1.9+ cooldown should not be active and the server should use the 1.8 combat system.

Actual Behaviour

The 1.9+ cooldown is active and the server is not using the 1.8 combat system.

https://github.com/kernitus/BukkitOldCombatMechanics/assets/65903443/613be6ab-45f6-4ca5-82e0-9d30b69a73c7

In the video here, you can see that the modeset is set to "old", the attack speed is 36.8 but the 1.9+ cooldown remains when I left click.

kernitus commented 4 months ago

Could you show a more complete example with the modeset changing and the debug enabled in the config.yml? I am not able to replicate this

qualityrice commented 4 months ago

Sure. Do you want a recording or the server's latest.log file?

kernitus commented 4 months ago

Sure. Do you want a recording or the server's latest.log file?

If you can capture the actual debug output the player sees that would be ideal.

qualityrice commented 4 months ago

Here's what comes up after I switch mode and also when I'm in combat. I switch between clicking fast like you do in pre 1.9 combat, and clicking slowly like you do in 1.9+. The full debug output is in the log file.

https://github.com/kernitus/BukkitOldCombatMechanics/assets/65903443/38a8dc94-4044-435c-96b3-4307e32969a9

OldCombatMechanics log.log

Sorry about the video quality. Github's 10MB file limit is the culprit.

kernitus commented 3 months ago

Yes, that seems like the attack speed is not being updated after changing modeset even when it should be.

kernitus commented 3 months ago

I am unable to reproduce this issue at all. Can you please try test version 217? I have added some extra debugging information both in the console and for the player changing modeset

qualityrice commented 3 months ago

Sure. It's a really weird bug because it only happens on one of my servers where I cannot disable the cooldown no matter what I do. The cooldown is always active, before I try to switch the mode and also after. The command doesn't seem to do anything. I am unable to replicate this bug anywhere else. On my other server, the plugin seems to work as intended.

I can't manage to get the video I recorded to less than 10MB so I hope the log is enough. I hit some mobs sometimes fast and sometimes slow, then about halfway through the log I "switch the mode" to old and hit some more mobs. Again I don't think switching the mode does anything for me but maybe it will help with debugging. If there's anything else I can do, let me know.

latest.log

kernitus commented 3 months ago

Sure. It's a really weird bug because it only happens on one of my servers where I cannot disable the cooldown no matter what I do. The cooldown is always active, before I try to switch the mode and also after. The command doesn't seem to do anything. I am unable to replicate this bug anywhere else. On my other server, the plugin seems to work as intended.

I can't manage to get the video I recorded to less than 10MB so I hope the log is enough. I hit some mobs sometimes fast and sometimes slow, then about halfway through the log I "switch the mode" to old and hit some more mobs. Again I don't think switching the mode does anything for me but maybe it will help with debugging. If there's anything else I can do, let me know.

latest.log

From the logs, it looks like OCM actually is setting the correct attack speed, but somehow it is not being respected.

  1. What other plugins are you running on this server?
  2. Does this affect all players on this server or just some?
qualityrice commented 3 months ago
  1. No other plugins. I had Essentials installed when the log files were written and sent in, but even when Essentials is removed and OCM is the only plugin on the server, the problem is still there.
  2. It affects all players OP and non-OP.

There was an error in the last log I sent. Something with "Error attaching packet listener!", I don't know if that has something to do with it?

I also tested with Spigot 1.20.4 instead of Paper 1.20.4 but the problem remains.

However I did do some testing on my own just now. The bug does go away if I go to world -> playerdata -> and remove my own uuid. Once I restart the server and generate a new playerdata file, the cooldown is gone and the plugin seems to work as intended. However this is only from my own testing and I'm not 100% sure if this would fix the problem for other players too, and even then I don't think it's a good solution since it can happen again. So even if the issue lies in the playerdata, it's still a bug in the plugin right?

I attached the playerdata file that seems to cause issues. Just replace "UUID" with your own UUID and then add it to a server with Spigot or Paper 1.20.4 and you should see the same bug as me.

(PS: I don't think it's the item I'm holding that is the problem either. I did try to use other items from the creative menu but the cooldown still remains)

UUID.zip

kernitus commented 2 months ago
  1. The packet listener error is just reflection failing on a very specific version of the server, and only affects the disable-player-collisions module. If you keep seeing it, please open a new issue for that.

  2. If deleting the player data fixes the issue, I suspect you had corrupted/incompatible player data. Did you use any of the test versions while the modeset feature was still being worked on? Because the format did change a bit, and one of the attempts involved storing data straight into the player metadata, which would end up in the playerdata file like the one you uploaded.

qualityrice commented 2 months ago

Hmm that's strange. I only used the stable/release builds and never any test versions. But all UUIDs on my server have the same problem. I guess I could just delete them and have new ones be created, but I would just have to hope that the same thing doesn't happen again.

Is there any way to see if the UUID contains something that makes it corrupted? I looked through it using a NBT editor where it showed me all its values, but I couldn't find anything.

kernitus commented 1 month ago

Do you have a copy of the players.bson file in the plugins/OldCombatMechanics folder? That might've gotten corrupted at some point