#paper

1 messages ยท Page 5 of 1

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

You can go ahead and fix up yours

I created two new patches. Your implementation heavily inspires them. It is way cleaner to use the logic when a predicate is used.
Even fewer code changes than before. I tested things myself, and it works like a charm :)

Since we know that the extra map logic works, we use working code and add more item contents to its storage. In this case, the items that match any predicate choice.

It is a simple solution that brings many new possibilities to th...

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

Expected behavior

Hi. I have a plugin that blocks wearing netherite armor. When I uploaded this plugin to my Velocity proxy and spam to wear netherite armor , the plugin suddenly stop working without any error and I can wear armor (Actually plugin works if I try to wear it with right click while holding it or shift+click in inventory. It only doesnt work When I drag to armor bar and spam). here is my velocity.toml (https://pastebin.com/S90Nmb4T). Do you have any sugestion for me to find ...

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

removes the shitty "version check" which basically just checks if the build is more than 21 days old.
I put the new check right after the git information is printed, which is probably where it fits the nicest without having to change anything about how the PaperVersionFetcher and the methods it calls work.

Unsure if this should be merged into the Implement PaperVersionFetcher patch

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

Expected behavior

Channel names can be allowed to be longer than 64 characters. Plugins channels are for interop with client mods, if modded frameworks such as NeoForge or Fabric don't enforce a limit, Paper shouldn't either.

Observed/Actual behavior

I got this bug report about my mod unable to connect to a Paper server on a Velocity server. I was told to report this as this network channel name limit is quite odd and very short.
https://github.com/TelepathicGrunt/Bumblezone/issu...

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

Hello. My problem was solved in a simple way. I wanted to have several servers on the same IP, united in one network. Go to the hub and from there already choose through the NPC on which server to go. One of them was a server with fabric modpack. Velocity kicked when trying to connect to the hub with modpack client and with this error. Because the hub server was on paper. I set up a redirection that the players who have the modpack client go straight to the fabric server. The rest of the pla...

rustic folioBOT
#

Expected behavior

No error is reported, and the mobs drop items normally.

Observed/Actual behavior

[17:45:52 ERROR]: Failed to handle packet net.minecraft.network.protocol.game.PacketPlayInUseEntity@59517911, suppressing error
java.lang.NullPointerException: Cannot invoke "net.minecraft.world.entity.Entity$DefaultDrop.stack()" because "drop" is null
        at org.bukkit.craftbukkit.v1_20_R2.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:975) ~[paper-1.2...
rustic folioBOT
rustic folioBOT
#

You can use HandlerList.getHandlerLists() to get the handler lists of all events. You can then use this to either analyze all registered event handlers for all events, or register your own event handler(s) for each event.

You could for example register a handler at each event priority in each handler list and use that to monitor at which point the events got cancelled. And you can get all the registered event handlers of all other plugins and their event priorities, and then use this comb...

#

Expected behavior

When a player dies and their items drop, the dropped items do not despawn when the chunks are unloaded.

Observed/Actual behavior

When a player dies and their items drop, the dropped items despawn when the chunks are unloaded. If another player is nearby to keep the chunks loaded then the dropped itemd will not despawn.

Steps/models to reproduce

  • Die with items when there are not any other players nearby
  • Respawn somewhere else so that the chunks containin...
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

According to Plugin Message packet the channel itself does not have a limit, but Identifier has a limit. If we look up here we can see that Identifier can hold text of length 32767 bytes. So the max possible channel size is that 32767 bytes.

I wonder why spigot left there so small channel size limit. Maybe it's because minecraft used to have a limit set on the channel name but now it doesn't.

Also I removed the pr...

rustic folioBOT
rustic folioBOT
#

Alright I've made a "fix" for this that simply ignores players when checking worldborder collision. I'm not sure if I should pr it since it's a rather suboptimal solution considering it allows people with cheats to just ignore the worldborder, but that is possible in vanilla/spigot too so idk.
If anyone wants the fix it's here: https://github.com/LaserSlime/Paper/tree/fix/world-border-collision Just make sure that your anticheat prevents people from bypassing the world border if it matters ...

#

For this there is alot of other missing disconnect wraps... why are we not wrapping everything in a task runnable? Confused here.

we actually do have something... or well cb does. Right before the kick event is fired, it checks if its not the primary thread and then moves to the primary thread. But I think this has been around for a while so idk why our fix is needed at all.

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

unused uuid argument

- this.getHandle().connection.send(new ClientboundResourcePackPushPacket(UUID.randomUUID(), url, hash, required, promptComponent));
+ this.getHandle().connection.send(new ClientboundResourcePackPushPacket(uuid, url, hash, required, promptComponent));
rustic folioBOT
#
[PaperMC/Paper] branch deleted: dev/1.20.3
rustic folioBOT
#
[PaperMC/Paper] New tag created: 1.20.2
rustic folioBOT
#

Stack trace

org.spongepowered.configurate.serialize.SerializationException: [anticheat, anti-xray, hidden-blocks, 21] of type java.util.List: Missing value in Registry[ResourceKey[minecraft:root / minecraft:block] (Stable)] with key minecraft:netherrite_block
at io.papermc.paper.configuration.serializer.registry.RegistryValueSerializer.convertFromResourceKey(RegistryValueSerializer.java:26)
at io.papermc.paper.configuration.serializer.registry.RegistryEntrySerializer.deserialize(Regi...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Almost everywhere EntityTeleportEvent (or a subclass) was used, the nullability of getTo was never checked despite it being marked as nullable (as well as setTo). This is really dumb, as what is null supposed to do? So I just made it act as being cancelled.

Also in one spot, the firing of the event for /teleport, the to location wasn't even respected if you called setTo.

rustic folioBOT
#

So while I think the changes work... I would rather not use a ThreadLocal for this I think. Since this CODEC is global, it runs the risk of causing a problem. Lets say in someone's custom Translator, they do something that causes that CODEC to be used, since its on the same thread it will cause the rendering to take effect. I would rather there be a separate "rendering" codec that can be created with a locale. Could be a global map of them with the locale as the key, created as needed. Then t...

rustic folioBOT
#
[PaperMC/Paper] New branch created: dependency-cleanup
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

[18:09:34] [Server thread/ERROR]: Failed to handle packet net.minecraft.network.protocol.game.PacketPlayInFlying$PacketPlayInPosition@1526a9be, suppressing error
java.lang.IllegalArgumentException: Cannot get property BlockStateEnum{name=sculk_sensor_phase, clazz=class net.minecraft.world.level.block.state.properties.SculkSensorPhase, values=[inactive, active, cooldown]} as it does not exist in Block{minecraft:sculk_catalyst}
	at net.minecraft.world.level.block.state.S...
rustic folioBOT
#

Extended the API around the decorated pot to encounter the new inventory in 1.20.3.

I wasn't sure where the best place was to add the DecoratedPotInventory interface / implementation.
There is a case to be made, if it would be better to put them in a Bukkits folder since it would future proof if upstream implement the same API. However, in that case these two patches should removed anyway.

#

Expected behavior

Entity being succesfully teleported as by tp command.

Observed/Actual behavior

Teleport fails when Item Display entity rides teleported entity.

Steps/models to reproduce

In my case, I create Slime mob like that:
`hitbox_ = loc.getWorld().spawn(loc, Slime.class, slime -> {
slime.setSize(3);
slime.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(5);
slime.addPotionEffect(PotionEffectType.HEAL.createEffect(1, 20));
// slime.addPotionEffec...

rustic folioBOT
#

<details>
<summary>ComponentSerialization Diff</summary>

Index: src/main/java/net/minecraft/network/chat/ComponentSerialization.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/main/java/net/minecraft/network/chat/ComponentSerialization.java b/src/main/java/net/minecraft/network/chat/ComponentSerialization.java
--- a/src/main/java/net/minecraft...
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

When using this method on Spigot, you are able to send more than 1 resource pack to the client

Observed/Actual behavior

Paper added a patch (Server patch 1052) which removes all previous packs before sending new ones.

I noticed this in the code itself:

@Override
public void setResourcePack(UUID id, String url, byte[] hash, String prompt, boolean force) {
    Preconditions.checkArgument(url != null, "Resource pack URL cannot be null");

    if (has...
#
rustic folioBOT
#
[PaperMC/Paper] New branch created: fix-bungee-serialize
rustic folioBOT
#
[PaperMC/Paper] branch deleted: fix-bungee-serialize
rustic folioBOT
rustic folioBOT
#

So the thought here was, that actually upstream broke their own method's behavior. That method always changed the resource pack and that behavior shouldn't change because now more than one can be applied. Instead new methods for adding resource packs should be created. Adventure has an update in the works and once that is released, paper will update and include such methods.

rustic folioBOT
#

Timings or Profile link

is not needed

Description of issue

In CraftScheduler#parsePending() is a possible bug.

If there are no tasks in the queue and therefor head.next() returns null, it will keep the head.

Therefor, it will keep holding the runnable and all objects that it references (including players) leading to potential memory leaks and unwanted consequences.


Details:
It seems like in the above case, both for-loops are not executed once as the conditions a...

rustic folioBOT
rustic folioBOT
#

Stack trace

debug=true in server.properties
[paste your stack trace or a paste.gg link here!](https://paste.gg/p/anonymous/3cd5449ad3d64a72807490e5c40faf39)

Plugin and Datapack List

No plugins.

Actions to reproduce (if known)

BOTH SERVER INSTANCES MUST BE USING THE MOJMAP VERSION OF PAPER

Setup a waterfall proxy.
Setup two servers in the proxy, a default server that the player is sent to when they connect, and another that will be connected to through /se...

rustic folioBOT
#

So while I think the changes work... I would rather not use a ThreadLocal for this I think. Since this CODEC is global, it runs the risk of causing a problem. Lets say in someone's custom Translator, they do something that causes that CODEC to be used, since its on the same thread it will cause the rendering to take effect. I would rather there be a separate "rendering" codec that can be created with a locale. Could be a global map of them with the locale as the key, created as needed. Then t...

rustic folioBOT
#

This misses some cases where ComponentSerialization.CODEC is used directly instead of passing the self codec, like show_text hover events. Solving that is more complicated though, so I think it's fine to leave for later and not block this improvement.

Solving this properly would probably require to re-create every codec requiring the Component codec for every locale. A quick workaround for this would be to just pass everything (which has show_text hover events, etc.) through the adventur...

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

It is valid in vanilla to have a blockentitytag for an itemstack that does not have an id key specifying the type of block entity. This doesn't matter when placing the block because the block type determines the tile entity type, not the ID read from the nbt tag compound. Previously, CraftMetaBlockState expected the id tag except for 2 or 3 exceptions where it was manually added. Not sure why those were singled out, but now this adds a type override based on the specific material.

You ...

rustic folioBOT
rustic folioBOT
#

@bergerkiller reported that on Paper specifically, smooth sounds were getting messed up and I think this is the culprit. He'll test and confirm. Paper's network optimizations include a bit that makes packets dispatched async transfer to the main thread with the reasoning that 3rd party packet listeners like from protocollib mutate world state in those listeners and this makes that safer.

I'm curious if people think we should continue to do that? Packet listeners should understand that some...

#

that dispatching thing was generally done because we kinda got fed up of plugins killing the server doing stupid stuff in packet listeners; I do semi still agree with running them there, people seem to assume that they can still touch stuff because the server has some areas where mojang, in limited and isolationionary contexts, where they do

Ideally we'd ensure that both can be faciliated, but, that is moreso on plugin devs, we just wanna generally ensure that there is a safe way to do tha...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Alright I've made a "fix" for this that simply ignores players when checking worldborder collision. I'm not sure if I should pr it since it's a rather suboptimal solution considering it allows people with cheats to just ignore the worldborder, but that is possible in vanilla/spigot too so idk. If anyone wants the fix it's here: https://github.com/LaserSlime/Paper/tree/fix/world-border-collision Just make sure that your anticheat prevents people from bypassing the world border if it's import...

#

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:
b7a2ed41 SPIGOT-7530, PR-947: Add Player#removeResourcePack
9dd56255 SPIGOT-7527, PR-944: Add WindCharge#explode()
994a6163 Attempt upgrade of resolver libraries

CraftBukkit Changes:
c00438b39 SPIGOT-7530, PR-1313: Add Player#removeResourcePack
492dd80ce SPIGOT-7527, PR-1310: Add WindCharge#explode()
...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

This PR introduces an easily accessible number format API (using adventure styles and components) for scoreboard objectives for a feature introduced in 1.20.3.

Setting a number format can be as easy as this:

//Remove numbers
objective.setNumberFormat(BlankFormat.blank());

//Style numbers
objective.setNumberFormat(new StyledFormat(Style.style().color(NamedTextColor.GREEN).decorate(TextDecoration.BOLD).build()));

//Replace numbers
objective.setNumberFormat(new FixedFormat...
#

This PR introduces an easily accessible number format API (using adventure styles and components) for scoreboard objectives for a feature introduced in 1.20.3.

Setting a number format can be as easy as this:

//Remove numbers
objective.setNumberFormat(BlankFormat.blank());

//Style numbers
objective.setNumberFormat(new StyledFormat(Style.style().color(NamedTextColor.GREEN).decorate(TextDecoration.BOLD).build()));

//Replace numbers
objective.setNumberFormat(new FixedFormat...
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Should use our codecs for conversions, not the GsonComponentSerializer, see the minecraft round trip style test in AdventureCodecsTest for an example. Also put the conversion methods at PaperAdventure.asVanilla/asMinecraft to be consistent.

So just we are on the same path: I should add a asVanilla method for the style conversion to PaperAdventure? Or do you mean the entire number formatting? (Probably not, but just making sure)

Aaaand should I update the adventure patch? Because a...

#

All there records should be package-private and not exposed to the API. Instead, have interfaces with a method for each record parameter. The field for the blank format can be on the NumberFormat interface.

Sorry, but I don't think I really get what you are asking me to do. ๐Ÿ˜…

As far as I can tell, you want me to either:
Package private the entire number format implementations and add static methods to the base interface for creation. But that would be an issue for accessing the numbe...

rustic folioBOT
#

Aaaand should I update the adventure patch? Because as far as I can tell, everything inside that class comes from that patch and if I would put it in this one it could break multiple patches if this one would be removed (e.g. temporarily while upgrading), right?

Yeah, you can make asVanilla/asAdventure methods inside PaperAdventure that use the codec's and they should be in the adventure patch.

Or you want me to:
Create interfaces for every type and make the implementations private...

rustic folioBOT
#

no need for blank format, should just use an equality check to know that

Internally it makes sense, but for accessibility when querying the current format it can get confusing and just more difficult to check, right?

If somebody wants to know if it's a blank format, they would have to do:
if(!(format instanceof StyledFormat) && !(format instanceof FixedFormat)) return;
to know if it's a blank format or not. And if there would be a new format in the future, their code would be broken

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

I'm not confident in a few of the method names, the display auto updating and entry custom name ones.

I'm also not confident in the approach currently implemented for handling setting locked or custom name state on a score if the score doesn't exist. Right now it prevents creating an empty score, but that's not what vanilla commands do. The vanilla scoreboard commands will just create a blank one if you set a custom name or number format without first setting a score value.

rustic folioBOT
#

Is your feature request related to a problem?

This is not really a problem, rather an inconvenience to deal with...
I am using docker to containerize my servers and always face the same issues when updating plugins, operators, whitelist, bans...
Due to the nature of docker volumes, it is not possible to save single files to a volume which are not inside a folder.
When updating plugins, I have to update the volume and the image.

Describe the solution you'd like.

So my proposal is...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Ok, so I think the best solution is as follows...
Setters on Score should add the score if it doesn't exist. If we don't do that, we introduce behavior where calling the same methods in different orders behaves differently (setScore, setNumberFormat vs setNumberFormat, setScore).
Getters on Score should not add the score, but return some default value, null, false, 0, the default values for that type.

And this behavior can be documented in the javadocs

rustic folioBOT
rustic folioBOT
#

Expected behavior

Monsters in powder snow take freeze damage

Observed/Actual behavior

They sometimes don't hurt
https://youtu.be/7Kb0lKcQ7Ac

Steps/models to reproduce

1ใ€just like in the video, build a testing site
2ใ€set nerf-spawner-mobs: true in spigot.yml (Just to keep them from jumping around)
3ใ€wait and see

Plugin and Datapack List

blank server

Paper version

This server is running Paper version git-Paper-330 (MC: 1.20.4) (Implementing API version 1.20.4-R...

rustic folioBOT
rustic folioBOT
#

It's the general, we want to do something about this, but,

  1. plugin authors have generally not uniformly been good at programming stuff in a good manner here, i.e. hardcoding their plugin data folder vs using the getDataFolder() method
  2. any time we've talked about cleaning up the folder structure, we've generally had many people against it, which while there seems to be more for than against this stuff, it creates the headaches over motivation for this sort of work
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

PlayerDropItemEvent is only fired when a player actively drops an item

Observed/Actual behavior

PlayerDropItemEvent does fire when a player actively drops, but ALSO fired when a player dies

Steps/models to reproduce

  1. Put an item in your inventory
  2. Die
  3. Event is fired.

Plugin and Datapack List

No plugins, No datapacks.

Paper version

This server is running Paper version git-Paper-318 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPS...

rustic folioBOT
#
[PaperMC/Paper] New branch created: feature/adventure-4.15
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

in progress.
I have also added a fromIndex method to Rotation, lmk if i should revert it / split it into another PR or smth.

since this is my first time delving into itemmeta, please tell me if I'm doing something wrong / miss anything

there are still TODO comments littered around for me to fix, but I might as well create the PR now for feedback
I wanted to put the CraftMetas in a paper package, but the need to extend the package private base class

is it possible to use inheritan...

rustic folioBOT
#

Expected behavior

PlayerInteractEvent will only be fired once

Observed/Actual behavior

PlayerInteractEvent will be fired twice simultaneously

Use the following plugins for testing

    @EventHandler(priority = EventPriority.MONITOR)
    public void onPlayerInteract(final @NotNull PlayerInteractEvent e) {
        e.getPlayer().sendMessage(e.getHand() + " " + Bukkit.getCurrentTick());
    }

In survival mode
![image](https://github.com/PaperMC/Paper/assets/61594596...

rustic folioBOT
rustic folioBOT
#

Expected behavior

Eating a suspicious stew with blindness should give you blindness for 8 seconds.
Also the affect darkness should be reliable given to a player after a shriker got activated

Observed/Actual behavior

Solely on papermc, after optaining theese effects they are immediately being removed by the server
You can see them for a short time (~50ms)

This makes advancements like "How did we get here?" impossible

Steps/models to reproduce

Eat a suspicious stew with t...

rustic folioBOT
#

Expected behavior

the player should pass through the worldborder and enter the allowed area

Observed/Actual behavior

after exiting the worldborder, when you try to re-enter, it will cause your character to freeze and glitch momentarily (denying access back inside)

Steps/models to reproduce

set worldborder to something like 20, go outside the world border, and try to go back in

Plugin and Datapack List

FastAsyncWorldEdit, Multiverse-Core, SkBee, Skript, spark
Vanilla da...

rustic folioBOT
#

Expected behavior

The maximum stack is 64(16 or 1 for some items)

Observed/Actual behavior

The maximum stack is 1

Steps/models to reproduce

It's quite difficult... (to explain the way that I used to enable experimental 1.21)
the easiest way (without editing level.dat in the world folder):

  • Create a single-player world with experimental feature 1.21
  • transfer the world to the server
  • put a crafter
  • try to put more than 1 item

Plugin and Datapack List

Plugins: no...

rustic folioBOT
rustic folioBOT
#

This has been mitigated by https://github.com/PaperMC/Paper/commit/0b952981e6e96157d2cea8322c04c0f69965f2bf. The border edge now exists on Paper however there's still some issues especially with the collide of the edge. The item frame should not drop if placed at the border block (horizontally) with a border of size 10 and then shrinking to 9. And the player is rollback when the half size of the border is not an integer. This is essentially because there's no voxelshape intersection like in v...

rustic folioBOT
#

Timings or Profile link

n/a

Description of issue

Hi, I noticed that the code for updating players in the mob spawn map in the Optimise-chunk-tick-iteration patch was duplicated in b8f95587450deae4fde52cbee2a8aa12ff5f9225 while updating to 1.20.3/4. This looks like a mistake and isn't present in 1.20.2 0cdce89d595a2c1c097c9e2a5ff96687977b3b25 and could cause the PlayerNaturallySpawnCreaturesEvent event to be called twice.

Plugin and Datapack List

None

Server config file...

rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: test-result-actions
rustic folioBOT
#

Expected behavior

When a boat breaks a hanging entity, it should fire HangingBreakByEntityEvent

Observed/Actual behavior

When a boat breaks hanging entity, it fires HangingBreakEvent with PHYSICS cause, in thus not firing HangingBreakByEntityEvent

Steps/models to reproduce

Just ram into itemframe with a boat

Plugin and Datapack List

[02:07:12 INFO]: Bukkit Plugins: (78):
[02:07:13 INFO]: - AdvancedPets, *AdvancedReplay, AdventCalendar, *AwesomeSnow, BetterVote, ChestS...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: test-result-actions
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

There definitely is something inconsistent with this. Left is Vanilla (1.20.4), and right is the latest stable version of Paper. For the purpose of consistency I didn't enable nerf-spawner-mobs. The Magma Cube's take a lot longer to actually take damage in the Paper world (if at all).

I've noticed:

  • They always take the same amount of time to start shaking from the powdered snow effect.
  • The damage doesn't start straight away like it does in Vanilla.
  • The damage isn't consistent...
rustic folioBOT
#

Groundwork for a better-designed bytecode modification framework for the larger structural changes we need to do. The utilities currently implemented are what was needed to split Position out of Location and manage return types and param types.

This framework includes generated classes with generated static methods and it's done all auto-magically. It is also versioned. It changes the api-version field for paper plugins to be specific to a minor version and won't run modifications not a...

#
[PaperMC/Paper] New branch created: feature/position-split
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: feature/improve-Registry
#

This is a key step to improving Registries and enabling better and more accurate API in the future. We cannot require all type parameters for Registry to implement Keyed because we need to be able to create instances of things like TrimMaterial and TrimPattern without a key as they can exist like that in the server.


Supersedes https://github.com/PaperMC/Paper/pull/9009

Closes https://github.com/PaperMC/Paper/issues/9063

Requires https://github.com/PaperMC/Paper/pull/10060

#
[PaperMC/Paper] branch deleted: feature/adventure-key
rustic folioBOT
rustic folioBOT
#

Hey @Leoparking, there's a few things:

[21:31:07 WARN]: Failed to parse resource pack prompt 'ไฝ ้œ€่ฆไธ“้—จ็š„่ต„ๆบๅŒ…'
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $

This has to be JSON. You can use tools online to generate it for you.

SkinsRestorer

Offline mode isn't supported

*** Warning, you've not updated in a while! ***
...

rustic folioBOT
#

Ok, I think I handled suggestions with spaces correctly now. I had to build a custom parser to make sure words were created correctly and not separated purely on spaces.

I tested it myself, and it does all seem to work as I expect. setblock's location argument, tp's entity selector argument, and the CommandAPI's MapArgument all look like they match up with the client's suggestions. I wouldn't say I understand the need for a custom parser since I thought Brigadier could handle all t...

rustic folioBOT
rustic folioBOT
#

I believe that both players that caused this on my server where using an elytra while flying over an ancient city, then, disconnected (im not sure if it was due to a crash, or due to a network issue, restart, etc); and when trying to reconnect mid-flight, on an ancient city this happened.

I don't really know if it is an illegal world state, as we run 4 separate servers, and 2 of them ran into the issue; not saying it couldn't be, but its just weird that two of them are experiencing the iss...

#

I'll also share my plugin list here, and maybe @YuanYuanOwO can share theirs so we can compare and maybe find some matches.

AFKPlus, Analyse, antiRedstoneClock, ArmorStandEditor, BetterRTP, ChatFeelings, ChestSort, Chunky, CoreProtect, CrazyCrates, DelayedCommand, Essentials, ExtraContexts, FastAsyncWorldEdit, FastWelcome, Feed, Gemmy, GSit, HeadsPlus, HorseTpWithMe, ImageFrame, InventoryRollbackPlus, InvisibleItemFrames, Lands, LightWorlds, Lootin, LuckPerms, ModMenu, NetherRoof, Newbie, ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

I want to be able to copy all pixels of a map for each layer/MapRenderer to be able to store it.
I would like this feature so that players can view world maps across multiple servers by storing the layers in a db.

Describe the solution you'd like.

Perhaps a method like: Map getCanvases(MapRenderer renderer);
To retrieve the player to canvas map that is stored in CraftMapView.
Could simply be implemented by using `return new HashM...

#

We really have little care about windows, it's well known that file Io is much slower on that platform, and unless something shows that the issue is elsewhere, there's little we can do other than advising to maybe try to toy with the number of Io workers.

Outside of that, we'd need a trace showing all server threads when that occurs, which I'm pretty sure across the GitHub and discord, I've asked enough times that I no longer care with how much my head is spinning.

Sorry to bother...

rustic folioBOT
#

This may not help in your particular case but the way we handled this on Loka was a fork of Paper where we could relocate the common data storage folder in order to use a singular directory that all of our survival servers referenced for mapmaking.

https://github.com/Cryptite/Slice/blob/master/patches/server/0030-Shared-Data-Storage.patch

With symlinking this may be helpful too but I can also see the desire for being able to use a db for this.

rustic folioBOT
#

Is your feature request related to a problem?

i have a server with a moving border & it includes pvp. players can go outside the border which makes them invincible.
this is also kinda a bug since entities outside the worldborder can also attack players, it's just the players which cannot attack anything

Describe the solution you'd like.

the ability for players to attack entities outside the worldborder

Describe alternatives you've considered.

none

Other

No response

rustic folioBOT
rustic folioBOT
#

I actully have no idea about reproduce the issue(100%)
in the ancient city,when i was near the Warden,and try to walking or flying,I'll just disconnect from the server.(maybe near the schulk shrieker,i also have a probability of disconnecting when the sound starts playing)

It's not a plugin issue,try without plugin,same issue

[15:56:37 ERROR]: Failed to handle packet net.minecraft.network.protocol.game.PacketPlayInFlying$PacketPlayInLook@d8ab24a, suppressing error
java.lang.Ill...
rustic folioBOT
#

https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/net/minecraft/world/entity/EntityInsentient.patch#159-188

While upstream passes the itementity, which intern is used for the event, the item stack passed to the method is used instead of the "updated" one from the item entity.

The method also receives a copy of the item entities itemstack, so we don't magically update it with a craft mirror rn either.

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

The EntityPickupItemEvent is just wrong right now. It is incorrect to pass the Item (entity) as the thing being picked up because in vanilla, the stack actually being kept by the mob isn't always the full stack in the entity. Piglins, for example, can pickup 1 item at a time from an item entity and the event doesn't give you that context.

I think the solution here, is to add an ItemStack field to that event, deprecate getItem() (just to rename it to getSourceItem) and tell people to check ...

rustic folioBOT
#

Some types that have registries support existing without being in a registry and therefore have no key. This is part one of supporting that, adding a Registry#getKey(Object) method to be able to get the key for an object so we can remove Keyed from such objects.

This also deprecates Keyed#getKey on TrimMaterial and TrimPattern as these are the 2 offending types currently in the api.


Part 1 of https://github.com/PaperMC/Paper/pull/10062

rustic folioBOT
#

since I thought Brigadier could handle all the parsing, but if it works, it works.

Brig still does do the parsing, but jline was doing its own parsing as well. And its parsing treated all spaces (not in quotes) as word separators and that messed up how it tried to replace the last word with the suggestion text. If the suggestion was ~ ~ ~ after typing in ~ ~, it would replace the last word with that suggestion. Which only replaces the single ~ instead of both ~ ~ since jline just...

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

After some further testing using reflection, it appears that CraftMapView#canvases and CraftMapView#renderCache is empty for world maps, so i will assume that these fields are used for "virtual" maps?
CraftMapView#worldMap.colors does contain data, assuming that this is the original map pixel data.

If this is correct (please correct me) i propose 3 new methods:

  • Map<Player, MapCanvas> getVirtualCanvases(MapRenderer renderer); impl -> `return new HashMap<>(CraftMapView#canvase...
rustic folioBOT
rustic folioBOT
#

Might be worth to comment the current default of this value (just the number) in the javadocs.

Well in server terms there is no default value as far as I can tell. That is fully up to the client what to style that like. It would be hard to describe how it would look like in game, since objectives and their scores can be more than just the scoreboard sidebar...

I would suggest a wording like that maybe?
For score (getter):
`The number format might be null if the score has not been se...

#

Timings or Profile link

N/A

Description of issue

When running a fresh version of Paper (no plugins) on either 1.20.2 or even 1.20.4 I get an error regarding hw.cpufrequency.

Plugin and Datapack List

N/A - Fresh Install

Server config files

N/A - Fresh Install

Paper version

ver
[14:55:47 INFO]: Checking version, please wait...
[14:55:47 INFO]: This server is running Paper version git-Paper-318 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT) (Git: ...

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

nothing we can do, and this is only cosmetic, right? (as in server still starts?) please report it to oshi, maybe the maintainer can provide a hint on what data they need to resolve this

edit: or maybe you can create a minimal repro, mojang only includes oshi 6.4.5, latest is 6.4.9, maybe its already fixed? something simple like fun main() = println(oshi.SystemInfo().hardware.processor) should trigger it https://github.com/oshi/oshi

Hey buddy,

Thanks for the quick reply! Yup ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

Yes, https://bugs.mojang.com/browse/MC-218156

Describe the solution you'd like.

Temporarily change

  treasure-maps:
    enabled: true
    find-already-discovered:
-      loot-tables: 'default'
+      loot-tables: 'false'
      villager-trade: false

Describe alternatives you've considered.

Wait for https://bugs.mojang.com/browse/MC-218156 to fix itself

Other

Here is what happens on my server (as far as I ...

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

Expected behavior

With this setup tnt should always be able to be affected through the powdered snow and the sand entity should remain untouched.

https://youtu.be/HeyX3jG4Dzk

Observed/Actual behavior

The tnt entity is not affected by the explosion when it is inside the sand entity.

https://youtu.be/b-sMCmv4BiA

Steps/models to reproduce

https://youtu.be/9FhFxf1bGak

Plugin and Datapack List

None

Paper version

[21:40:26 INFO]: Checking version, please wai...

#

Expected behavior

Click on any part of the door and with no permission nothing should happen. The door should keep closed.

Observed/Actual behavior

Clicking on top of the doors is really opening them as a Bedrock player.

Steps/models to reproduce

Clicking doors on others plots at the lower block is working like it should. But clicking the upper block of the door allows Geyser players to open and close any doors. This is not just an optical issues. All players can go physical ...

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

Expected behavior

In vanilla minecraft 1.12.2, snowballs cause the "damage" effect and knockback. Knockback is also caused to entities like fireballs.

Observed/Actual behavior

Snowballs do not cause knockback when using PaperMC 1.12.2.

Steps/models to reproduce

Summon any entity and throw a snowball at it in PaperMC 1.12.2.

Plugin and Datapack List

[13:20:25 INFO]: Plugins (0):

Paper version

[13:17:47 INFO]: This server is running Paper version git-Paper-1620 (MC:...

rustic folioBOT
#

Expected behavior

Some farmland blocks arenโ€™t getting fertilised even if they are directly touching water

Observed/Actual behavior

On my server, there is an area of farmland that doesnt get fertilised when water is nearby. Its a 5x6 wheat farm on the ocean, so the bottom of the block is always touching water. Im reporting that because i had this problem for 3 years and didnt think anything of it and I never had the problem on the vanilla server software

Steps/models to repro...

rustic folioBOT
#

The more I worked on this, the sillier it became. So this is a draft for now.

The point of this PR is to fix MC-111729 (and a remap issue, doesn't affect the pr so is removable).
Did some testing, works when creating the objective with the scoreboard command and with a plugin.

The reason this is a draft is I really don't know how to deal with fake players created by plugins, or just big servers with a lot of players. I think having the comman...

rustic folioBOT
#

Expected behavior

Hit cobblestone with diamond pickaxe, feel like I'm breaking it pretty fast

Observed/Actual behavior

Hit cobblestone with diamond pickaxe, feel like I'm hitting it with my hand instead

Steps/models to reproduce

Join my server, get diamond pickaxe, hit cobblestone, feel weird.

Plugin and Datapack List

Custom

Paper version

318 (current latest 1.20.2 stable)

Other

I'm on paper 318 (current latest 1.20.2 stable), and some of the blocks, when yo...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: feature/adventure-4.15
rustic folioBOT
#

Iโ€™m from bedrock edition now, but the problem is still the same. The farmland is at the same level as the water and nearby farmland is getting fertilised.
(I installed geyser mc to play on bedrock)
[image0.png][image1.jpeg][image2.png]

On 25 Dec 2023, at 1:22โ€ฏAM, Oliwier Miodun @.***> wrote:

Both Paper and vanilla don't water the block if the block is not at the same level as the water.
It would be great if you could provide us with the world that this happens on; unless I...

rustic folioBOT
#

Expected behavior

Strider should not be damaged if they come out of lava

Observed/Actual behavior

Strider came out of the lava and was damaged

Steps/models to reproduce

you just need to summon strider in any dimension

Plugin and Datapack List

nothing

Paper version

[00:51:21 INFO]: Checking version, please wait...
[00:51:22 INFO]: This server is running Paper version git-Paper-344 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: ff7b9b0)
You are...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Launch projectile arrow should work:

Arrow arrow = skeleton.launchProjectile(Arrow.class);

this worked in 1.20.2

Observed/Actual behavior

It throws this error:

java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_20_R3.entity.CraftArrow cannot be cast to class org.bukkit.entity.Arrow (org.bukkit.craftbukkit.v1_20_R3.entity.CraftArrow and org.bukkit.entity.Arrow are in unnamed module of loader java.net.URLClassLoader @6e2c634b)

Steps/models t...

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

Expected behavior

Breaking a block that drops XP on mining with /setblock x y z air destroy does drop XP or has the chance to drop XP. Same behavior like mining with a diamond pickaxe.

Observed/Actual behavior

Breaking a block with named command does not drop any XP

Steps/models to reproduce

Create a fresh paper server, place or find any block that drops XP on mining and enter the setblock command with destroy property.

[YouTube Video Comparison](https://youtu.be/qgmaTx...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

When a command block is powered by a redstone signal with either of the following commands, it should send of whisper message to the nearby player.
Commands used :
/tell @p TEST or /execute at @p run msg @p Test

Player get a whisper message from the server.

Observed/Actual behavior

When a command block is powered by a redstone signal with either of the following commands, it failed.
/tell @p TEST
/execute at @p run msg @p Test

`[14:11:30 ERROR]: Thread ...

#

.playSound is just sending a packet

Very much not true on World and Server. On Player, playSound is as simple as sending a packet. But not on those other types. They either iterate over a thread-unsafe list of players in a world or use the vanilla packet broadcasting system based on location which contains thread-unsafe logic.

The "world random" aspect is just one part of this. If a sound isn't provided a seed, a seed must be generated from the world's random instance which is a th...

rustic folioBOT
rustic folioBOT
#

Hi, please don't change this behavior. It actually has some uses, for example as a method to check if a block is "interactable" in that right clicking it will perform some sort of action. I suggested it to be used in kernitus' OldCombatMechanics plugin](https://github.com/kernitus/BukkitOldCombatMechanics/issues/623). This behavior has been present for multiple years and fixing this would break backwards compatibility for at least that plugin, I don't know if there are other plugins that use ...

rustic folioBOT
#

.playSound is just sending a packet

Very much not true on World and Server. On Player, playSound is as simple as sending a packet. But not on those other types. They either iterate over a thread-unsafe list of players in a world or use the vanilla packet broadcasting system based on location which contains thread-unsafe logic.

The "world random" aspect is just one part of this. If a sound isn't provided a seed, a seed must be generated from the world's random instance whic...

#

It appears the line
lighning.isSilent = isSilent
was removed, I could be mistaken though.

That's correct. That line was removed. But not as a part of this PR. That is just part of an existing patch that removes that line.
<img width="848" alt="image" src="https://github.com/PaperMC/Paper/assets/15055071/f64b6e30-ca80-4902-b78c-ad4ea7f62f36">
These 3 spots are the lines in that patch that changed as a result of this PR.

rustic folioBOT
#

Expected behavior

I'd expected that this would never occur. It is on 5 server with different plugins tested, even all plugins removed it reverted to online mode.

Observed/Actual behavior

After updating 5 servers from paper-1.20.4-344 to paper-1.20.4-349 I suddenly found that it was impossible to connect, It simply said it was in online mode. Now we use 5 servers together via Bungee, and NEVER EVER did a controlsystem change this settings in the server properties.
I already restar...

rustic folioBOT
#

Getting back to discord, someone pointed out the stasrtup option -o as in "java.exe" -Xmx1024M -Xms1024M -jar paper-1.20.4-344.jar -o true nogui
I removed the -o TRUE in the startup line, and now it is working fine. Maybe put this reminder for those who are not on top of updates and social media, like me. So, this issue is resolved, thanks to the discord community of PaperMC.
Thanks to all. Happy New Year!!!!

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

https://bugs.mojang.com/browse/MC-379 There is a super old confirmed report saying the spawn-animals and spawn-npcs should function the same way as spawn-monsters in only preventing the natural generation of monsters, not spawn eggs, commands, etc.

This would be a relatively large behavioral change that is > 10 years old where spawn eggs for monsters on servers spawn-monsters: false would suddenly start working.

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:
0c7aedbc SPIGOT-7554, PR-954: Add DecoratedPotInventory

CraftBukkit Changes:
53ebb05e3 SPIGOT-7554, PR-1323: Add DecoratedPotInventory
33a2d8773 Ensure that PlayerMoveEvent is always fired where applicable
7df18510f SPIGOT-7555: Don't cast ItemFlags to byte
19aec59ea Use provided case for non-existent...

rustic folioBOT
rustic folioBOT
#

Expected behavior

Player can't join with DomainSocket

[18:35:13 WARN]: Exception verifying Color_yr
java.lang.ClassCastException: class io.netty.channel.unix.DomainSocketAddress cannot be cast to class java.net.InetSocketAddress (io.netty.channel.unix.DomainSocketAddress is in unnamed module of loader java.net.URLClassLoader @25f38edc; java.net.InetSocketAddress is in module java.base of loader 'bootstrap')
	at net.minecraft.server.network.ServerLoginPacketListenerImpl$LoginHan...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

This isn't a crash or bug, but on restart (or maybe crash?) sometimes there seems to be a code path that accesses the poi chunk off the main thread, which your async handlers detect. Which I think you may want to know about.
If its not an issue then you can close this.

[14:38:44 INFO]: [Votifier] Disabling Votifier v2.7.3
[14:38:44 ERROR]: [ChunkTaskScheduler] Chunk system error at chunk (1112,-1021), holder: NewChunkHolder{world=cool_world, chunkX=1112, chunkZ=-102...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Fixes an issue in ClientboundLoginDisconnectPacket where Adventure translate components are not rendered
and Serialized components having a maximum length of 32767.

TestPlugin.java

public final class TestPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        final GlobalTranslator translator = GlobalTranslator.translator();
        final TranslationRegistry registry = TranslationRegistry.create(Key.key("paper", "test-plugin"));...
rustic folioBOT
#

TestPlugin.java

public final class TestPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(this, this);

        this.getServer().getAsyncScheduler().runAtFixedRate(this, task -> {
            this.getLogger().info("Hello");
        }, 0L, 1L, TimeUnit.SECONDS);

        this.getServer().getScheduler().runTask(this, () -> {
            this.getServer().getPluginManager().dis...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

The longer description should be in the main body of the javadoc.

Also it should be,

When this event is fired, the player's locale is not
available. Therefore, any translatable component will be
rendered with the default locale, {@link java.util.Locale#US}.
<p>
Consider rendering any translatable yourself with {@link GlobalTranslator#render}
if the client's language is known.
rustic folioBOT
#

Rebased this once more.
I have dropped the extends for the item cooldown event.

In general, issue with that even being a child of item cooldown event is that plugins listening for the cooldown event itself might cancel a shield disable, leading to the extra "effect" of a disabled shield damage event, (no stopUse item call and no game event) which might not be intended.

#

Is your feature request related to a problem?

from javadocs

Contains fast approximations of some Math operations.
By default, Math methods will be used by all other JOML classes. In order to use the approximations in this class, start the JVM with the parameter -Djoml.fastmath.
There are two algorithms for approximating sin/cos:
arithmetic polynomial approximation contributed by roquendm
theagentd's linear interpolation variant of Riven's algorithm from http://www.java-gaming...

rustic folioBOT
#

I think that choice should probably be left to the server administrators ?
For plugins that use a lot of trig functions, them shading in a minimal library to create these lookup tables for them seems easy enough ?

Would love the opinion of other people tho ๐Ÿ‘ I have not looked through joml's fastmath approximations, I presume sin/cos/atan might have changes, the approximation range of those and potential limitations of input values.

Given joml is exposed to the API, messing around there...

#

I see several problems with this approach

  • Some hosts do not allow you mengle with jvm flags.
  • Server admins do not know nor care what math does paper and plugins use.
  • Apparently not even papermc contributors, let alone plugin developers, are aware that sin lookup tables are opt in feature
  • The feature is not even documented on joml website https://github.com/JOML-CI/JOML, only place to find this out is either by reading javadocs or decompiling the library. Distributing this knowle...
#

Yea I don't think getting server owners to flag this is the best approach.
IMO the plugin should be responsible for providing their own lookup table.

Again, to enable this, we'd need to ensure that none of the fastmath approximations fail to cover all cases the normal methods would as JOML is exposed to plugins via API.

From a quick glance their approximations are just that, approximations. Good ones sure, fast ones as well.
Their atan2 implementation e.g. does not handle 0/0 as an ar...

#

Expected behavior

something broke since 5~ commits ago:
Think this is culprit: https://github.com/PaperMC/Paper/pull/5678/files

Observed/Actual behavior

Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "originals" is null
at org.bukkit.craftbukkit.v1_20_R3.inventory.CraftItemStack.asNMSCopy(CraftItemStack.java:67)

caused by https://github.com/PaperMC/Paper/pull/5678

Steps/models to reproduce

org.bukkit.craftbukkit.v1_20_R3...

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

Stack trace

[10:17:02] [HikariPool-1 housekeeper/WARN]: [com.zaxxer.hikari.pool.HikariPool] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=46s290ms303ยตs537ns).
[10:17:02] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH  - git-Paper-196 (MC: 1.20.1) ---
[10:17:02] [Paper Watchdog Thread/ERROR]: The server has not responded for 38 seconds! Creating thread dump
[10:17:02] [Paper Watchdog Thread/ERROR]: -------...
rustic folioBOT
rustic folioBOT
#

Stack trace

[15:04:00 INFO]: Booting up Velocity 3.3.0-SNAPSHOT (git-00ef92bc-b312)...
[15:04:00 INFO]: Loading localizations...
[15:04:00 INFO]: Connections will use NIO channels, Java compression, Java ciphers
[15:04:00 INFO]: Loading plugins...
[15:04:00 INFO]: Loaded 0 plugins
[15:04:01 INFO]: Listening on /[0:0:0:0:0:0:0:0]:25555
[15:04:01 INFO]: Done (0.68s)!
[15:04:12 INFO]: [connected player] Borox1 (/127.0.0.1:55366) has connected
[15:04:12 INFO]: [server connection...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

If you're capturing chunk snapshots and only want to get block data from them (which seems like it would be fairly common) then having each snapshot perform light calculations every snapshot leaves performance on the table.

Describe the solution you'd like.

A performLightCalculations/doLightCalculations/etc boolean to the end of the existing `public ChunkSnapshot getChunkSnapshot(boolean includeMaxBlockY, boolean includeBiome, boole...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Rebased for 1.20.4

Something that probably needs to be worked out is when exactly BlockDispenseEvent should be fired for a "failed dispense". A lot of items fallback to just being spit out if their "special action" fails, like glowstone being dispensed but the block in front isn't a respawn anchor. In this situation, dispenser with glowstone inside pointing at a non-respawn anchor block, the glowstone will be spat out. But if the block in front is a full respawn anchor, the dispense will "...

rustic folioBOT
rustic folioBOT
#

Expected behavior

same string nbt data

Observed/Actual behavior

items created from 1.20.4 look like this

{"text":"","extra":[{"text":"Soul","obfuscated":false,"italic":false,"underlined":false,"strikethrough":false,"color":"light_purple","bold":true}]}

items created from 1.20.2 look like this

{"extra":[{"bold":true,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"color":"light_purple","text":"Soul"}],"text":""}

this difference has made a l...

rustic folioBOT
#

See above. In general, there is no way to handle this interaction event nicely. Naturally, Minecraft has changed their interaction packet logic ages ago, so this event has to do a lot of "guestimating" which causes a lot of problems.

And if plugins DO use this behavior, not sure if this is even worth fixing?
So with this given info, closing as wont fix.

rustic folioBOT
rustic folioBOT
#

Expected behavior

Spigot-like behaviour where when fetching a block or location with a negative Y coordinate it works like any other block or location object.

Observed/Actual behavior

`[16:37:51 WARN]: java.lang.IllegalArgumentException: y out of range (expected 0-256, got -32)
[16:37:51 WARN]: at com.google.common.base.Preconditions.checkArgument(Preconditions.java:463)
[16:37:51 WARN]: at org.bukkit.craftbukkit.v1_20_R3.CraftChunk.validateChunkCoordinates(CraftChu...

#

The min/max values for that check is not hardcoded, it's taken directly from the world's min build height and max build height.

Can you replicate this on a new world?

Yes, this is done on a new world. I can go into negative coordinates and build no problem. If I use the same code and same world on spigot equivalent version it has no problems. I originally assumed it was a problem with spigot when 1.17 came out and reported it to md5 and he told me it was a paper bug and he is corr...

#

It works fine for me on a new world.

All I had was this in a plugin, no other plugins.

    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(this, this);

        final WorldCreator worldCreator = new WorldCreator(new NamespacedKey(this, "test_world"));
        worldCreator.environment(World.Environment.NORMAL);
        final World world = worldCreator.createWorld();
    }

    @EventHandler
    public void onEvent(Ch...
#

I am able to replicate the error with this code:

@EventHandler
public void onEvent(ChunkLoadEvent e) {
    e.getChunk().getBlock(0, -32, 0).getBiome();
}

With the error (on startup):

[18:55:22] [Server thread/ERROR]: Could not pass event ChunkLoadEvent to Test v1.0
java.lang.IllegalArgumentException: y out of range (expected 0-256, got -32)
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:463) ~[guava-32.1.2-jre.jar:?]
	at org.bukkit.cra...
#

In updating to a fresh 1.20.4 world, I realized that the errors were purely coming from chunks in the nether and end, which do follow a 0-256 Y range. As such, I did not replicate the original issue, if there is one.

Smh, I didn't realize this until now but you are right. Paper must be pre-loading the chunks from the end and nether which spigot does not do and this led me to believe that the error was being thrown from me being in the server and the chunks around me loading. I wish the e...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Player.teleport should send the player immediately to the specified coordinates in the world.

Observed/Actual behavior

it seems to send the player to the specified coordinates of their current world for a split second (visible chunks load) then to the coordinates in the intended world, this behaviour I expect is not intentional.

Steps/models to reproduce

player.teleport(new Location(Bukkit.getWorld("world that isnt current world"), -20000 + random.nextInt(4...

rustic folioBOT
rustic folioBOT
#

Link to stacktrace:
https://hastebin.com/share/ixuwoyexos.php

Cords that started all of this:
-2515 -40 2761

Seeds:
minecraft:sculk_patch_ancient_city: -4755398315285006202
minecraft:sculk_patch_deep_dark: 1247478299647611546
minecraft:sculk_vein: 1755271082032438584
world seed: 4945930993236416567
Plugins:
Bukkit Plugins:
- Advanced-eHideTags, AntiPopup, ArmorStandEditor, AuxProtect, AxGraves, BanAnnouncer, BookOnline, Brewery, ChatStyles, Check, Citize...

rustic folioBOT
rustic folioBOT
#

I can't seem to reproduce this, teleporting the player I do not see any visible "flash".

[14:30:09 INFO]: Location{world=CraftWorld{name=world},x=-10227.0,y=118.0,z=-8749.0,pitch=0.0,yaw=0.0}
[14:30:10 INFO]: Location{world=CraftWorld{name=world_nether},x=-12129.0,y=118.0,z=7047.0,pitch=0.0,yaw=0.0}
[14:30:12 INFO]: Location{world=CraftWorld{name=world},x=-16924.0,y=118.0,z=3809.0,pitch=0.0,yaw=0.0}

Switching worlds with teleportation and then printing to console each tick the...

rustic folioBOT
#

The server implementation of the properties feels needlessly complex. There doesn't have to be separate classes for every type that needs to be converted, like 90% of them are just calling 2 methods anyway.

I'm also not following the need for "accesses".

For getting via an item property: An item property key be attached to some adapter/converter/whatever which takes has a method which takes in a CompoundTag and the key, goes to the path that key has, be in display.Lore, CanPlaceOn, wha...

rustic folioBOT
#

Expected behavior

The event will be called in any case, including if event.getPlayer() will untrack event.getEntity() (other Player), as before in Paper 1.20.1

Observed/Actual behavior

The event is called only if event.getEntity() (other Player) was untracked due to movement/teleport far away from event.getPlayer() but they are both in the same world.

Steps/models to reproduce

Join the game from two accounts (or ask a friend to help) and place both players in ...