#paper

1 messages ยท Page 7 of 1

rustic folioBOT
#

The BlockPreDispenseEvent, added in #5075, is only fired for dispensers, and not droppers. I see this as an inconsistency in the API, as BlockDispenseEvent is called for both droppers and dispensers.

What I'm trying to achieve is being able to cancel droppers doing anything while also avoiding the sound and particles. This is possible for dispensers through this event. Cancelling BlockDispenseEvent works fine for droppers, but it still plays the click sound.

I saw prior discussion in th...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

No way to see why an entity has teleported if it isn't a player

Describe the solution you'd like.

Add teleport cause to entityteleportevent, doesn't seem too tricky, as everywhere i've seen that EntityTeleportEvent is called, PlayerTeleportEvent is close by, so the cause is already a local variable we can just pass in.

Describe alternatives you've considered.

N/A

Other

No response

rustic folioBOT
#
[PaperMC/Paper] New branch created: experiment/sectorfile
rustic folioBOT
#

The goal of this PR is to gather some data on the current deficiencies of RegionFile. Currently, the main improvements are:

  1. Header corruption detection + automatic recalculation, as the header is now validated using XXHash64
  2. Data validation using XXHash64
  3. Header recalculation logic for all data types (not just block)
  4. ZSTD support
  5. Reduced sector size, which should reduce overall world size by a factor of ~1.3 up to 1.6

The compression configuration (compression-format)...

rustic folioBOT
#

Is your feature request related to a problem?

I want to send non forced particles to a player, world.spawnparticle has a force param but not the player.spawnparticle method.

Describe the solution you'd like.

overload for force boolean parameter on player.spawnparticle

Describe alternatives you've considered.

currently using NMS to send packet manually with force param false

Other

No response

rustic folioBOT
rustic folioBOT
#

Good news! The first issue has been fixed on Mojang's end (here: https://bugs.mojang.com/browse/MC-251027). This doesn't fix anything on Spigot since they rewrote the whole logic with the DamageModifier but this is not anymore unlikely to happens before the DamageModifier is gone. Thus the parity would be complete for that type of damage.
So i will fix the remaining issue once 1.20.5 is out.

rustic folioBOT
#

Shooting off saves onto a thread pool with > 1 threads is a somewhat dangerous territory where you could potentially end up with two threads trying to write to the whitelist.json file.

The SaveData IO async patch pulled prior created a single one thread large pool for this.
Moving this to a similar setup would be better imo.
Obviously then with proper logic to shutdown said new pool.

rustic folioBOT
#
[PaperMC/Paper] branch deleted: feature/lifecycle-event-system
#

If the goal is to replace the secret setting with a secretFile, then there should be a proper migration/transformation for this and then we remove the secret setting. If the goal is to offer both an in-config secret, and a secret file, I think there should be a setting that sets where the secret is coming from.

Basically a lot of that logic added in postProcess should either be moved to a proper migration, or use a third setting to determine where to read the secret from.

rustic folioBOT
#

Discussing this in voice,
regarding isPickable,

  1. We have no idea what the proper intended contract here is, it just seems to be, mojang had a problem, and shoved in a hack for said problem. There is no strong server sided basis for it, "pickable" is such a tragic name in terms of the server API in terms of what it's trying to represent, isClientTargetable is maybe akin to a better name, but, it's horrible naming all around
  2. This probably belongs in unsafe, as said, there is no stron...
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

This error should probably be handled, currently it isn't and causes a pretty catastrophic error causing no plugins to load at all, the server does not crash however

Observed/Actual behavior

[11:34:48] [ServerMain/ERROR]: [EntrypointUtil] java.nio.file.NoSuchFileException: plugins/TestPlugin-1.0.jar
java.io.UncheckedIOException: java.nio.file.NoSuchFileException: plugins/TestPlugin-1.0.jar
at java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.jav...

#

closes #9942
Adds a RayTraceBuilder which can be constructed using a starting Location, direction and max distance.
I am currently still unsure of how to integrate the raytrace methods on LivingEntity and Block. i am unsure if those need to be integrated at all since calling Entity#rayTraceEntites(distance) seems a lot easier and straight forward then creating a RayTraceBuilder for that simple purpose. I would definitely love to hear some feedback on that.

rustic folioBOT
#

Expected behavior

I expect messages to not be spammed in my console..

Observed/Actual behavior

This is spammed in my console:

[05:00:49 WARN]: [!] The timings profiler has been enabled but has been scheduled for removal from Paper in the future.
We recommend installing the spark profiler as a replacement: https://spark.lucko.me/
For more information please visit: https://github.com/PaperMC/Paper/issues/8948

Steps/models to reproduce

I need to stop the spamming

#...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Normally, the contents of books should not be cut off when switching from 1.20.1 to 1.20.4. I don't know with which version (1.20.2-1.20.4) this happens exactly.

Observed/Actual behavior

During the version change from 1.20.1 to 1.20.4, nbt data (presumably above a certain length) is truncated in books.

I have recreated it in Vanilla and it only happens in paper.
In Vanilla I optimised the worlds in the game and in paper with --forceUpgrade

As a result, I n...

rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: up
#

Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
a6a9d2a4 Remove some old ApiStatus.Experimental annotations be72314c SPIGOT-7300, PR-829: Add new DamageSource API providing enhanced information about entity damage b252cf05 SPIGOT-7576, PR-970: Add methods in MushroomCow to change stew effects b1c689bd PR-902: Add Server#isLoggingIPs to get log-ips configu...

rustic folioBOT
rustic folioBOT
#

Expected behavior

EntityDamageByEntityEvent is fired with the wither skull entity as the damaging entity.

Observed/Actual behavior

EntityDamageByEntityEvent is not fired.

Steps/models to reproduce

  1. Write a test plugin akin to the following: https://gist.github.com/RodneyMKay/7977bc75b792e1937ad8cbb143a86073
  2. Run /summon minecraft:wither_skull ~ ~4 ~ {Motion:[0d,-1d,0d]}
  3. Observe that no log message is printed

Optionally - verify that the behavior is dif...

rustic folioBOT
rustic folioBOT
#

Rather than reverting the patch, perhaps adding a call to super.setVelocity wouldsolve the issue? The problem is that setDeltaMovement is not being called. Fireballs seem to be continuously adjusting their delta movement based on a weird interplay of their power and their 'inertia,' which if I'm mental-mathing right should result in them gradually decelerating. Anyways, right now, both setDirection and setVelocity are only changing the power, and not the delta movement, which means that the n...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

get and set already exist at the bottom of the class, so their naming should be kept and the upstream ones deprecated

Yeah, for the get call I just forgot to remove it. Realized it ans stopped implementing the set call.
Names are kept. Would either migrate the remove calls to using Predicate<SuspiciousEffectEntry> to support only filtering using one or the other. Currently the original PotionEffectType overload filters by PotionEffectType and the SuspicousEffectEntry one by PotionEff...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

When a cactus grows and the new cactus block is next to a solid block, the new cactus block should break (as seen in automatic cactus farms)

Observed/Actual behavior

Sometimes, but not always, the new cactus block doesn't break, and remains next to the solid block.

Steps/models to reproduce

Place a cactus on sand, with a solid block two blocks above and one block to the side of the sand. Wait for the cactus to grow (increase randomTickSpeed gamerule to speed...

rustic folioBOT
#

Seeing similar crashes on Creative server, is it possible this is caused by some kind of crasher?

[03:57:46] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH  - git-Paper-"31699ae" (MC: 1.20.4) ---
[03:57:46] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[03:57:46] [Paper Watchdog Thread/ERROR]: ------------------------------
[03:57:46] [Paper Watchdog Thread/ERROR]: Server thread dump (...
rustic folioBOT
rustic folioBOT
#

Expected behavior

In the entity argument for the method Damageable#damage(double, Entity), per documentation the entity parameter is nullable, I should therefore be able to pass null to that parameter.

Observed/Actual behavior

The methodcall Damageable#damage(double, null) throws a compilation error, as the methods Damageable#damage(double, Entity) and Damageable#damage(double, DamageSource) are ambiguous.

Steps/models to reproduce

N/A // API issue

Plugin and Datapack ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Using Player#setSpectatorTarget to target a player would attach the spectator's camera to the player in the same way that the spectator clicking on the player from their client would.

Observed/Actual behavior

Using Player#setSpectatorTarget to target a player teleports the spectator to the target player's location and then will teleport them again when the target player gets too far away. The spectator player isn't following the target's player camera and isn...

rustic folioBOT
#

I can only reproduce this directly in the PlayerJoinEvent, waiting one tick solves the problem. I suspect this is because the join event is too early and existing players have not been notified of the new player having joined (which happens a bit after the join event, until then it simply does not exist to other players), and it's the server forcing the spectator's position. Waiting one tick you ensure the spectator is told about the entity you want them to spectate and will follow them prope...

rustic folioBOT
rustic folioBOT
#

Expected behavior

Zombie pigmen shouldn't be allowed to spawn in Basalt Deltas

Observed/Actual behavior

Zombie Pigmen spawn in Basalt Deltas

Steps/models to reproduce

Build platform in Basalt Deltas, mine was 20x20 out of nether brick but quite sure it can be built from anything with any size.
Confirm entire platform is within Basalt Delta biome. Zombie Pigmen spawn.

Plugin and Datapack List

MinehutPlugin, TreeCapitator, ViaVersion

Paper version

Paper version git...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Got it.
I was able to fix both by periodically checking if the spectator is both within 3 blocks of and in the same dimension as the target player, but I was never able to get it to work with as short of a delay as 1 tick, so have stuck with 4 on the join event with the occasional need for the check to fix it.

It may not be ping related and instead be something to do with when/how it's being called in the actual plugin, but it's at least working and has a check for when it breaks.

rustic folioBOT
#

Oh thats strange, okay, thank you for letting me know, I'll see if I can
reset the server completely

On Wed, Feb 14, 2024, 14:19 Warrior @.***> wrote:

After setting up a platform in a basalt deltas biome, placing a command
block to kill anything other than players and zombified piglins and setting
the tick rate to 10000, I wasn't able to see any zombified piglins spawning
on the platform. Unless you have other reproduction steps I'll have to
close this as unable to ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Currently, it's impossible to get the information about the server from bootstrap, as Bukkit.getServer() is null.

The goal of this pr is to allow an easy access to information about the server, even from bootstrap.

Here's an example usage:

    @Override
    public void bootstrap(@NotNull BootstrapContext context) {
        Logger log = context.getLogger();
        if (PaperServerInfo.is(1, 20, 4)) {
            log.info("Server is running 1.20.4");
        } else {
   ...
rustic folioBOT
#

Is your feature request related to a problem?

The Adventure Global Translator is an awesome feature and I love how it is automatically integrated and translates messages in various parts of paper (entity names, messages etc.)

However, when you have a custom language plugin one might want to sync the language of all other plugins and the global translator to the custom language you have stored in e.g. your database.

Describe the solution you'd like.

An API like I implemented in ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: upstream/merge
rustic folioBOT
#

Expected behavior

Should fires BlockDamageEvent when we start breaking a block by holding the left button after clicking in the air.

Observed/Actual behavior

Video

Steps/models to reproduce

  1. Listen for BlockDamageEvent
  2. Click in the air and hold the left button
  3. Break some block
  4. Event not fired

Plugin and Datapack List

Server Plugins (7):
Bukkit Plugins: FastAsyncWorldEd...

rustic folioBOT
#

Someone had mentioned that ZSTD dictionaries might help improve the compression ratio and speeds. Thought I'd mention that, maybe it's useful.

I am (probably) that person? Anyways, I got a ratio of ~97% when compared to zlib when using zstd -4 on its own. Then with dictionary compression the ratio drops down to ~89%. It's not a huge gain due to the padding problem, but it helps a bit. To clarify, I did not test compression speed, but as I understand at these low compression levels it sho...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

After some initial discussion, this change is going to be a lot more involved than it at least seems to be rn.

The easiest move here would be to make the yielded ItemStack "immutable" by cloning it in the "getter".

This way, plugins would still need to edit the Item's ItemStack in order to mutate the then used item. Not ideal but I guess doable.
If we want plugins to modify only the taken up item, things become a lot harder as we now have to decide what mutation takes precedent. A ...

rustic folioBOT
#

I believe the concept here is great, I am currently unsure if the impl and api methods are the best tho.

A) int varargs seems weird. This would lock the API to only support major versions, which I am unsure is something we want to commit to.
B) I like implement (tho it should be implements). This seems especially useful for forks as you pointed out, e.g. purpur or folia. Is a single string there enough or should we force some form of namespace? I presume the chances of a second fork n...

#

Alright i am really not sure about this. I feel like the kind of RayTraceBuilder or RayTraceExecutor we had in the beginnning just feels better. Using a configuration where stuff like starting point, distance, direction all need to be adjusted for each use specificly doesn't seem very convenient. I guess in the example of the JoinConfiguration that just works better cause not that many variables need to be adjusted for each use.

#

I think this stuff fits best into the server, because only the server can reliably tell what it implements. The checking for classes (what PaperLib does) might not properly reflect everything depending on what is checked

Well, if PaperLib can test on the basis of given things. Bootstrap context or other things. You don't have to do anything with Reflections if the correct values are given. I see such a version check more as an ultitiy than that it should be part of a server software. But...

rustic folioBOT
#

Given we have 0 idea what the mojang defined concept behind this is, exposing it as API is a meh thing.
The increadibly niche usecase makes it even less compelling.

I can see the reason you want it, but I think this would best live in UnsafeValues.
The concept can change any version, we don't have a clear definition for these values.
Exposing them to non unsafe API without a proper definition is asking for this to break down the line.

Please move this to UnsafeValues and have them ta...

rustic folioBOT
#

I believe the concept here is great, I am currently unsure if the impl and api methods are the best tho.

A) int varargs seems weird. This would lock the API to only support major versions, which I am unsure is something we want to commit to. B) I like implement (tho it should be implements). This seems especially useful for forks as you pointed out, e.g. purpur or folia. Is a single string there enough or should we force some form of namespace? I presume the chances of a second f...

#

But is it worth the maintainability?

You can look at the implementation, it's based on 3 information from the nms

  1. The version. From 1.13, nms has a class named SharedConstants, which always had the version, but they may often change how to get it from that class, if they change it a bit, it won't be hard to find the new method in the SharedConstants to get the version, but it breaks compatibility for the plugins using reflection
  2. The api version. Well, this depends on Vers...
rustic folioBOT
rustic folioBOT
#

I'm pleased to see the discussion taking place here, let me respond to respond points first:

The server name. I don't think someone ever will want to touch this...

But isn't Paper as much Spigot (the server, not the plugin), as it is CraftBukkit?

Sadly, "implements" is a reserved word

The point here is feature-based interaction and enablement. I strongly believe this should be called .supports() or similar. Supports Folia? Yes. Suports X-Y patch from 1 year ago? No. Suppor...

rustic folioBOT
rustic folioBOT
#

Versioning of the Features? If this idea evolves to a feature-support API, at some point it'll be useful and necessary to retrieve a feature's individual version number. The game/server revision could be used for it, but it's more work and less reliable than knowing a certain patches' exact version.

I think this will bring too much trouble to maintain, all changes to features are made to have backwards compatibility, so you may just need to check for the version + fork api presence to s...

rustic folioBOT
#
[PaperMC/Paper] New branch created: fix/profile-copying
rustic folioBOT
#

Is your feature request related to a problem?

I can set has_book to true directly through debugstick, but not through org.bukkit.block.data.type.Lectern. Obviously I need a method to set this value directly.

Describe the solution you'd like.

Add a setHasBook(boolean)

Describe alternatives you've considered.

Use Server.createBlockData(java.lang.String) to create a Lantern with a specific has_book value

Other

No response

#

Is your feature request related to a problem?

I can set has_record to true directly through debugstick, but not through org.bukkit.block.data.type.Jukebox
. Obviously I need a method to set this value directly.

Describe the solution you'd like.

Add setHasRecord(boolean)

Describe alternatives you've considered.

Use Server.createBlockData(java.lang.String) to create a Jukebox with a specific has_record value

Other

No response

rustic folioBOT
rustic folioBOT
#

Hello,

I would like to propose the addition of a new event to Paper that would be called before a player's teleportation attempt.

In my current scenario, I have a cosmetic plugin that adds a passenger to the player (a TextDisplay), and all teleportations are blocked because the player has at least one passenger, with no event being called to remove it. This forces the use of NMS (which is discouraged today).

The PlayerPreTeleportEvent event would be invoked before all checks and woul...

#

Hello,

I would like to propose the addition of a new event to Paper that would be called before a player's teleportation attempt.

In my current scenario, I have a cosmetic plugin that adds a passenger to the player (a TextDisplay), and all teleportations are blocked because the player has at least one passenger, with no event being called to remove it. This forces the use of NMS (which is discouraged today).

The PlayerPreTeleportEvent event would be invoked before all checks and woul...

rustic folioBOT
rustic folioBOT
#

In my current scenario, I have a cosmetic plugin that adds a passenger to the player (a TextDisplay), and all teleportations are blocked because the player has at least one passenger, with no event being called to remove it. This forces the use of NMS (which is discouraged today). This event would allow plugin developers the opportunity to ensure compliance with checks before teleportation occurs.

rustic folioBOT
#

Stack trace

Feb 19 13:04:27 raspberrypi java[4910]: 2024-02-19 13:04:27,888 ServerMain WARN Advanced terminal features are not available in this environment
Feb 19 13:04:31 raspberrypi java[4910]: [13:04:29 WARN]: Failed to get system info for Microarchitecture
Feb 19 13:04:31 raspberrypi java[4910]: java.lang.NullPointerException: Cannot invoke "String.toUpperCase()" because "this.cpuVendor" is null
Feb 19 13:04:31 raspberrypi java[4910]:         at oshi.hardware.CentralProcesso...
rustic folioBOT
#

Expected behavior

Mobs should spawn if light level is below or equals to configured light level.

Observed/Actual behavior

Entities only spawn at night with a vanilla (0) light level

Steps/models to reproduce

Time set day
Set server max-light setting to 15 or greater

Plugin and Datapack List

No plugin

Paper version

Latest

Other

Here was the pull request that created that feature.
Regarding our recent discord discussion, it's appear to be bugged?

https:/...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Made a few changes which we discussed here, like using a key to check for implemented api and support for non-release versions.

The support for snapshots/pre-releases could be made better but I don't think that it's an environment for which we may want to spend too much effort to give the best support possible. But at least this pr already defines a possible future behaviour that developers may expect, and which can be further discussed here.

rustic folioBOT
#

Fix corrupted plugin.yml file in one plugin (or more) not loading any plugins by the server.

The bug puts the server in a dangerous state where vanilla worlds (overworld, nether and the end) are loaded, server is accessible to players, but no plugins are loaded and enabled. To reproduce the bug 1) create update directory inside plugins, 2) put a valid and a corrupted plugin JAR in plugins. By "corrupted" I mean plugin that is eg. missing the plugin.yml file, or the file has the wro...

rustic folioBOT
rustic folioBOT
#

This seems like a work as intended.
You are still breaking the same block. This is a quirk in the client, but it simply does not send the start destroy block player action packet.

There is little to none we can effectively do here.
The server does not know you are trying to break that block, at least not in the relevant packet.
The block is broken because the client sends the STOP_DESTROY_BLOCK action at the end and enough time has passed since its initial START_DESTROY_BLOCK action.

...

rustic folioBOT
#

Expected behavior

Minecarts should stay on the track, or it should be handled like vanilla does, to keep it consistent:

https://github.com/PaperMC/Paper/assets/43300571/628f2e33-449b-413a-bc33-f484c0804fa2

This is a Singleplayer world

Observed/Actual behavior

Whenever minecarts have an additional block under their normal track, they visually teleport to that track instead of staying at the intended one. The entity is still there, just invisible until you update the rail blo...

rustic folioBOT
#

Is your feature request related to a problem?

Currently it is not possible to use easyPlace tweak from Litematica fully on a paper server. The easyPlace tweak currently only allows placement of blocks that do not have a rotation i.e. cobblestone. Blocks that can be placed in multiple orientations e.g. fences/stairs/logs will not place correctly/at all.

Describe the solution you'd like.

On my previous SMP, the below plugin was developed inhouse for 1.19.x which completely fixed the ...

rustic folioBOT
#

Expected behavior

I'm creating my own Minecraft server. Everything was fine, there were no lags, etc. But my friend (helps me create a server) started having problems. If he puts anything into his inventory from a creative, he gets kicked with the error "packet processing error". (We have the same groups, we both have an op)

Observed/Actual behavior

I'm creating my own Minecraft server. Everything was fine, there were no lags, etc. But my friend (helps me create a server) started h...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

wither-spawn-sound-radius: 256
Only players within 256 blocks can hear the sound

Observed/Actual behavior

wither-spawn-sound-radius: 256
I was 300 blocks away, but I still heard a voice

Steps/models to reproduce

spigot.yml-wither-spawn-sound-radius: 256
Then test it

Plugin and Datapack List

null

Paper version

This server is running Paper version git-Paper-430 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: 4939f87)
You are ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

The EntityDamageByEntityEvent called for when a firework explodes and deals damage should return the firework for #getDamager.

Observed/Actual behavior

The owner of the exploding firework is used for #getDamager if it exists, and a EntityDamageEvent is fired instead of there is no owner.

Steps/models to reproduce

Fire a firework rocket, record the damager. Tested using this listener:

import org.bukkit.Bukkit;
import org.bukkit.event.List...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

Hoppers have an nbt tag TransferCooldown which is the amount of ticks left between item transfers.
There's a spigot config setting to change the default behavior but no provided method to change it within the bukkit api.

Describe the solution you'd like.

Expand the existing Hopper blockstate class to include a Hopper#setTransferCooldown(int) and Hopper#getTransferCooldown()

Describe alternatives you've considered.

I've only b...

rustic folioBOT
#

The customCausingEntity is used in a priority check for try to get damager (if not use the vanilla damager) this was for avoid unexpected behaviours (like mention MM in the Upstream PR)

i still dont check the code but maybe the issue is more the CraftEventFactory where is is set the damager in the event... if you check the DamageSource in the event in teory the entities are correct.

rustic folioBOT
#

Damage types with the is_explosion tag are handled separately in CraftEventFactory, where the code only uses the causing entity. The rest of the code uses the direct entity if one exists. So, I guess a proper fix would actaully be to use the direct entity for explosions as well. That still leaves explosions overriding an already existing causing entity, though. You can see that if you ignite a piece of TNT and check DamageSource#getCausingEntity, which should return the igniter, but retur...

rustic folioBOT
rustic folioBOT
#

the direct entity is used in projectile and that was the behaviour previous the DamageSource PR

Not exactly sure what you mean by that? Damage from firework rockets trigger this part of CraftEventFactory:
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java#941-948
Which doesn't check the direct entity. It reaches here and not the later projectile stuff because the firework damage type has the `is_ex...

rustic folioBOT
#

okay i think now understand what happen...
For my side i need test another danages for make sure a few behaviours but looks need replicate the same logic than projectile for check if is indirect for use the direct entity and not the causing in that case... Buy wanna test another damage for remenber why in first place i apply the is indirect logic only in projectile and not in all cases.

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

This does indeed fix the problem with fireworks.

The issue with the causing entity for some other explosions (i.e. TNT) being wrong is still a thing, though. As far as I can tell, the usage of DamageSource#customCausingEntity here:
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/net/minecraft/world/level/Explosion.patch#42-43
Is unnecessary as a result of this patch, as the direct entity and the set custom causing entity here are always the same, aft...

rustic folioBOT
rustic folioBOT
#

This does indeed fix the problem with fireworks.

The issue with the causing entity for some other explosions (i.e. TNT) being wrong is still a thing, though. As far as I can tell, the usage of DamageSource#customCausingEntity here: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/net/minecraft/world/level/Explosion.patch#42-43 Is unnecessary as a result of this patch, as the direct entity and the set custom causing entity here are always the same,...

rustic folioBOT
rustic folioBOT
#

That would fix the issue with TNT, but still, the call to customCausingEntity isn't needed in Explosion? That's the only area that that method causes this specific issue.

And the behavior of customCausingEntity is still quite suspect. Take evoker fangs, it makes the causing entity the fangs, but the actual causing entity should be the owner of the evoker fangs, and the direct entity should be the fangs. Same with its usage with ender pearls and lightning - they each have their own ow...

#

That would fix the issue with TNT, but still, the call to customCausingEntity isn't needed in Explosion? That's the only area that that method causes this specific issue.

And the behavior of customCausingEntity is still quite suspect. Take evoker fangs, if it has an owner, the direct entity is the fangs and the owner is the causing entity. But without an owner, customCausingEntity makes the fangs the causing entity and doesn't set a direct entity. Similar issue with its usage...

rustic folioBOT
#

Just to note, I don't have an account to view the upstream comments you're referring to.

oh...

  • The customCausingEntity was make for allow the old static damager set using a static field in CB then need handle that in all places where was placed.. in the case of explosions in the constructor or in another case pass a custom damagesource for that, for this i rewrite a little the method where set the custom causing entity for avoid mistakes
  • This customCausingEntity is taken over the...
rustic folioBOT
#

Expected behavior

A datapack predicate that runs a location check looking for a particular dimension should return the same result as an execute if dimension check for that same dimension.

Observed/Actual behavior

In a server running Multiverse with no other plugins 1.20.4 Build 430, and a dimension named "custom_test", a player in "custom_test" that runs the command execute if dimension minecraft:custom_test will see it succeed, and the command 'execute if dimension minecraf...

rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: up
#

Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
9a80d38c SPIGOT-336, SPIGOT-3366, SPIGOT-5768, SPIGOT-6409, SPIGOT-6861, PR-722: Add EntityRemoveEvent 258086d9 SPIGOT-7417, PR-967: Add Sign#getTargetSide and Sign#getAllowedEditor ffaba051 SPIGOT-7584: Add missing Tag.ITEMS_NON_FLAMMABLE_WOOD

CraftBukkit Changes:
98b6c1ac7 SPIGOT-7589 Fix NullPointerEx...

#
[PaperMC/Paper] New branch created: EBOY-MR-132/head
rustic folioBOT
#
[PaperMC/Paper] branch deleted: up
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: weeee
#
[PaperMC/Paper] New branch created: EBOY-MR-133/head
rustic folioBOT
#
[PaperMC/Paper] New branch created: fix-corrupted-plugin-yml-files
#
[PaperMC/Paper] branch deleted: fix-corrupted-plugin-yml-files
#
[PaperMC/Paper] New branch created: bugfix/respect-error-in-plugin-updating
#
[PaperMC/Paper] New branch created: EBOY-MR-134/head
#
[PaperMC/Paper] branch deleted: bugfix/respect-error-in-plugin-updating
rustic folioBOT
rustic folioBOT
#

I agree with DerEchtePilz on this one. PaperServerInfo seems more like a implementation name than an API name. The whole bukkit API is meant to be generic so I would not stop here and start naming things after Paper. Though maybe a different name then ServerInfo can be found. IMO it doesn't really fit. Since it mostly is about the version maybe call it VersionInfo or generally just Version.

rustic folioBOT
#
[PaperMC/Paper] branch deleted: weeee
rustic folioBOT
rustic folioBOT
#

I agree with DerEchtePilz on this one. PaperServerInfo seems more like a implementation name than an API name. The whole bukkit API is meant to be generic so I would not stop here and start naming things after Paper. Though maybe a different name then ServerInfo can be found. IMO it doesn't really fit. Since it mostly is about the version maybe call it VersionInfo or generally just Version.

"VersionInfo" or "Version" already does not go well with isImlementing, also limits future...

rustic folioBOT
#
[PaperMC/Paper] New branch created: weeee
#
[PaperMC/Paper] branch deleted: weeee
rustic folioBOT
#

Expected behavior

GlobalTranslator should translate TranslatableComponent of join & quit messages when they are printed to the server log

Observed/Actual behavior

GlobalTranslator does not translate TranslatableComponent of join & quit messages when they are printed to the server log

Steps/models to reproduce

  1. On PlayerJoinEvent or PlayerQuitEvent, set the join or quit message to a TranslatableComponent of a specific key
  2. Add a custom translator that translates the given...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Previously paper disabled the abilities for entities to teleport via end gateways if they were being used as a vehicle.

While the behaviour generally worked fine for entities riding other entities, players would quickly end up in an invalid state, not seeing their passenger anymore.

This commit removes the paper introduced limitation by now properly updating the passengers location of a player when they are teleporting through an end gateway.

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

I've completed several tests on a fresh new server world running git-Paper-435 (MC:1.20.4). NO PLUGINS used.
I'm unable to reproduce the issue. I used the same setup as per my previous screenshots with the wither centered below the exit end portal, but no iron golems since they would not attack the wither. I've tried swords with and without Knockback II enchantment as well. No projectiles came through to spawn.

Perhaps if server lag was introduced it could cause what @squeeglii found?

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

In 1.20.4/5 Mojang have the 1.21 experimental features under a toggle, and if we enable that toggle, afaik plugins wonโ€™t really be able to work with them since theyโ€™re not in the code.

Describe the solution you'd like.

Adding the new blocks and items to their respective classes

Describe alternatives you've considered.

Idk if there is any alternatives

Other

No response

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

 [Server thread/ERROR]: Failed to handle packet ServerboundResourcePackPacket[id=dd25ca51-a842-39b9-a470-e9fec7e601d3, action=DECLINED], suppressing error
java.lang.IllegalStateException: Unexpected request for task finish, current task: join_world, requested: server_resource_pack
    at net.minecraft.server.network.ServerConfigurationPacketListenerImpl.finishCurrentTask(ServerConfigurationPacketListenerImpl.java:168) ~[paper-1.20.4.jar:git-Paper-409]
    at net.m...
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

After opening the server, if a user enters, a bug will cause the server to shut down, resulting in the following error message:

[19:16:14 ERROR]: Encountered an unexpected exception
java.lang.StackOverflowError: null
ย  ย  ย  ย  at java.lang.String.charAt(String.java:1515) ~[?:?]
ย  ย  ย  ย  at com.mojang.brigadier.StringReader.peek(StringReader.java:76) ~[brigadier-1.0.18.jar:?]
ย  ย  ย  ย  at net.minecraft.nbt.TagParser.readList(TagParser.java:144) ~[?:?]
ย  ย  ย  ย  at net.minecra...

#

ไผ—ๆ‰€ๅ‘จ็Ÿฅ็š„ๆผๆดž๏ผŒไธๅ—ๆ”ฏๆŒ็š„็‰ˆๆœฌใ€‚ๆ›ดๆ–ฐ๏ผŒๆˆ–่€…ๆ‰พๅˆฐไธ€ไธชๆ’ไปถๆฅ็ผ“่งฃๅฎƒใ€‚

The latest version of 1.20.4 is useless, and I can't find the plugin either

rustic folioBOT
rustic folioBOT
#

This leads to discussion in regards to ItemStack#setType, which currently is not supported by vanilla, but is reintroduced by spigot.

This method possibly allows for unsafe behavior, as illegal item types can be passed in places that may occur after item validation.

This is most evident in event calls, where it is possible to induce server crashes in some cases due to developers putting illegal item types in ItemStacks in the wrong places.

rustic folioBOT
#

Expected behavior

To kick the player on join without errors.

Observed/Actual behavior

I saw this error:
[01:58:47 ERROR]: Couldn't place player in world
java.lang.IllegalArgumentException: arraySize cannot be negative but was: -1
at com.google.common.collect.CollectPreconditions.checkNonnegative(CollectPreconditions.java:40) ~[guava-32.1.2-jre.jar:?]
at com.google.common.collect.Lists.computeArrayListCapacity(Lists.java:152) ~[guava-32.1.2-jre.jar:?]
at...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

When placing REDSTONE next to a SHORT_GRASS (or any other flower) that is above a block that is not GRASS_BLOCK (such as DIAMOND_BLOCK) in a region, in which you do not have the permission to place blocks, you would expect the SHORT_GRASS to not be broken, as the plugin is cancelling the place event.

Observed/Actual behavior

The SHORT_GRASS is broken even when the event has been cancelled by the plugin.

Steps/models to reproduce

  1. Download World...
rustic folioBOT
#

ๆœ€ๆ–ฐ็‰ˆๆœฌ็š„ 1.20.4 ็ปๅฏนไธๆ˜ฏโ€œๆ— ็”จโ€๏ผŒๅ› ไธบๅฎƒไฟฎๅคไบ†่ฟ™ไธชๆผๆดžใ€‚

The users "Lele_awa" told me that there is no fix, theoretically it can be used from 1.13.2 to 1.20.4

rustic folioBOT
#

Expected behavior

As of version 1.20.4, plugins that contain non-latin characters in their versioning are not getting loaded by the server.
They however, work on SpigotMC with no issues.

Observed/Actual behavior

When starting my software, (only on Paper) this crash log is sent in console, with the plugin not enabling:
`3.03 01:16:08 [Server] [ERROR] [DirectoryProviderSource] Error preparing plugin context: Directory 'plugins/ServerListStalkProtect-1.0.0-๏ฟฝ๏ฟฝ.jar' failed to update!
...

#

I am unable to reproduce this issue, both on Windows and Ubuntu 22.04. The server starts up fine with a plugin that includes the ฮฑ symbol in its version and filename. Using the update folder also works as expected.

This is likely a file encoding issue, ensure everything in your setup is using UTF-8 correctly. You can also try adding -Dfile.encoding=UTF-8 to your startup arguments.

rustic folioBOT
rustic folioBOT
#

Http requests should not be done in a ctor as it is a relativly heavy operation. It should be extracted into a factory method or better generated during build time as the currently running unstable version can only support version < current unstable version that has been built.

So a check of isAtleast("1.20.4") against 24w09a would succeed cause 1.20.4 is in the json array.
isAtLeast("1.20.5") doesn't succeed against 24w09a as the value is not contained in the built json array.
It basi...

rustic folioBOT
#

As I said before, it's mostly to give idea how it will work on snapshots, i don't want to go deeper and change the build script of the server to work with this, and don't think that paper supporting snapshots will come soon either

And even if it does, snapshot version will most probably be unstable anyways, and mostly for devs to start updating their plugins, a snapshot paper shouldn't ever be on production, so this code won't be on a production server

Also the idea of downloading the f...

rustic folioBOT
#

Expected behavior

The PlayerTeleportEvent should be fired if you enter an end portal as you get teleported

Observed/Actual behavior

No event is getting fired

Steps/models to reproduce

  1. Make a plugin listening to the PlayerTeleportEvent
  2. Kill the Enderdragon
  3. Go to the portal
  4. Notice that event isn't getting fired

Plugin and Datapack List

LuckPerms, Multiverse-Core, ProtocolLib, Vault, ViaBackwards, ViaVersion

Paper version

git-Paper-436 (MC: 1.20.4) (I...

rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: test/empty-world-tick
rustic folioBOT
#

Is your feature request related to a problem?

I needed to make a skeleton stretch its bow before invoking ProjectileSource#launchProjectile(). I analyzed the Bukkit API, but there doesn't seem to be a method for this purpose (or am I mistaken?). In NMS (Mojang Mappings), there's the LivingEntity#startUsingItem(InteractionHand) method - that's the solution.

Describe the solution you'd like.

Implement these methods to the Bukkit LivingEntity class:

public void startUsingItem(Equip...

rustic folioBOT
#

Confirmed. Currently, the custom flattener that is used to flatten translatable components into strings (for the ansi, plain text, and legacy serializers) only uses instances of Translator that are TranslationRegistry because adventure doesn't have a way to know if a specific Translator will handle a specific key.

I'm not in a huge rush to change this. If you could just use a TranslationRegistry... it would not happen.

rustic folioBOT
#

You can fix this issue by toggling the global config setting for strict advancement dimension checks. At some point, we probably will flip the default value for this setting to match vanilla behavior, but upstream at some point in time, decided that any world using the "overworld"-like chunk generation should be treated as minecraft:overworld for the purposes of predicate checks like this. So we added a setting to toggle that behavior.

rustic folioBOT
rustic folioBOT
#

Maybe I am just misunderstanding something but I don't really know why there is a PlayerPreTeleportEvent added.
I have a plugin which makes use of the PlayerTeleportEvent and in order to make my logic work correctly I experimented a bit with that event and found out that Player#getWorld() returns the same world as PlayerTeleportEvent#getFrom() which means that the PlayerTeleportEvent is actually called before teleporting now.
Again, I might just be misunderstanding something here,...

#

Maybe I am just misunderstanding something but I don't really know why there is a PlayerPreTeleportEvent added. I have a plugin which makes use of the PlayerTeleportEvent and in order to make my logic work correctly I experimented a bit with that event and found out that Player#getWorld() returns the same world as PlayerTeleportEvent#getFrom() which means that the PlayerTeleportEvent is actually called before teleporting now. Again, I might just be misunderstanding something here,...

#

The issue that this resolves is mentioned at the top of this PR: #10168

I mean, nevertheless, the name PlayerPreTeleportEvent is misleading then since the current PlayerTeleportEvent is called before teleporting.

I think it's perfectly fine personally, PreTeleportEvent implies that is is called before the teleport event.
It's not my PR but if you don't like the name then maybe give alternative suggestions?

#

I think it's perfectly fine personally, PreTeleportEvent implies that is is called before the teleport event.
It's not my PR but if you don't like the name then maybe give alternative suggestions?

Yeah, it does. Still, the existing PlayerTeleportEvent is also called before actually teleporting.
Alternative names? Sure, something like PlayerTeleportPrepareEvent, could also switch that up to PlayerPrepareTeleportEvent.
The name PlayerPreTeleportEvent, again, just doesn't fit bec...

#

The issue that this resolves is mentioned at the top of this PR: https://github.com/PaperMC/Paper/issues/10168

I mean, nevertheless, the name PlayerPreTeleportEvent is misleading then since the current PlayerTeleportEvent is called before teleporting.
Do you have a better suggestion how to name the events? PrepareTeleportEvent, but that would cause people to come in the discord and ask if a PreTeleportEvent exists since they cannot find any. I know that the name is techni...

rustic folioBOT
#

I am literally fine with any name. If it ends up being named like it currently is - so be it.
I thought about the names I suggested the minute I wrote that comment. Although, I still feel like there should be another name for the proposed event.

but you always have to think about the users and make everything as much userfriendly as possible

That's a good point, however I don't see how the name PrepareTeleportEvent could be misleading? I think it's accurate. It's called to prepare ...

#

That's a good point, however I don't see how the name PrepareTeleportEvent could be misleading

Didn't say it will be misleading. I'm saying that the first name that comes into my mind if I want to search an event that happens before the teleport event I would search for a PreTeleportEvent. But honestly I am fine with PrepareTeleportEvent too. I'd just wait for maintainers to give input on this.

rustic folioBOT
#

It seems like both are used in Paper, as the purpose of the event is to prepare I agree that PrepareTeleportEvent sounds nicer but they both make sense to me.

Examples of current events:

  • PreLookupProfileEvent
  • PreFillProfileEvent
  • PreCreatureSpawnEvent
  • PreSpawnerSpawnEvent
  • PrePlayerAttackEntityEven
  • PrepareGrindstoneEvent
rustic folioBOT
#

Expected behavior

EntityKnockbackByEntityEvent should contain a knock back cause just like what is it be like in Spigot.
Be like:
@ApiStatus.Internal public EntityKnockbackByEntityEvent(@NotNull LivingEntity entity, @NotNull Entity hitBy, float knockbackStrength, @NotNull Vector acceleration, KnockbackCause knockbackCause) { super(entity, hitBy, acceleration); this.knockbackStrength = knockbackStrength; this.knockbackCause = knockbackCause; }

###...

rustic folioBOT
#

Do I need to remove the previous "cause"?
Like the method:
public void knockback(double d0, double d1, double d2, @Nullable Entity attacker, EntityKnockbackEvent.KnockbackCause cause)

Also I m not sure which way is the best:

  1. Add a convert method to convert the Bukkit causes to the Paper causes
  2. Add both causes to all methods that contain the cause parameter
  3. Change Bukkit cause paramter to Paper one to all methods that contain the cause parameter
    (2 and 3 do break the nms user...
rustic folioBOT
rustic folioBOT
#

Expected behavior

Entity#isTicking should return whether or not an Entity is ticking

Observed/Actual behavior

It appears to return whether or not the chunk the entity is in is ticking.

Steps/models to reproduce

I don't have proper steps to show this, because I've been testing via Skript and an addon for Skript I have created (written in Java using this API)

I want to show some visuals:
Ok, in this one the villager is standing in the Yellow Chunk.
Green = Chunk.LoadLevel#...

rustic folioBOT
rustic folioBOT
#

Then at least move the data fetching into a static factory method, instantiate the unstable versioninfo using the fetched data and return that.

Could you show a pseudo code of what you mean? I just don't understand the difference from what it's now, as we still will need to block the object initialization to get the version data. But I highly suspect that I just don't think correctly of what you mean with that change.

rustic folioBOT
#
diff --git a/src/main/java/io/papermc/paper/util/misc/ServerInfoProviderImpl.java b/src/main/java/io/papermc/paper/util/misc/ServerInfoProviderImpl.java
index 1364afc507..bacc415fbe 100644
--- a/src/main/java/io/papermc/paper/util/misc/ServerInfoProviderImpl.java
+++ b/src/main/java/io/papermc/paper/util/misc/ServerInfoProviderImpl.java
@@ -43,7 +43,7 @@ public class ServerInfoProviderImpl implements ServerInfoProvider {
         } else {
             // Snapshot, pre-rel...
rustic folioBOT
#

Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
7ca2b46c SPIGOT-7594: Fix typo and include missing MinecraftExperimental annotation in Loot Table enum

CraftBukkit Changes:
176c0ad39 Fix copying BlockStates with fields (eg, Banner)
ee685bd2a Fix Camel not standing up when hurt
619936d4b Increase outdated build delay

#

This is directly configurable with datapacks, just by setting monster_spawn_light_level in the overworld dimension type. Unsure if we want to add a setting to address this.

Either way, I do not think the existing setting should be changed, its initial behavior seems correct, only controlling the block light level, not the ambient light level from the sky.

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

resolves #10295
i wasn't able to prevent the player from trying to stop using the item so i just added a little warning to the startUsingItem method.
(Also there is a "Add LivingEntity#clearActiveItem" patch which could be merged into this patch. But because i am not a lunatic and i don't find fun in spending my day rebasing 500 renamed files, i will leave that to a paper dev if anyone wants to merge them)

rustic folioBOT
rustic folioBOT
#

I had a 40k display entities in the world and tps drops to 10 just because they exist. Disabling ticking is most needed feature

Don't forget that entities have other lags than just ticking, for example they need always to calculate who can see them, and if they need to update their data to players

Even if paper fully disables display entities ticking, 40k will still have a big impact on the server

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Bell#isShaking() should return true when the bell is shaking
Bell#getShakingTicks() should return an integer bigger than 0 right after a bell is rung

Observed/Actual behavior

Bell#isShaking() always returns false
Bell#getShakingTicks() always returns 0

Steps/models to reproduce

I don't have proper steps to show this, because I've been testing via Skript and an addon for Skript I have created (written in Java using this API) and additionally with Skript-ref...

rustic folioBOT
#

Cannot replicate, shaking and shaking ticks work fine.

We will need replication steps in java for this from you, otherwise I'll close this.

Be aware, that getBlockState() creates a snapshot unless you pass false.
If you take said snapshot at a point where it is not shaking but then you query the shaking boolean while it is shaking, it will return the old value at the point of snapshotting.

rustic folioBOT
#

Adds cancellable BeehiveNectarDepositEvent. The event is fired after a Bee is released from a Beehive, when bee deposits nectar to the beehive.

Can be used to e.g.:

  • change amount of deposited nectar, modify final hive's honey level after deposition (deposited nectar amount is normally 1 or 2, we can set the value to e.g. 5)
  • use in various mechanisms
  • just cancel deposit of nectar to the hive
rustic folioBOT
#

Cannot replicate, shaking and shaking ticks work fine.

We will need replication steps in java for this from you, otherwise I'll close this.

Be aware, that getBlockState() creates a snapshot unless you pass false. If you take said snapshot at a point where it is not shaking but then you query the shaking boolean while it is shaking, it will return the old value at the point of snapshotting.

I apologize for opening this issue, I had no idea about the snapshot feature, after...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Generally, this entire event is not needed.
EntityChangeBlockEvent already exposes
a) the changing block in its old state and hence a way to get the old honey level
b) the block data of the block after the change, which can be used to get and set the new honey level
c) point B also allows to compute the deposited nectar
d) the bee is available as the entity of the entity change block event.

The API addition here is hence not really needed and we can instead just call EntityChange...

rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

Recently, more and more people have become aware of server scanning and using it to find servers. As a result, it has become shockingly easy to find server that are open and ripe for griefing. One of the easiest ways to prevent this is by enabling a whitelist. For a lot of new server owners, a whitelist only really comes to light after they have already been griefed. I feel that if the whitelist was enabled by default and maybe even a warning...

rustic folioBOT
#

I think this kind of request should go to Mojang directly, rather than PaperMC.

Mojang's decision is setting white-list(enable whitelist) and enforce-whitelist(kick players not on whitelist) to false. I don't think PaperMC should interfere with it.

If Paper enforces whitelist by default, that said 'new server owners' won't be able to figure out how to allow people to get in their server.

If a server is griefed, server owner is also responsible for the incident. Server owner mus...

rustic folioBOT
#

I want to close this feature request as not planned, however I'll leave this open for other people to chime in on.

The whitelist is obviously a powerful tool to protect servers from griefing (given that the server runs in a proper online-mode setup). Port scanning isn't complex to implement.
Switching the default here however feels rather painful for a couple of reasons (some already listed above).

  1. A whitelist enabled by default makes sense for one user group of paper, small server ...
#

Is your feature request related to a problem?

Yes.

I want to change name of these senders to something that regular players cannot have (that doesn't match the regular expression [a-zA-Z0-9_.]{2,16} AKA valid player name).

Thus, in the case of public chat notifications about [remote] administration actions, and if a player "Rcon" or "CONSOLE" is connected to the server, it will be easy to understand who exactly performed some action (player CONSOLE or real console with name chang...

rustic folioBOT
rustic folioBOT
#

I'm inclined to agree with lynx, changing this stuff so far down the line would impede many automated setups, and so rolling out something like this would be a pretty big change for many servers in terms of how they operate, that it would need a hefty lead in time to accommodate in order to make sure that we don't break peoples setups.

A best practices document page would allow us to inform people of this sort of stuff in a wider sense of the issue here, it's not our role as an organisatio...

rustic folioBOT
#

Stack trace

[22:03:12] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - git-Paper-550 (MC: 1.19.4) ---
[22:03:12] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[22:03:12] [Paper Watchdog Thread/ERROR]: ------------------------------
[22:03:12] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[22:03:12] [Paper Watchdog Thread/ERROR]: H...

rustic folioBOT
#

I'm fairly sure I found the issue to this, although I'm not 100% certain as of now. The plugin "Lootin" seems to be causing this, at least on my end and it seems to be the common factor wherever I see this issue pop up. The dev of the plugin is investigating this currently. This crash/bug will keep happening in worlds that were generated with the plugin present, even after removal since it happens at generation, at least from what I can tell.

The only way to narrow it down for me w...

#

So I started testing

I changed Paper-server code of BeehiveBlockEntity as follows:

// Paper start - Fire EntityChangeBlockEvent in more places
BlockState newBlockState = iblockdata.setValue(BeehiveBlock.HONEY_LEVEL, i + j);

if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entitybee, blockposition, newBlockState)) {
    world.setBlockAndUpdate(blockposition, newBlockState);
}
// Paper end - Fire EntityChangeBlockEvent in more places

and mo...

#

I'm unsure if this issue will remain open, because it seems to be caused by a third party. Might be a paper bug, or an issue with their implementation. Regardless, it would be nice to get a little guidance in order to reset all ancient cities, or just corrupted ones if possible, specially since it seems this affected a rather large amount of people. Thank you in advance to anyone experienced enough who can provide a little insight on how to do it, and thanks everyone so far who actually found...

#

I'm fairly sure I found the issue to this, although I'm not 100% certain as of now. The plugin "Lootin" seems to be causing this, at least on my end and it seems to be the common factor wherever I see this issue pop up. The dev of the plugin is investigating this currently. This crash/bug will keep happening in worlds that were generated with the plugin present, even after removal since it happens at generation, at least from what I can tell.
The only way to narrow it down for me...

rustic folioBOT
rustic folioBOT
#

This is a PR as a response to #10309.

What i have done here is by no means final and just an attempt to find a way to check if it is the "initial" start of a server.
I decided to go for the server.properties file because this is the first file that came to my mind that you wouldnt really delete.

Basically, I am checking if the file exists and set a boolean if it doens't. After the server has been started, I check that boolean and print a message if it's the initial start.

Obviou...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

The docs state that Chunk.getBlock(int x, int y, int z) requires a specific range of values for the inputs. For the Y coordinate, this is (world minHeight (inclusive) - world maxHeight (exclusive)).

Expected valid input should be from -64 (inclusive) to 320 (exclusive)

Observed/Actual behavior

Calling Chunk.getBlock(int x, int y, int z) on a y value from -64 to -1 throws an IllegalArgumentException that 'y' is out of range. The error indicates "expected (0-256)...

rustic folioBOT
#

Lootin developer posted an other version on their Discord here : #912527364884422686 message It is supposed to fix the issue, we are going to try and report here

This is not a fix afaik, we've used it to narrow down the issue further. It's missing the structure generate listener and that's the part that seems to be causing issues.

https://github.com/sachingorkar102/Lootin-plugin/blob/main/src/main/java/com/github/sachin/lootin...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

There is currently no way of knowing if a plugin is being run on a different version than before. Plugins create various configs and other files that may be version dependant and each plugin has to somehow track the version of these files within again another file or a "DO NOT TOUCH THIS" config field. This is not a problem perse but i think it could be improved

Describe the solution you'd like.

Either a different lifecycle hook, like `...

rustic folioBOT
#

This imho makes no sense, and most issues relating to this are already long solved using 3rd party tools which don't require you to reinvent the wheel, or are generally simple "does this file exist" type checks.

detecting if you're a fresh install is generally flawed, but moreso generally done for a "do I need to run the logic to create X" sort of deal, which is generally better handled with tooling already designed for handling migration/generation of stuff, configurate, flyway, etc.

I...

rustic folioBOT
#

As I said in the post itself I know that there are different ways to solve updating plugin files.
Still, I think it would improve the workflow and I don't see why "You can find other third party solutions" is an argument against providing information to the plugin that it should have anyways.
I rather feel like it's a little step towards standardization in plugin development.

#

I don't see how it improves the workflow in any form or meaningful manner, you still need to validate the data versions before you can do any transformations, and you don't know if a server owner has deleted the folder for your plugin or not and now you need to recreate your on-disk data, etc. I do not see how this would improve anything, relying purely on a version string would also generally be a massive flaw in terms of how this would be handled, see, many plugins which have dev builds in ...

rustic folioBOT
#

Okay lets say you have a sqlite file that had been created with v1 of your plugin. You modified your plugin code and need to readjust the schemas in your sqlite file for v2. With the suggested interface I would run a set of statements on my database. But therefore I have to figure out if the existing file is of the old or new format. I could check the schemas or maybe have put a key value of the plugin version in the file or I have to create an aditional file, which all would be an extra step...

rustic folioBOT
#
  1. a string would not accurately convey whether a jar has changed or not; We would need to resort to hashing the plugin jar to determine if it has changed or not, rather than a plugin just checking its schema version, which means now that a single plugin doing a trivial set of queries to get what migrations have been applied, or the schema version, we now have to hash every single jar file to determine if it is still the same jar file as before, thus meaning that we're now introducing a chunk...
#

Stack trace

root@111150899~# java -version

openjdk version "1.8.0_312"

OpenJDK Runtime Environment (Temurin)(build 1.8.0_312-b07)

OpenJDK 64-Bit Server VM (Temurin)(build 25.312-b07, mixed mode)

root@111150899~# java -Xms128M -Xmx1536M -Dfml.queryResult=confirm -Dlog4j2.formatMsgNoLookups=true -Dterminal.jline=false -Dterminal.ansi=true -DIReallyKnowWhatIAmDoingISwear=true -Djdk.module.illegalAccess=deny -Duser.timezone=Europe/Moscow -jar -XX:+UseNUMA -XX:G1ReservePercent=10 ...

rustic folioBOT
#
[PaperMC/Paper] branch deleted: feature/SignSendEvent
rustic folioBOT
#

I'm not 100% sure about storing Paper things in the server.properties file. This would be the first time for Bukkit, Spigot and Paper to add a new value there.
While it's not really gonna cause issues, this doesn't seem like the proper thing to do. IMO just using the paper global configuration would be fine - yes you get the message again if you delete your config, but it's just a log message, not a big deal, and idk if the event really is needed. There's a good chance users have no plugins i...

rustic folioBOT
#

I'm not 100% sure about storing Paper things in the server.properties file.

I'm not sure if I'm actually storing something in the server.properties. Besides that, thinking further this might still be too early. Ideally the message would be shown after the first successful server start. So if a plugin crashes the server the message won't be shown at all since at the next startup the server.properties file already exists.

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

[12:06:11 WARN]: com.google.gson.JsonParseException: Don't know how to turn into a Component
[12:06:11 WARN]: at net.kyori.adventure.text.serializer.gson.ComponentSerializerImpl.notSureHowToDeserialize(ComponentSerializerImpl.java:337)
[12:06:11 WARN]: at net.kyori.adventure.text.serializer.gson.GsonComponentSerializerImpl.deserialize(GsonComponentSerializerImpl.java:90)
[12:06:11 WARN]: at net.kyori.adventure.text.serializer.gson.GsonComponentS...

rustic folioBOT
#

The streams/collect optimization for findPath accidentally removed a call to profiler.pop() this causes the vanilla profiler to give errors and makes the final profile unusable. This PR fixes that patch to put the profiler.pop() back in. We've been running a built with this patch in as a test and everything seems to work as expected.
The vanilla profiler is useful in combiniation with spark/build in timings as it gives information neither of these profilers give.

Before fix:

perf ...
rustic folioBOT
#

so,

  1. We appear to be missing some form of operations in the transformer which is still allowing these block entities into the world from somewhere

  2. I cannot reproduce the crash with a minimal reproduction case, nor will the reported plugin actually compile so I can do a more deeper look without tryna reimplement potential minimal reproduction cases from it.

My eyes are failing me at this time, so, I'm probably done on this for today

rustic folioBOT
#

Expected behavior

Block non-whitelisted connection attempts before they are processed by plugins.

Observed/Actual behavior

Occasionally, someone finds my whitelisted non-public server and attempts to connect. Since they are not whitelisted, the connection fails, but the attempt causes several plugins to react, notably LuckPerms (pre-login processing) and Multiverse-Inventories (inventory entry).

Steps/models to reproduce

  • Attempted connection with a non-whitelisted player ac...
#
  • client connects
  • mojang does authentication on the account
  • the pre login (process) events fire
  • the login process starts, the server checks if the player is able to login or not; if not, the login event is fired with the correct disallow status, otherwise it is allowed; plugins can touch this stuff to change the messages, i.e. apply at X to be whitelisted; appeal bans at, etc

There is very little in terms of what we can do here relating to plugins which isn't getting rid of the pr...

rustic folioBOT
#

Expected behavior

  1. When we use ScullMeta.setOwningPlayer() or ScullMeta.setOwnerProfile() for offline players it should be display the player head's texture above the "PLAYER_HEAD" item.
  2. The PlayerTextures url, in an offline player PlayerProfile, shouldn't be null.
  3. When we set the PlayerTextures url, in an offline player PlayerProfile, it shouldn't be null few times after.

Observed/Actual behavior

  1. When we use ScullMeta.setOwningPlayer() or ScullMeta.setOwnerProfile() f...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Timings or Profile link

https://spark.lucko.me/yEwDSXG6Yk

Description of issue

After placing the fourth end crystal when respawning the ender dragon on the latest version of paper with only spark installed, a lag spike happens from the method net.minecraft.world.level.dimension.end.EnderDragonBattle.findExitPortal(). The timing link has a threshold of 100ms per tick, so it only captured the tick where the spike occurred.

Plugin and Datapack List

plugins
[17:14:22 INFO]: ...

rustic folioBOT
rustic folioBOT
#

Expected behavior

  1. The PlayerTextures url, in an offline player PlayerProfile, shouldn't be null.
  2. When we set the PlayerTextures url, in an offline player PlayerProfile, it shouldn't be null few times after.

Observed/Actual behavior

  1. The PlayerTextures url, in an offline player PlayerProfile, is null.
  2. When we set the PlayerTextures url, in an offline player PlayerProfile, few minutes after the URL is null.

Steps/models to reproduce

Here is a method you can use to ...

#

Expected behavior

Set skull meta (using setOwningPlayer or setOwnerProfile), with offline player or offline player's profile, should display the player head.

Observed/Actual behavior

Set skull meta (using setOwningPlayer or setOwnerProfile), with offline player or offline player's profile, doesn't display the good player head.

Steps/models to reproduce

Here are two methode to reproduce the bug, use them to get ItemStack to place in menu :

public ItemStack getPlay...
rustic folioBOT
#

This is 100% expected.
Editing around in the offline player texture is not a persistent operation.
You are merely modifying the in-memory offline player instance.

Offline player instances are cached in a weak ref map. In your case, the garbage collector at some time just, well, garbage collects those instances, in which case your temporary modification of their player profile is also garbage collected away.
When you then call getOfflinePlayers again, the instances are re-created.

#

If we're going to add an onboarding message, we really should have an onboarding docs page. Just linking to a category is not really accessible, IMHO, and just leaves more "where do I go" questions than it answers;

That was the plan anyway I think.

We might also want to consider adding a header message to the GUI app too, in order to provide a clickable link for people not using a terminal

Good idea.

rustic folioBOT
#

EntityDamageDoorEvent: Handle Door Damage Interactions

Description

I've introduced a new event called EntityDamageDoorEvent in the PaperMC server software. This event is triggered when an entity (currently limited to Zombies and Pillagers by default) damages a door. It provides essential information about the damaged door, the break time, and the total door break time.

This implementation takes into account differences in breaking time between zombies (240 ticks) and pillagers (...

#

EntityDamageDoorEvent: Handle Door Damage Interactions

Description

I've introduced a new event called EntityDamageDoorEvent in the PaperMC server software. This event is triggered when an entity (currently limited to Zombies and Pillagers by default) damages a door. It provides essential information about the damaged door, the break time, and the total door break time.

This implementation takes into account differences in breaking time between zombies (240 ticks) and pillagers...

rustic folioBOT
#

The method, in combination with setDoorBreakTime, feels dangerous.
A quick glance at the internals you are modifying shows that, at least rn, the server does not consider the case where breakTime > doorBreakTime.

Plugins could potentially modify this, leading to the zombie never breaking the door.

I am unsure if that is something we want to allow.
Might be worth preventing this via preconditions too.

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Please merge the patches, instead of committing your changes as a new patch.
See our contribution.md for instructions.

Moving break time up also seems a bit meh in terms of diff.
What is stopping us from just passing this.breakTime + 1 to the event?

Looking through the code a bit more, I'd also add a notice in the javadocs that this even will be fired even if breaking the door is disallowed by the mob_griefing gamerule as that may be wrongly assumed to not be the case.

You also mis...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#
  1. add a colon after "you can visit" ...you can visit: <link>
  2. make it obvious that the link is clickable, e.g. underlined and set to the color blue

I am more talking of a permanent component of this GUI. Like it doesn't really take up that much space and I think the GUI is used by relatively new people anyways.

Wouldn't hurt to permanently have it available in the GUI. It could also be abstracted into some kind of banner with rotating text.

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

In InventoryView, there's no Component setter for the inventory title, and it still uses the (I assume) legacy method of setTitle(String) rather than title(Component).

Describe the solution you'd like.

Preferably something like this!

for (HumanEntity viewer : inventory.getViewers()) {
    InventoryView view = viewer.getOpenInventory();

    TextComponent title = Component.text("My Inventory Title");
    view.title(...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

It is necessary that the event is successfully summoned and the spectators do not prevent it

Observed/Actual behavior

PlayerInteractEvent and Action.LEFT_CLICK_AIR does not trigger when a player presses the LKM while another player in spectator mode is in the direction of his gaze. This event is not called.
This did not happen on spigot 1.16.5.

Steps/models to reproduce

`@EventHandler
private void openMenu(PlayerInteractEvent e) {
if (e.getAc...

rustic folioBOT
#

Is your feature request related to a problem?

No, but AbstractArrow#hasNoPhysics and AbstractArrow#setNoPhysics exists, when the Minecraft vanilla boolean field net.minecraft.world.entity.Entity#noPhysics can be changed.

Describe the solution you'd like.

Entity#setNoPhysics and Entity#hasPhysics as net.minecraft.world.entity.Entity#noPhysics can be changed. See provided video

https://github.com/PaperMC/Paper/assets/16087552/1806faaa-b531-419a-9417-1e3c0cfd505e

Describe ...

rustic folioBOT
#

Is your feature request related to a problem?

At present, paper breaks the vanilla String duping behavior
But it wasn't completely fixed, and even now extends to paper's proprietary String duping machine

There is currently a PR
https://github.com/PaperMC/Paper/pull/9436

String duping can be fixed entirely, but I'd say if the option is set to false๏ผŒIs it possible to revert String duping to vanilla behavior?
After all, there is already a paper-specific version of the String duping...

rustic folioBOT
rustic folioBOT
#

Paper fixes duplication issues where it is viable to do so, the linked fix however has a behavioral change which needed some more attention. This is a vanilla issue, however, there is an easier means to do the same thing, so why go to the lengths of making such a contraption vs what is needed in vanilla.

Major video sites, such as YouTube, are always happy to teach people how to build and use these facilities
So when a certain machine doesn't work, they ask questions.
The handling of S...

rustic folioBOT
#

After a bit more consideration I don't think it is worth to introduce a new event.
For now, we will have to live without the block data being mutable.
To set the new honey level, people can still just cancel the event and update the block themselves.

I think it makes more sense for us to look into later expanding EntityChangeBlockEvent to allow for a setBlockData that is potentially respected instead of littering our API with event types that basically add 0 new info beyond well, a `se...

rustic folioBOT
#

I disagree with keeping it deprecated. While I agree that WorldType is not a good representation of how worlds work now, there isn't an alternative yet and WorldType itself is not deprecated. This method was only deprecated because of the bug that this PR fixes, so un-deprecated it seems appropriate. It can be re-deprecated with a different message when alternative API is added.

#

After some more discussion, I think the immediate solution is to add this fix, but at the same time, also add the missing options to WorldType, which include the missing NoiseGeneratorSettings types, like caves, and floating islands.

Alright I can do that

What about my idea of also adding isFlat(), isAmplified() methods? should I add that too or leave it be for you guys to figure out a better plan?

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

your question makes 0 sense, if this is a paper bug it should be reproducable using pure paper API, if you have to involve FAWE to cause it, it's likely not us. Plugins like FAWE do low level modifications to the world, which is not covered by this API.

This is the only issue report I'm aware of relating to this, so I'm incling towards closing this as-is

rustic folioBOT
rustic folioBOT
#

Problem:
If you want to allow builders or other members to build at the spawn but don't want to give them an operator. So Vanilla does not currently offer any possibility.

Solution:
Without doing anything hacky, the PR adds a configuration option to Misc on Paper which overrides this problem in combination with a permission.

Test possibility:

  • 2 players join the server
  • One of two gets OP, player 2 can no longer mine within the spawn protection

Here is the JoinEvent test how to test thi...

#

Yea I mean "vanilla does not have that ability" I guess is true, but this isn't vanilla and spawn protection is far from a best practice to use when trying to limit build access. It doesn't have a flag system like world guard nor can you deploy it in different regions.

It is also easily bypassed by pistons, had weird quirks like not being active without an operator etc.
Mob griefing also iirc works in there? It's far far from a good solution for servers. A bandaid permission that people can ...