The goal is not to be the "best solution", but simply to give players the opportunity to build on the spawn without having to come straight to them with operators.
Operators could then ban players or do other things. In this sense, a permission here would make more sense than coming around the corner with the operator or the whole plugin horde.
#paper
1 messages ยท Page 8 of 1
I would like to point out that either nobody is allowed to have OP or the spawn protection must be set to 0. There is no in-between. This would be a way to allow this intermediate path and keep the server vanilla as much as possible. Because WorldEdit/FAWE and WorldGuard on top only to allow people to build on spawn via "flags". I think that's excessive from my admin and dev point of view
I mean, this way you are adding a permissions plugin into the mix.
Something that may also not be present on the "vanilla" server. The plugin "horde" is now 1 plugin instead of 2. Still with the same previously stated issues and now you install one permissions plugin instead of two (WG + WE) to allow builders to make use of a barely functioning protection mechanism.
I digress however, while I personally don't care for this patch, other members might so we can leave this up for discussion.
Found a bug: When the piston does not move a block during retraction, the event PistonRetractEvent will show an opposite facing compared to when it does move a block.
These two should use to enumdirection.getOpposite() to fix that:
https://github.com/PaperMC/Paper/pull/9258/files#diff-e7381a22d3936796a90f4898d99ec21d6099cc8e49f45267c11841c942feb240R78
https://github.com/PaperMC/Paper/pull/9258/files#diff-e7381a22d3936796a90f4898d99ec21d6099cc8e49f45267c11841c942feb240R108
However ...
Expected behavior
Adjusting the config option ticks.per.mob-spawner should effect how often spawners tick/how often mobs are spawned from them.
Observed/Actual behavior
Setting this value to any number appears to have no effect.
Steps/models to reproduce
Set the number to default of 1 or 2 and then compare by setting it to a high number of 50.
Plugin and Datapack List
No plugins, clean paper server
Paper version
version
[03:46:06 INFO]: This server is running P...
I was able to reproduce this on a new world with a simple test case:
@EventHandler
public void on(AsyncStructureGenerateEvent e) {
e.setBlockTransformer(new NamespacedKey(this, "hey"), new BlockTransformer() {
@Override
public @NotNull BlockState transform(@NotNull final LimitedRegion region, final int x, final int y, final int z, @NotNull final BlockState current, @NotNull final TransformationState state) {
return current;
};
});...
- Updates the wrapper-validation-action to v2,
- Superseds the old gradle-build-action with the new actions/setup-gradle step instead,
- Updates github-script to v7.
Please do not open pull requests from the master branch, create a new branch instead.
That but on new branch cuz i forgotten.
There exists an item duplication error associated to this issue: vid coded a quick bandaid that disabled block place/breaking on the server while we look at a more permanent solution: jar
Are you using the newest lootin version from spigot (or the discord fix from earlier), in a world that hasn't been generated yet and set
`use-new-structure-generate-liste...
Every tick that the door is being progressively damaged to its destruction.
Is your feature request related to a problem?
I want to send virtual blocks (tile entities, here: Skulls/Player Heads) to the individual clients, without changing blocks on disk.
There is already the very promising experimental API Player#sendBlockChanges(Collection) and a Player#sendMultiBlockChange(Map).
The problem however is that the latter is not sufficient for tile entities, only for simple blocks that require no special block state.
The former feels sufficient, however ...
The underlying packet doesnโt support sending block entities with it. Itโs ideal that you most likely send this separately.
But it could be argued having a combined one may be useful and could be bundled together
[PaperMC/Paper] Issue opened: #10340 Connection failed. Please try again or contact an administrator
Expected behavior
Successful connection to server
Observed/Actual behavior
Connection failed. Please try again or contact an administrator
Steps/models to reproduce
https://github.com/PaperMC/Paper/assets/107011324/0309e72a-0479-4ad3-81bf-591f0bd73e81
Plugin and Datapack List
Plugins:
TCPShield, ViaBackwards, ViaVersion
Datapacks:
There are 8 data pack(s) enabled: [vanilla (built-in)], [file/coordinates hud v1.2.2.zip (world)], [file/real time clock v1.1.2.zi...
This is generally not the place for support (nor do we support offline mode), and plugins like TCPShield will generally prevent direct connections as an aspect of their function
You know, that would probably be the problem. I canโt believe that I overlooked that. But thanks for your time.
Oh, so you're saying that the method that takes in a Collection<BlockState> is actually not supporting the block states and is only used as a convenience type for (Position, BlockData)? Then I'd argue that the method is even misleading and would deserve a javadoc hint at least.
I don't know how old that overload is already, but maybe it would even make sense to have a behavior change on that method, then? Because basically if I take a BlockState snapshot and would use that method to ...
Im not sure if its definately related to that, but not only spawners are taking longer to spawn, but also are spawning less mobs on single spawn (always one and according to mc wiki should be four)
Hello,
I noticed that the ParticleBuilder class was missing methods for setting the color transition data and lacked the functionality to be cloned. So I added them with the same logic as the other methods so it fits with the rest of the class.
Thank you :)
Please do not open pull requests from the master branch, create a new branch instead.
Managed to reproduce it with nothing but just sword (not even knockback)
@Warriorrrr I have the same issue with my earth map. How do fix this? Is there a plugin?
@Warriorrrr I have the same issue with spawners on my earth map. How do fix this? Is there a plugin? It would take ages for Chunky to load all the chunks.
if chunky is not good enough for you then just ignore the errors
it's not possible to have a faster fix than using chunky
@EdvinasBaranauskas Can you please provide a video? / confirm if this is vanilla behavior too?
Expected behavior
According to the documentation:
https://docs.papermc.io/paper/reference/global-configuration#logging_log_player_ip_addresses
This option to false would stop logging of player IP addresses to console and logs.
Observed/Actual behavior
According to the documentation:
https://docs.papermc.io/paper/reference/global-configuration#logging_log_player_ip_addresses
This option to false would stop logging of player IP addresses to console and logs, but is stopped workin...
The documentation is outdated. This config option is present in the vanilla game under the log-ips property in the server.properties file. Upgrading from old versions would have migrated said value to the server.properties.
I'll close this issue on this repo and open a PR to remove it from the docs :+1:
Ah, So I can now stop the logging from server.properties. Maybe add a note to the docs for users running older paper versions only ;)
I also run a few SMP's with an older paper version, and there it still works as exp[ected. Hence the bug report.
just wantet to say very nice that this was added. really wantet that for a bit now.
Yea, I mean, when you upgrade your sever we have a migration that moves this and properly removes the configuration option.
I don't think we have a docs thing yet for "moved" options, might be worth adding that, but yea, for now just a quick fix.
Is your feature request related to a problem?
Currently, the API does not have any way of getting information about the reason a chunk was loaded, by what (load ticket type), and at what level it was loaded (entity ticking, redstone ticking) (ticket level). This would be really useful information for debugging and administration purposes. Especially to quickly find what is causing lag, where, and who made it, that would be really useful. Currently, this is only possible with workarounds ...
Partially-relevant patches we run for something to this effect on our fork:
https://github.com/Cryptite/Slice/blob/master/patches/server/0035-ChunkStatusChangeEvent.patch
https://github.com/Cryptite/Slice/blob/master/patches/api/0019-ChunkStatusChangeEvent.patch
As title says it - for commit history of this dependency, check here.
Welcome to paper :tada:
Thank you for first first PR to the project!
Your patch change was incorrect as it did not update the patch index numbers, I fixed that for you.
Make sure to check up on the CONTRIBUTING.md file.
Additionally, I changed the nullability of the passed colours to NotNull.
Beyond that, the changes look good tho :)
Can you review my changes to make sure this still fits what you were hoping to get merged :)
We should create an issue targeting 1.21 / 1.20.5 adding support for argb.
Note this is a bit misleading as a lot of other particles can have colors that may not have it defined this way. (Off top of my head, music notes)
With a heavy heart, I'll close this PR after some more discussion.
The spawn protection logic exists, but is by far enough to protect your spawn.
If you want builders to be the only ones building and changing your spawn, you'll need a proper plugin like WG anyway.
The fact that WG requires WorldEdit is, to that degree, annoying and I am unsure if you can lobby them to bundle some form of "minimal region selection" bs, but it doesn't change the fact that this permission flag is not useful...
de620b8 Clone mutable types in events when changes are ... - Machine-Maker
Thanks for the feedback. I will hold it in my own fork
Ok, I think the correct solution is for getDirection to return the same value regardless of if its an extend or retract, just returning the direction the piston head is relative to the block itself.
88419b2 Do not copy profile data if profiles are the sa... - electronicboy
[PaperMC/Paper] branch deleted: fix/profile-copying
Is this still being worked on?
Hello! I was working on my bachelor thesis lately so i was not able to fully work on this.
Will continue soon!
Upon testing this found that clicking the recipe book item does not move the items in your inventory to the crafting grid. 
Why?
Even for default "invisible" entities like interaction or item_display the Hitbox and line of sight is always visible when pressing F3+B. This can be a problem if they should be hidden.
Some of the diff in the server patch can be moved back to the patch that created it, such as simple renames, like the hasExactIngredients but that doesn't have to be done now, can be done before merging.
We also need to make it clear that mutating the stack within the Predicate provided in the create method does not support mutating the stack in an way. I don't want to open that can of worms, and I also don't want to copy the itemstack each time that predicate might be called.
This also has to clone each itemstack in the recipe book examples because ItemStack is a mutable type.
I would move these methods up 1 level to be on RecipeChoice itself and named createPredicateChoice
An alternative would be to just make PredicateChoice a top-level class next to RecipeChoice and have create methods in it. Not a fan of the static factory methods inside an inner class.
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MeFisto94 <MeFisto94@users.noreply.github.com>
Date: Fri, 22 Mar 2024 01:11:48 +0100
Subject: [PATCH] Make Player#sendBlockChanges support actually updating the
BlockEntity
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 206520f6f20b2e48b1eefdd4edb26510b88e4c92..c3776d5bb7fae624979ffc2f73bf266966acf81d ...
Hey!
Whenever I code plugins, I must choose between saving my game data via PersistentDataContainers or a separate solution.
Normally, I prefer the PersistentDataContainer since you don't have to worry about the data being saved by the Minecraft server.
However, if you want to store larger objects with PersistentDataContainers it gets quite handy to store all the data.
That is why I have implemented PersistentDataObjects. They are added to PersistentDataContainers and implement seriali...
Welcome to paper ๐
Generally, i can see the need to delay serialisation. Iirc we actually chatted about this a while back.
A major major problem I have with this, is the fact that we are now leaking instances and their respective plugin class loaders into the server state. This means that, if plugin A stores it's persistent data object on player 1, plugin A dies or gets disabled, we now have the server hold onto an object created from a class that is loaded from plugin As class loader even ...
[Paper] Branch feature/bytecode-modification was force-pushed to `33039cd`
Another solution is to add a method like setName(String/Component) to these senders so their names can be changed via API to something different than current default.
Would it make sense to make the flags present in the event mutable? That way plugins can directly modify the behavior of teleporting passengers/vehicles by adding/removing the flags.
For release notes of this update, They can be found here.
Would it make sense to make the flags present in the event mutable? That way plugins can directly modify the behavior of teleporting passengers/vehicles by adding/removing the flags.
Is there a use case you can provide where this makes sense?
I'd say a major reason the pre teleport events are useful is for plugins that wish to have display entities or armor stands ride on players, but of course doing so breaks if another plugin attempts to teleport with using the passenger flag. You could work around it using these pre teleport events and temporarily dismounting and remounting, but allowing them to add the flag in would make the process much smoother. Not really sure if there's really a reason against allowing flag modification - ...
Not sure, but I didn't reset the world and still have the same issue if I disable this
use-new-structure-generate-listener: false
I mean I am generally waiting for maintainers to review the diff and whether we should rename it to PrepareTeleport event. I can make the Flags modifiable but I think there it would also be nice if a maintainer could give their opinion about it.
I'm not able to reproduce the bug you're seeing there, it's only subtracting one item at a time for me with no items being destroyed. As for changing the composters max stack size, that should go into a new feature request issue so that it can be looked at seperately, since this also seems like WAI to me.
- Changed entity physics modify methods as requested
- Merged
Improve Arrow APIpatch toMore Projectile APIpatch (there was only one method there -getItemStack())
@masmc05 I can ignore the errors, but not the crashes!
The problem is that spigots API leads to inconsistent world state, need to look into removing the busted block entities from the world in order to prevent issues
The problem is that spigots API leads to inconsistent world state, need to look into removing the busted block entities from the world in order to prevent issues
Do you know plugin, that will remove these tile entities, before they crash the server?
Remove the explicit public modifiers
(Note for PR author, this is being resolved by the merger)
itemstack2 is a good name
(make sure to handle the fixups)
This will be fixed with the minecraft:enchantment_glint_override component being introduced in Minecraft 1.20.5.
- InventoryBlockStartEvent should have a setItemStack along with a fix for
CampfireStartEvent's call to use the split(1) stack instead of the stack from hand.
I think a utility method to prevent doing a copy if, in fact, the itemstack instance wasn't changed via a setItemStack call in the event. Just saves us a copy for what I think will be most cases.
9ec7dfc Move invisible setting up to entities (#10346) - FireInstall
Missing internal annotation and what is not a good name here
This is wrong and break the vanilla behavior like the event was always cancelled
This message doesn't match that check and doesn't allow -1
Missing a new line after this field
Mostly fixes for when a mutable type is used as a parameter, making sure to clone it before assigning it to a field to prevent unexpected mutation if you mutate the object after using it as a parameter.
Affect the BlockPlaceEvent
+ @org.jetbrains.annotations.Contract(value = "_ -> new", pure = true)
b600140 Add methods to change entity physics (#10334) - maxcom1
Expected behavior
Bees are exiting the hive basing on their ticksInHive value (it have to be greater than 2400). When we skip ticks, let's say 2400, the ticksInHive should increase by 2400 and the bee should exit hive, but it doesn't.
Observed/Actual behavior
ticksInHive isn't modified and we still have to wait 2400 ticks even they theoretically passed
Steps/models to reproduce
- Place the hive/nest block and some flowers, spawn a bee and wait until it collect nectar a...
After internal discussion, we've decided on having team members handle Gradle updates.
Is your feature request related to a problem?
Not a problem, but this helps a lot with servers with big world sizes
Describe the solution you'd like.
A config option in paper-world-defaults.yml that would disable saving chunks to the disk if InhabitedTime is 0
Chunks would still be generated and sent to the player, but if InhabitedTime is 0, the server just doesn't save them to the disk
Another config option that would be useful is do not save chunks that are past the border
I...
Why was this closed?
Sorry, but I don't have free time to work on this PR at the moment
I don't think this is something that needs to be in paper, as it should theoretically be pretty easy to do with a plugin that just listens to the ChunkUnloadEvent, which allows preventing chunks from being saved to disk
Last I knew, chunks are already saved during chunk generation, cancelling saving here is likely not going to make much of a difference
Is your feature request related to a problem?
So, there's been an ongoing issue with Bukkit and anvil inventories that seems to have persisted for quite some time. It's been rather frustrating, to say the least. Essentially, when attempting to create an anvil inventory using Bukkit's createInventory method, things just don't function as expected.
The crux of the problem lies in anvils created this way ending up as type CraftInventoryCustom instead of the expected CraftInventoryAnvil. ...
However, let's be honest, that's not a universal solution. There are instances where greater flexibility is required.
Could you perhaps expand on the problems you have with this method?
I use that method to open a text input GUI and have no problems customizing the behavior with the different inventory events that are already in the Paper API
in some cases you want reusable inventories
also it is not possible to define a custom name for the inv when using player open anvil
Yeah, applying a custom name is currently very annoying, because you need to override the title in the InventoryOpenEvent, but I already opened a PR that alleviates this problem (#9658).
Iirc making the inventory reusable is not really possible, because the real inventory is tied to a player, but custom inventory holders would be indeed nice for easier handling of events
I think anvils are not player but location bound
A redo of #10298 since the original author doesn't have enough time to work on their PR.
Turns out I was playing on this exact version for over 3 months lol. I was wondering why striders took damage
No need to reference the event itself in that link since you're already in that class
The second part of the name is not needed and implicit and no dots are required at the end
This is redundant with the interface
This field should be at the bottom of this group
This is not resolved yet
This change is not needed
I got this error when i try to test the EnchantItemEvent: https://pastes.dev/b5KQ0vJydM seems paper doesn't check if the itemmeta is null but it shouldn't be null in the first place for the item i tested (a sword) seems the amount is zero in that case. This is done using the new withType method on the ItemStack. You should probably override this method in the Craft impl too to avoid converting a CraftStack into an api one with this method.
The code is just: e.setItem(e.getItem().withType(Mat...
Missing description of this parameter
Duplicate - before the comment
Missing description of this parameter and this should be moved after the getItem() method
Expected behavior
Changing the maximum length of the page, and max number of bytes in a page to -1 should allow for the player to use these books without these limits.
Observed/Actual behavior
The "Book too large!" kick seems to activate no matter what the config options are set to, page-max seems to work with all positive numbers up to 2147483647 so it is set to that, but the maximum length of page seems to be unchanged no matter what is in the config.
Steps/models to reprodu...
This is basically a feature request, not a bug report
Ah, I thought this would be considered a bug report. From what I saw in console the server doesn't start and gives you an error if any of the values are too high/low, so I thought the values I have currently would be fine. Would it be possible for if it is set to a negative number or just -1, for the check to be disabled?
hmm im curious about if is better a config or allow plugins alter this directly by code (method)
what is this diff bruh
You mean a lot of modified files? One patch was dropped (merged into other), so patches with higher numbers (after dropped patch) had their name changed
Stack trace
2024-03-25 19:03:20,574 main WARN Advanced terminal features are not available in this environment
[19:03:20] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853]
[19:03:20] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.1 by Eclipse Adop...
Is your feature request related to a problem?
It is currently impossible to get the base temperature of a vanilla Biome from its enum type.
These are hardcoded values used by the internals of the server that are however not exposed through the API.
As specified by the Minecraft Game Wiki:

###...
- Structure (can already be defined inline in datapacks
- PatternType (can be defined inline in 1.20.5 data components)
- MusicInstrument (same as above)
This sentence is kinda weird (copy paste mistake?). Maybe reformat to something like
+ * The progress of the block break
+ * <p>
+ * The progress ranges from 0.0 - 1.0, where 0 is no damage and
+ * 1.0 is the most damaged
[PaperMC/Paper] New branch created: api/allow-self-unlist
4957fc1 Allow player-list API to self un/list - electronicboy
This is supported behavior by the client, there is no real reason, to my understanding, to prevent this
Maybe we could add a configuration option for that?
API behaviour should generally not be gated by a config file, if we wanted to keep the existing behaviour we'd need an allowSelf boolean, but, I generally do not see the need for that
Allow Minecarts and boats to be ticked from any distance
Resolved, thanks lulu.
CraftBukkit, Spigot, and Paper have all, for a long time, made changes to the server that changes the behavior to differ from the vanilla game. This is not always wanted by some server owners (see https://github.com/PaperMC/docs/issues/21 and https://github.com/PaperMC/docs/pull/326).
One solution would be to introduce the concept of multiple different configuration presets:
- the "recommended" preset, which would be what our current configuration becomes
- the "vanilla behavior" preset,...
Proper Paper comments are missing.
See the formatting section in the contributing guidelines.
Your stream was still fun to watch xd.
Maybe should add a configuration option for this?
Incorporating it into our existing start script generator sounds like a really good idea. This allows the majority of the server (which are usually less than 10 player concurrently) to enjoy a default that is closer to the Vanilla gameplay experience. ๐ฏ
Hi, is there anything I can do to help this PR get merged at some point? It's been 2 years and I still need this API...
1d0bd47 build: Update paperweight to 1.5.12 and Gradle ... - jpenilla
[PaperMC/Paper] New branch created: pw-gradle-update
Expected behavior
The player would be kicked when floating for over the set value of 80 ticks .
Observed/Actual behavior
The player is not kicked when floating for over 80 ticks .
Steps/models to reproduce
Create a simple client mod that sets player.abilities.allowFlying to true (even indirectly). Join a paper server in the survival gamemode and float for over 80 ticks (4 seconds) next to a block. you will not be kicked. Go 2-3 blocks away from any other blocks and wait for 4...
The fly kick occurs exclusively within this if-block:
if (this.clientIsFloating && !this.player.isSleeping() && !this.player.isPassenger() && !this.player.isDeadOrDying()).
im sure if this isnt added someone will want it, but a "best performance" preset that optimizes things at the cost of breaking vanilla features would be good. of course some settings exist that might need to be fine-tuned by a server owner based on hardware or player behavior, but these settings could be excluded.
i also just wanted to throw this out there, even if it might be a bit out of scope, but if its possible to create presets your own presets (which im sure someone will have some r...
im sure if this isnt added someone will want it, but a "best performance" preset that optimizes things at the cost of breaking vanilla features would be good.
This just reminds me of the various optimisation guides over the years which don't really document what a recommended setting they suggest does, or some server owner followed it blindly and now some mechanism doesn't work because they explicitly disabled the very thing they're testing, etc...
Expected behavior
Get dropped items normally, or throw a more appropriate exception
Observed/Actual behavior
[19:18:21 ERROR]: Error occurred while enabling KioCG-TEST v2021 (Is it up to date?)
java.lang.NullPointerException: Cannot invoke "org.bukkit.craftbukkit.v1_20_R3.CraftWorld.getHandle()" because "this.world" is null
at org.bukkit.craftbukkit.v1_20_R3.block.CraftBlockState.getDrops(CraftBlockState.java:359) ~[paper-1.20.4.jar:git-Paper-462]
at org.buk...
This is 100% expected with the way spigot designed this, there is no real way to fix this directly as-is which isn't somewhat stupid
Is your feature request related to a problem?
Not really, rather general code style
Describe the solution you'd like.
When working on a Jetbrains plugin I was positively surprised about how nice the plugin system works. I came across two patterns that I would love to use in Minecraft development and wanted to throw them in as ideas here.
Disposables:
A simple interface like Closable and AutoClosable, offering a void dispose() method. The dispose method is not similar to ...
Thank you for the suggestion!
I am unsure if implementing either of these suggestions is something I personally think benefits the API enough to justify the tremendous amount of diff we'd have to maintain.
Disposable
The existing code does not care for the concept of object lifetimes on a fundamental level.
A world is managed completely different from a plugin or entity.
There is already events for this if plugins care for it. Implementing a observer like approach that automagicall...
It shouldn't throw an NPE, but rather a different exception when it checks for a world on the BlockState.
This is a weakness of Mojang's "anti-cheat". The same bypass is possible on vanilla servers, and is most likely due to slime blocks, ladders, or similar blocks.
Paper generally does not fix issues with the vanilla anti-cheat. Even if this specific issue was fixed, there are many other flight cheats that can easily bypass the built-in checks. And it is not really feasible to maintain what would essentially be a Paper Anti-Cheat.
The general recommendation is to simply install one of the...
Backport some relevant stuff from the generators branch that fit into the main branch
- Mark the bundle item as experimental, the sounds are so there are no reason to not mark them
- Add
PinkPetals#getMinimumFlowerAmount, like MachineMaker said in the original PR any int property that doesn't start from zero should have a minimum method (exception is the composter caused by the levelled interface). - Deprecate
MemoryKey#SNIFFER_EXPLORED_POSITIONS, this key use the wrong generic type ...
+ * @deprecated this constant uses the wrong generic type, the sniffer now stores different positions
+ * from possibly different worlds. Use the relevant methods in {@link org.bukkit.entity.Sniffer} directly
Comments aren't strictly necessary since this is editing a Spigot class. A config option would definitely be nice, but can also be added outside of this RP
I get your point, there is actually no reason this should be part of paper explicitly. Especially Disposable could be a pretty nice library on its own. Here is btw the jetbrains explanation of how Disposable works. They use them in combination with their event system and listeners can be linked to a disposable to restrict their lifetime to that object too (for example a world specific listener to a world i...
Should probably also be noted on the method javadoc?
I would deprecate MemoryKey#SNIFFER_EXPLORED_POSITIONS for removal, if it causes corruption issues.
Expected behavior
If you disable gravity and friction for an item spawned in the air and give it either an upward or downward velocity, it should fly at a constant speed forever in the chosen direction, provided there's enough space.
Observed/Actual behavior
The item will start to reduce it's velocity on the y-axis. It does this until there is no more movement on the y-axis. This should not happen since gravity or friction should not be affecting the velocity at all.
Steps/mod...
Is your feature request related to a problem?
There is currently only one event that handles when player quits from the server, the PlayerQuitEvent. Unfortunately that event only works for players that were able to successfully connect to the server. Currently there is no event that is letting users handle disconnects from the server during the login phase.
Describe the solution you'd like.
We can add an event like LoginDisconnectEvent that lets plugin access the connection d...
This event is guaranteed to never fire unless AsyncPlayerPreLoginEvent has been fired beforehand
Might be clearer if we use EXIT_END_PORTAL (or END_EXIT_PORTAL) here to avoid confusion with activating the portal in the overworld.
Fixes #10367.
Title. Don't slow an item entity down vertically when they have friction disabled, just like we currently do horizontally.
yes, updated the doc thanks
This goes into a double conversion (Material -> Item (internal) -> Material) for no reason? Also you can set the item meta directly using the regular constructor.
45d1486 build: Update paperweight to 1.5.12 and Gradle ... - jpenilla
[PaperMC/Paper] branch deleted: pw-gradle-update
Is your feature request related to a problem?
--forceupdate doesn't work multithreaded and it's too slow for updating big worlds. updateing 15k*15k world took 30 minutes.
Describe the solution you'd like.
make the world updater update chunks parallel not sequentially.
Describe alternatives you've considered.
there is no alternatives.
Other
have a good day.
It may be worthwhile to add a startup flag to control the number of threads.
Just pointing out https://github.com/PaperMC/Paper/pull/10154 in case the TODO item gets overlooked
This would be extremely useful, PlayerPrepareTeleportEvent sounds like a better fit however
It already is threaded, but the math for determining cores could maybe be less restrictive
int threads = Runtime.getRuntime().availableProcessors() * 3 / 8;I thing math needs to be improved becouse i give 8 cores to the folia for test and it peaked at 400%(1 core=100%) its half the max speed of my hardware. Btw when i give 16 cores it peaked 1000%(1 core=100%).
Is your feature request related to a problem?
Players sometimes connect to an old IP they found in chat and get met with "This server requires you to connect with Velocity."
I'd like to configure the message, as very little players know what that means.
Describe the solution you'd like.
I suggest a new field in the messages section of paper-global.yml that makes this configurable.
The code containing the message is found in 0774-Add-Velocity-IP-Forwarding-Support.patch
D...
It's somewhat intentional that we don't allow replacing messages which are generally only visible due to lower than recommended security setups
Bug is still a thing. When we can expect it to be resolved? Also: https://hub.spigotmc.org/stash/users/derfrzocker/repos/craftbukkit/browse/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmor.java?at=fixes%2Fskull-meta-note-block-sound
In spigot it is caused by slim item type list. Idk if same problem is here.
There is a PR which is linked but it needs rebasing and testing
Expected behavior
Only the respective PlayerInteractEvent should be called
Observed/Actual behavior
When a player tramples farmland, the BlockFadeEvent is called.
Steps/models to reproduce
Cancel the BlockFadeEvent and trample farmland
Plugin and Datapack List
Paper Plugins: CityBuild, Commander, Protect, Tweaks, VanillaBans, VanillaMSG
Bukkit Plugins: FastAsyncWorldEdit
There are 5 data pack(s) enabled: [trade_rebalance (feature)], [bundle (feature)], [vanilla (bu...
This event call has existed for 6 years now, while not the best event for the operation, I'm not sure removing it is a good idea, especially as it covers missing usecases. Maybe a more accurate event could be substituted, but, this will likely not change
The proposal suggests that nothing should happen if the config already exists and the argument is added. This, in my opinion, can be confusing in two ways:
- The player adds it to an existing server, expecting the e.g. vanilla config to take effect, but it doesn't.
- The player has the argument when initially setting up the server, but then removes it, expecting Paper to use the default configuration, while it keeps the pregenerated profile-based configuratuon.
While I don't have an...
This patch fixes https://github.com/PaperMC/Paper/issues/10022 and https://github.com/sachingorkar102/Lootin-plugin/issues/24
When using WorldGenRegion#setBlock on a block position where a BlockEntity exists it doesn't remove the old one, this creates a broken state in the world and makes the clients crash due to an internal server error.
To fix these issue, I'm removing the BlockEntity when WorldGenRegion#setBlock is set (to fix new worlds) and I've changed the LevelChunk#tick method t...
Please do not open pull requests from the master branch, create a new branch instead.
This patch fixes https://github.com/PaperMC/Paper/issues/10022 and https://github.com/sachingorkar102/Lootin-plugin/issues/24
When using WorldGenRegion#setBlock on a block position where a BlockEntity exists it doesn't remove the old one, this creates a broken state in the world and makes the clients crash due to an internal server error.
To fix these issue, I'm removing the BlockEntity when WorldGenRegion#setBlock is set (to fix new worlds) and I've changed the LevelChunk#tick method t...
but, we're just about to add a new entry, how would this change anything?
The entry is added only to the pendingBlockEntities map, by default if there is something in the real blockEntities map it stays there (at least for ProtoChunks)
The issue is that if we use the AsyncStructureGenerateEvent with a block transformer it's going to access the BlockEntity and so WorldGenRegion creates it, but if that block is later changed the old block entity is still there because it's not removed from the blockEntities map
Check WorldGenRegion#getBlockEntity
The paper start comment should be moved a line up and that diff can be somewhat reduced, and the end command should copy the start description; merger can deal with this, however, if desired
@electronicboy I found another issue related to this (even if it's not the same) so I'm going to make another PR to fix it
Basically, if a Sculk Sensor is in a broken state (Block and Block Entity aren't right) the vibration system makes the player crash, this PR doesn't fix it
`net.minecraft.ReportedException: Ticking player
at net.minecraft.server.level.ServerPlayer.doTick(ServerPlayer.java:856) ~[main/:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGa...
The paper start comment should be moved a line up and that diff can be somewhat reduced, and the end command should copy the start description; merger can deal with this, however, if desired
I can move the line up, how do I reduce the diff?
cleaning up the diff is moreso just accepting that the thing is going to look at bit messy, i.e. reverting the indentation changes;
I was hoping that the tick logic would get to the block entity before it blew up, will probably have to just make the server check that the blockstate is valid for any block entity sets during loading in order to remove them earlier
cleaning up the diff is moreso just accepting that the thing is going to look at bit messy, i.e. reverting the indentation changes;
I was hoping that the tick logic would get to the block entity before it blew up, will probably have to just make the server check that the blockstate is valid for any block entity sets during loading in order to remove them earlier
Yes, that's a better way to do it, do you want me to add that in this PR or another one?
generally that sorta thing would be done as a separate PR
I think when the properties are properly documented these are only going to be issues if you didn't read the documentation about them at all. Maybe this could be mitigated by change the naming to something like -Dpaper.intialConfigurationPreset or printing a warning if the server is started with the property while configurations already exist.
That seems like a much better option, because most likely, the average user will just find what they are looking for on Google and copy paste it without reading the docs. A name like that would make it clearer it's only for the initial configuration even to those who didn't read up on it.
I believe that we will be able to assist the concerns on our support channel. We have an awesome and active supoort community to take care of this type of situation.
Expected behavior
Don't send packet if client not really set item in slot.
Observed/Actual behavior
Steps/models to reproduce
Listen for ClientboundContainerSetSlotPacket and fast click item in any inventory
Plugin and Datapack List
Bukkit Plugins: FastAsyncWorldEdit, ProtocolLib, SkydustryCore, Terra, Vault, ViaBackwards, ViaVersion
Paper version
This server is running Paper version g...
Is this still an issue? I personally am unable to reproduce it. When flying towards not generated chunks in spectator with the gamerule disabled they are not being generated
Expected behavior
I expect to see the event cancel.
Observed/Actual behavior
The event is firing twice, that leads to an ItemStack duplication.
Steps/models to reproduce
I'm not sure if it's the right place to report code problem for spigot seeing the template.
In any case, here is the code to reproduce this issue :
public class TestClickBug extends JavaPlugin {
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(new Lis...
I've found something interesting when debuging event.getClick.
The event is fired twice only in creative mode.
It works fine in survival, adventure and spectator mode.
As a general note, creative mode is... special and doesn't care much for the server state and just throws whatever it has at the server instead. Hence it's also easy for it to start popping items out of nowhere - though that also means this will not happen for non-creative clients.
You are indeed right about that.
https://www.spigotmc.org/threads/inventoryclickevent-called-twice.362292/#post-3329626
It was still the case 4 years ago.
My favorite code helper (chatgpt ๐) suggests to track the last player click time and act accordingly.
If there is no solution, I think this issue can be close.
Thanks
I expected Player.hideEntity() to keep player listed in tab. I tried working around this using Player.listPlayer(), however you can't list hidden players. (I am getting IllegalStateException("Player cannot see other player")). If someone have a workaround until th...
We had like 400 different versions of asm on the classpath which is just annoying when searching for stuff.
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:
f02baa38 PR-988: Add World#getIntersectingChunks(BoundingBox)
9321d665 Move getItemInUse up to LivingEntity
819eef73 PR-959: Add access to current item's remaining ticks
c4fdadb0 SPIGOT-7601: Add AbstractArrow#getItem
be8261ca Add support for Java 22
26119676 PR-979: Add more translation keys
66753362 ...
Closing since you have already (have to) bump it in the upstream pr
(for the current changes, no amending so it's easier to review plz)
I'm trying to avoid losing old players who had the IP saved before we even setup a proxy. Why would you consider this setup "lower than recommended"?
Because your backend instances should generally not be exposed to the public internet, velocity makes it safer but it is still a security risk, especially if you're running 3rd party plugins, etc
since people on the discord have been asking about this frequently and it doesn't require more maintenance i think it is fine to add a config option to allow players to enable this.
Stack trace
My server constantly crashes, I've already scoured Google looking for information on what it could be and haven't found anything. Please help, thanks in advance.
2024-04-02-3.log
Plugin and Datapack List
Actions to reproduce (if known)
No response
Paper version
This server is running Paper...
Expected behavior
The string should disactivate. The disarming mechanic is used as an activation method for a cobblestone farm [https://www.youtube.com/watch?v=zHM2ydgLzQs] (lava flows down onto the string, activating the mechanism over and over)
Observed/Actual behavior
The string in singleplayer becomes deactivated, on Paper it breaks and drops
Steps/models to reproduce
In singleplayer (or a server with some other engine): Place 2 tripwires and a string in between, shear th...
Hello Govno,
This isn't actually a Paper issue, but an issue with one of your plugins. We also don't support offline mode servers (I note SkinRestorer being in your plugin list). Here are some helpful troubleshooting tips you can have a look through.
Cheers!
"If you see a world save or edit, then it means you did far more than your server can handle at once"
Increase server memory or remove voracious plugins (use Spark and Memory analyzer tool)
@Govno123333
Doing a double steal to make the original PR author the author of this commit
Both could use an example, like a skeleton holding a bow, but otherwise fine
e709245 Add config option for tripwire disarming fix - DungeonDev
The issue still persists on the newest paper release.
have you tried the config option?
Yes my bad i haven't seen i need to change the parameter in config, everything works fine now thanks for help
i am going to charge you for theft lol
"If you see a world save or edit, then it means you did far more than your server can handle at once" Increase server memory or remove voracious plugins (use Spark and Memory analyzer tool) @Govno123333
the problem is its happening when i stay afk, i do nothing. And i have 12 GB RAM on my server, i think its enough memory.
The thing stalled due to disk IO, stuff like that is generally down to things messing with the disk externally, i.e. backups, etc; This is generally out of scope for the issue tracker
This PR fixes these 2 issues (https://github.com/PaperMC/Paper/issues/10022 and https://github.com/sachingorkar102/Lootin-plugin/issues/24) but for existing worlds
When a chunk loads it checks all the existing block entities and makes sure they are valid, if they are not the block entities are removed from the world.
This seems more like a bandaid fix, where exactly are these block entities being added from? I would think it would be better to patch where these are coming from.
This seems more like a bandaid fix, where exactly are these block entities being added from? I would think it would be better to patch where these are coming from.
These block entities are coming from this other issue (https://github.com/PaperMC/Paper/pull/10375), the other PR fixes it only for new worlds and this one is a fix for existing ones
Is this only an issue for old worlds that use the custom generator override stuff but then load those chunks?
Is this only an issue for old worlds that use the custom generator override stuff but then load those chunks?
Yes, because they would have a Sculk Sensor block entity where there is a Sculk Catalyst block
Then maybe we should have this under a config. Not many plugins use this system, and i'd hate to keep this workaround forever.
adding a config option generally offers a level of commitment beyond just having something sitting around for a while, otherwise, we'd need to investigate putting it as part of the forceUpgrade pathway so that we can tell people to just run that before we remove it, but, that seems meh
Expected behavior
I expect InventoryDragEvent being called, as it does with other game modes
Observed/Actual behavior
When in creative, instead of calling InventoryDragEvent at the end of the drag as usual, one InventoryClickEvent is fired per slot dragged into
Steps/models to reproduce
public class DragIssuePlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(t...
This is 100% down to how the client behaves in creative mode, the API is likely working 100% as intended from what the client is sending it
adding a config option generally offers a level of commitment beyond just having something sitting around for a while, otherwise, we'd need to investigate putting it as part of the forceUpgrade pathway so that we can tell people to just run that before we remove it, but, that seems meh
I didn't check how the forceUpdate flag works in the code but that sounds like a good idea, it's something that doesn't run everytime a chunk loads and it's a thing that servers with corrupted worlds would...
not all hosts offer the means to do stuff like that, however; is part of the concern; but, if it was a patch that we wanted to only keep for a short period of time, considering that it causes crashes, we'd need at least some tool that we can recommend to people in order to scan their worlds and clean up such busted state
I'm still waiting for this. If it's not going to become master, is there a plugin that can achieve this functionality? Is there a way to hack this into your own private server? I really don't want to move everything over to fabric.
Is your feature request related to a problem?
I'd like to be able to access and edit the item entities a player drops when they die (not just the ItemStacks) - for example, to mark them as "owned" by another user, changing their despawn time, moving them in the game world, etc - things not possible with the itemstack list exposed by the death event.
This was possible for a time with https://github.com/PaperMC/Paper/pull/7650. However, this change was reverted due to plugin incompati...
Is your feature request related to a problem?
So that players don't abuse the use of seed
Describe the solution you'd like.
You can slightly modify the generation so that you can't use the seed of the world
or this https://github.com/Earthcomputer/SecureSeed
Describe alternatives you've considered.
idk
Other
I believe that we generally decided against this because it's a fairly set of invasive changes to solve something which is relatively low priority vs all of other concerns for an issue we already have some level of mitigation for
Why only for Player? I think it would be more useful to have more a generic event like EntityDeathDropItemEvent, at least because I also needed it yesterday (and because in (Item/Entity)SpawnEvent it is currently impossible to get which mob's death led to the spawn of this Item entity).
Another idea is to add method like getCauseEntity() to ItemSpawnEvent which will return the Entity that led to the spawn of this Item (a dead entity, or the entity who threw it (player (from...
Why only for
Player? (...)
Yeah, fair. I'll amend the issue description.
add method like
getCauseEntity()toItemSpawnEvent(...)
Issue is that any changes to how often the ItemSpawnEvent is fired breaks compatibility quite significantly, apparently.
If changing the structure / generation seeds in the config files isn't enough, you can always use a datapack/plugin to change worldgen
[PaperMC/Paper] New branch created: weee
Serializing multiple items to bytes isn't trivial, so often beginners fall into the trap of using output IO streams and Bukkit serialization instead, so these provide helpful extra methods to deal with item arrays.
Also kept the serialization methods exposed in API as a sort of textbook example/nudge in the right direction of what should be used instead of object streams
hundreds of gigabytes? I have a temporary way to reduce the save file size, you can using MCA_Selector to remove any extra chunks, this is the safest and quickest way, no doubt about it, unless you end up deleting chunks with buildings in them. and then figure out a way to squeeze Cesium_Storage_Format into your server (just kidding, Cesium is still in the testing phase and probably not suitable for server integration).
try reducing the server's render distance to prevent loading unnecess...
[PaperMC/Paper] New review comment on pull request #10387: Add ItemStack array serialization methods
this should handle empty stacks too
I'd propose additionally wiring it into the SysoutCatcher or similar, so that it nags authors to stop using it. As demonstrated by the SysoutCatcher, an effective way to get plugin authors to stop using something is to get half their userbase to nag them about it.
Perhaps note in the deprecation message why this is a bad idea to use?
I'd propose additionally wiring it into the SysoutCatcher or similar, so that it nags authors to stop using it. As demonstrated by the SysoutCatcher, an effective way to get plugin authors to stop using something is to get half their userbase to nag them about it.
not instantly, that would be meh, at least give people one cycle to notice the deprecation
Perhaps note in the deprecation message why this is a bad idea to use?
Do you have a preferred message?
Is your feature request related to a problem?
Hello, we're currently having some issues due to the amount of iron golems in our players' farms. They have large quantities of Iron Golem Spawners and the Iron Golems do not despawn (contrary to Monsters).
Describe the solution you'd like.
Add an option to make the iron golems despawn.
Describe alternatives you've considered.
I've tried with plugins such as ClearLag but if players simply don't load the entities they won't get cle...
Is your feature request related to a problem?
Hello, we're currently having some issues due to the amount of iron golems in our players' farms. They have large quantities of Iron Golem Spawners and the Iron Golems do not despawn (contrary to Monsters).
Describe the solution you'd like.
Add an option to make the iron golems despawn.
Describe alternatives you've considered.
I've tried with plugins such as ClearLag but if players simply don't load the entities they won't get cle...
a203544 build: Compile against and shade the filtered j... - jpenilla
[PaperMC/Paper] branch deleted: shade-filtered-jar
I've thought about this problem before, and I'm using the following option to prevent it.
Limit the maximum number of "iron_golem" that can be stored per chunks
<paper-world-defaults.yml>
entity-per-chunk-save-limit:
iron_golem: 8~16
My server was set up before the map was generated.
<paper-world-defaults.yml>
feature-seeds:
generate-random-seeds-for-all: true
<spigot.yml>
seed-ancientcity: 200xxxxx
seed-buriedtreasure: 103xxxxx
seed-desert: 143xxxxx
seed-endcity: 103xxxxx
seed-fossil: 143xxxxx
seed-igloo: 143xxxxx
seed-jungle: 143xxxxx
seed-mansion: 103xxxxx
seed-mineshaft: 158xxxxx
seed-monument: 103xxxxx
seed-nether: 300xxxxx
seed-ocean: 143xxxxx
seed-outpost: 1657xxxxx
seed-portal: 342xxxxx
seed-s...
That's not a solution, i have this problem too
Maybe "...have a plugin prefix and therefore makes it..." ?
Just thinking slight extra clarity for the newbie dev.
Just noticed this was implemented in https://github.com/PaperMC/Paper/pull/7332, but was closed due to being stale :(
This could be merged in the patch "Fix Spigot annotation mistakes"
Letter case are not consistent across all descriptions of return/param in the methods of this block
Missing a newline between description/return
Why the override is gone here?
Somebody who can tonguetangulate better than me would be appreciated, but, generally;
This logger is owned by the Minecraft server software, for logging plugin messages, you should use a Logger from within your own contexts, i.e. Plugin#getLogger(), or create a logger for your Class (i.e. slf4j) in order to retain contextual information which is used for identifying the source of messages
Expected behavior
Eyes of Ender should point to strongholds regardless if they are outside the border because this is how it occurs in the vanilla game.
Observed/Actual behavior
Eyes of Ender don't point to strongholds if they are outside the border, only if they're inside.
Steps/models to reproduce
- Change the World Border Size to like 1000 (something out of the stronghold ring)
- Throw an Eye of Ender
- Now try changing the World Border to something within a stronghold l...
https://github.com/PaperMC/Paper/blob/master/patches/server/0113-Bound-Treasure-Maps-to-World-Border.patch
this was generally an intentional change, in part because of treasure maps loading stupid numbers of chunks which made 0 sense when you couldn't get to them. not really away of the reason why you'd still want to target inaccessible parts of the world, however
Yeah, that makes sense, I just think it could be a config option to configure whether you'd want that possible or not. At the moment I'm playing a challenge where we can increase the world border getting eventually to the stronghold, and I was just wanting to know how far it was so we knew how much we needed to grind. That's how I originally discovered this.
I think I'm fine with adding a configuration option for this. Or at least limiting this change directly to treasure maps instead of all "searching for structures" which includes other things like eyes of ender.
a774fba feat: Entity#teleportAsync method with Teleport... - bridgelol
06361fa Fix invalid block entities created during world... - QuickGlare
After a bit of discussion, I'll have a look at simply porting this check to a plugin that can perform this check via command.
Maintaining this fix in paper for a single issue caused by a shitty spigot api implementation is rather annoying, so a plugin for people affected by this seems more friendly.
I'll leave this open in case my timeline tomorrow explodes and I don't find the time for this soon.
This enables listing, unlisting and updating any of [latyncy, gamemode, displayname] for PlayerProfiles in the tablist.
Burden of tracking those listings is on the caller.
Extends the ClientboundPlayerInfoUpdatePacket class and its nested Entry class for ease of use.
bbee11f Deprecate Bukkit#getLogger (#10388) - powercasgamer
d8456ee Don't throw NPE for unplaced blockstate on #get... - Lulu13022002
acf838f Backport some stuff from the generators branch ... - Lulu13022002
Fixed imports patch should be squashed into into original patch.
what parameter in config? i still have this problem
8e75001 Disable vertical air friction when item entitie... - NoahvdAa
241d8e2 Ignore minecart in activation range (#10359) - Earthcomputer
nit: spaces between the packet factory methods like updateLatency and so on. Probably a non issue for the Paper team.
Hitting a target block with a projectile should change the block state of the target block before awarding stats/triggering advancement criteria. Currently, this happens in the reverse order.
1207162 Allow player-list API to self un/list (#10358) - electronicboy
[PaperMC/Paper] branch deleted: api/allow-self-unlist
c319868 Update patches to handle vineflower decompiler - Machine-Maker
[PaperMC/Paper] New branch created: feat/vineflower
Expected behavior
The text components on the item are correctly upgraded to 1.20.4, regardless of if there is quotes around true/false text components.
Observed/Actual behavior
The item appears to have no name/lore if quotes are present around a true/false. While the quotes were technically still considered incorrect before 1.20.4, older versions were less strict and rendered names and lore fine.
Steps/models to reproduce
On a 1.20.2 server, /give yourself 2 items:
/give...
Kinda related to this vanilla issue, https://bugs.mojang.com/browse/MC-267221. This was caused by the recent change in how vanilla serializes/deserializes components, only using straight boolean values instead of coercing a boolean string into a boolean value.
It's certainly related to that, yeah. This is probably something that should be in the vanilla DFU, but we may or may not see that in 1.20.5
Hello,
As requested by #10211 , I added some reference about InventoryDragEvent in InventoryClickEvent javadoc. I chose to describe the behaviour between Drag and Click events a bit, instead of just referecing with an @see tag. Is this ok regarding the overall convention about paper javadoc, or is this unnecessary?
+ * In case of a drag action within an inventory, InventoryClickEvent is only called at the beginning of the drag.
Could maybe be merged into the Fix-upstream-javadocs patch
Thanks for the typo, also great idea about the merging patches, didn't know about this.
Waiting for this PR, working well on my tests ! :D
Tested with:
@EventHandler
public void onCartographEvent(CartographyItemEvent event) {
final CartographyInventory inventory = event.getInventory();
inventory.setResult(new ItemStack(Material.ACACIA_BOAT));
event.setCancelled(true);
event.setResult(Event.Result.DENY);
}
Result:
Result cannot not be taken from inventory.

Tested with:
@EventHan...
I'm not satisfied with the name of this method. I think it should be send something like the other "packet-only" methods we have in the API. Something like sendPlayerTabListProfile or some combinations of those words.
I'm not sure having this method makes much sense here. These defaults are a little arbitrary. Like 0 ping? why survival? what if its a creative server? I'm not sure we need anything except the full method with all the options.
I don't think listed is a descriptive enough word to be used alone to describe this kind of API. Along with my msg about the listProfile method name, the various update names should be changed to be like sendTabListLatency, sendTabListDisplayName, etc.
Additionally, there is no method to remove a profile, only disable it's listed status. These things are separate and should be controlled separately. Send a fake Profile but also have a separate option for listing it or not. And...
For the 2 here, use the public static field CartographyTableMenu.RESULT_SLOT
Same for the 2 here. You can also use the Java 14 instanceof (e.g. top instanceof CartographyInventory cartInv)
Can be merged into the javadoc fixes, but that can be done by the person who merges it, doesn't have to be done by OP
Half of this isn't true. If its a drag, the click event isn't fired at all and the drag is fired at the end.
I would open an issue on the tracker specific to your issue here, I couldn't find one that exactly matches up. Worst case it gets closed and duplicate and linked to the one I did find.
I'm not sure we would even want to mess around with adding our own DFU/DataConverter logic to try and handle these cases if mojang didn't fix it themselves.
I'm closing this as WAI. To be clear, this only happens in the creative inventory screen while in creative mode, not in other regular inventories. The client does indeed send an individual ServerboundSetCreativeModeSlotPacket for each slot to set the contents based on the client drag. The event that is fired for each of those packets is an InventoryCreativeEvent (which is a subclass of InventoryClickEvent).
While I cannot replicate the "event firing twice bit", the duplication caused by cancelling the event is works-as-intended. The InventoryClickEvent is actually an InventoryCreativeEvent which is fired for a specific packet the client sends for any interacting with the creative mode inventory while in creative mode. It basically gives the client full control over all the items in all the slots. This packet doesn't contain any information about what kind of click or action it was as the...
I've already created an issue on the Mojang bug tracker, currently waiting to see where that goes.
I've already created an issue on the Mojang bug tracker, currently waiting to see where that goes.
Oh lol, somehow I missed that at the bottom of your issue. nice.
I too tested this and chunks were not being generated, was apparently fixed at some point.
when i tested this, iirc the behaviour relating to keeping chunks loaded (speficially with entities) differed from vanilla, might need a new report?
Is your feature request related to a problem?
I suggest an API to know if an entity or plugin can do some action. This can be useful when a server use a protection or anti-cheat plugin.
The advantage of this API is that it allows you to ignore which plugin is preventing the action. No more need to implement each plugin in maven/gradle + less known plugins will benefit from this API
Describe the solution you'd like.
/**
* Used to know if the given entity can place a block at t...
If it's not implement in Paper, the alternative is a free library plugin .
in fact, it is even an obligation for the support of versions prior to the creation of the paper api
I mean, that's long been the issue with stuff like this, either we implement a service inside of paper which lets plugins adopt this, noting that many won't because they still target 10 year old versions of the server software, or, we basically just do what vault did and throw it into a plugin, but, we'v...
Ok, I think the correct solution is for getDirection to return the same value regardless of if its an extend or retract, just returning the direction the piston head is relative to the block itself.
However it will break plugins behavior on Spigot. Especially plugins tracking sticky pistons blocks movement as on Spigot the method (for sticky pistons) returns piston head direction for extend and the opposite for retract. It's not ideal though as well because currently on Spigot normal pis...
This exposes some functionality of the underlying ChunkTrackingView.
When adding certain objects to chunks, it is often desirable to have actual knowledge as to who is currently seeing this chunk, to selectively send informations to those viewers.
This can be useful for holograms and similar functionality.
Im also not a fan of this check. I was just copying this from another paper method.
Those default values where taken from the internal EntryBuilder of the ClientboundPlayerInfoUpdatePacket.
Its honestly just a quol method. Would be nice to have a second opinion of this ^^
Yes makes sense. Ill change those.
Yes, separating adding and listing makes sense.
I would argue against using UUIDs as it carries some ambiguity (and possible confusion) with it.
You can use this.getHandle().chunkLoader.sentChunks.contains(chunk.getChunkKey()); to access the already-existing list of ChunkKeys stored by the server, rather than constructing a new ChunkPos.
I don't see anywhere that the chunk tracking view is actually maintained?
I don't see anywhere that the chunk tracking view is actually maintained?
Im also just finding out that the chunkTrackingView is pretty much unused? The getter and setter for this field are never called.
I should change the backbone to the RegionizedPlayerChunkLoader...
[PaperMC/Paper] branch deleted: fix-source-jar-for-deobfed-traceelements
Introduction
This patch added an API to get the player's proxy address.
It will be useful if the server uses multiple proxy instances that support HAProxy Protocol (frp, nginx, etc.) and wants to know which proxy instance the player uses.
How?
I added a method, which is Player#getProxyAddress. This method returns an InetSocketAddress, if the server didn't enable Proxy Protocol, or the player didn't connect with an HAProxy instance, then it will return null.
Example
...
Please do not open pull requests from the master branch, create a new branch instead.
Introduction
This patch added an API to get the player's proxy address.
It will be useful if the server uses multiple proxy instances that support HAProxy Protocol (frp, nginx, etc.) and wants to know which proxy instance the player uses.
How?
I added a method, which is Player#getProxyAddress. This method returns an InetSocketAddress, if the server didn't enable Proxy Protocol, or the player didn't connect with an HAProxy instance, then it will return null.
Example
...
+ SocketAddress proxyAddr = new java.net.InetSocketAddress(proxyAddress, proxyPort);
end comments also have identifiers
same here + you can move your stuff below all of mojangs code so you don't also have all that vanilla code between your comments.
i think i should also add there that we probably don't necessarily need to create all those variables to match mojangs style here.
Why not use the chunk key here instead of Chunk, if you opted for using keys above
Or at least provide an extra overload which accepts a key.
No way this one line caused the largest exploit ever on 2b ๐
Stack trace
https://paste.gg/p/anonymous/e5e8395390db40de8a7751cb1675426e
Plugin and Datapack List
Easy Warp
epic Homes
ItemEdit
ItemTag
Openinv
ProtocolLib
Shopkeepers
SimpleTpa
SkinsRestorer
StoneDrop
Vane- admin, bedtime, core, enchantments, portals, trifles
voicechat-bukkit
worldedit- bukkit
worldguard- bukkit
Actions to reproduce (if known)
No response
Pa...
Generally seems that microsoft broke something, running the server from a batch file should mitigate the issue
I launch server by clicking at
Is that batch file or should i create start.bat?
The recommended approach is to create a start.bat in order to start the server with a real console
It works. Thank you so much and have a nice day!
Stack trace
https://paste.gg/p/anonymous/86b2e3a03c464c0ca3536a398ca806e3
Plugin and Datapack List
Here's my class that extends BiomeProvider and is causing the server to crash.
The crash happens in the getBiome(...) method because vanillaBiomeProvider() calls the method it's in.
https://paste.gg/p/anonymous/ddc00f4c8ca14b67993e71a46b98bc6c
Actions to reproduce (if known)
No response
Paper version
[15:10:16 INFO]: Checking version, please wait...
[15:10:17 I...
Rebased, but haven't gotten to test whether everything works yet
Any chance this can get merged at some point? Adding an overflow consumer seems like the best option imo.
Is your feature request related to a problem?
There is currently no any ways to prevent individual chunks from being saved. This applies to both regular automatic incremental saving and API-based saving.
Describe the solution you'd like.
It would be very convenient to have a ChunkSaveEvent with the ability to cancel this event, or some other mechanism to control saving of chunks. Note that this event should also be called while unloading worlds too.
In addition, a `World#saveC...
+ * @return the player's proxy address, null if the server doesn't have Proxy Protocol enabled, or the player didn't connect to an HAProxy instance
Something like this?
+ @Nullable
+ public SocketAddress proxyAddress; // Paper - Add API to get player's proxy address
Stack trace
[11:13:17.302 INFO]: asd[IP hidden] logged in with entity id 16 at ([startup_world]1.5, 4.0, 1.5)
[11:13:19.661 INFO]: asd issued server command: /stop
โ[33;1m[11:13:19.669 WARN]: Called safeShutdown(wait=false)
java.lang.Throwable: Called safeShutdown
at net.minecraft.server.MinecraftServer.safeShutdown(MinecraftServer.java:1067) ~[paper-1.20.4.jar:git-Paper-"32bba4b"]
at net.minecraft.server.MinecraftServer.halt(MinecraftServer.java:1062) ~[paper-1.20.4.jar:git-...
The "Called safeShutdown" isn't present in paper, that's just for me.
You effectively give us nothing really to work with besides a StackOverflow. Usually the Exception gives you a hint where to start looking at. But it's pretty hard for us to figure stuff out without plugins. Besides that you are running on a fork. So you are generally on your own. Try to reproduce with paper and binary search the plugins. Lastly you are most likely running in offline mode. I give you the benefit of the doubt that you are running offline mode for testing.
The fact that the er...
@electronicboy Yeah that's the upstream commit I'm referencing, it's the only thing I have to go on at the moment.
@Leguan16 I've just tested in online mode with no third-party plugins or proxy, and I still get the error. I think you mistook placeholderapi for protocollib? I don't have protocollib and only mess with packets when it comes to the tablist. I'm working rn to cut out some more internals.
Ig this issue is partly wishful thinking that somebody just hadn't noticed yet.
I think you mistook placeholderapi for protocollib?
Oops yeah I misread that. And I think electronicboy already answered your question with the link. I wasn't aware of that issue :)
Hey Dymeth,
Is the ChunkUnloadEvent#setSaveChunk what you're looking for?
Lesson learned; don't be lazy, use a thread for long-running daemon tasks instead of the task scheduler with a fake plugin. Not a clue how that caused it to get stuck in a packet handler though, that's completely opaque to me.
Hey Dymeth,
Is the
ChunkUnloadEvent#setSaveChunkwhat you're looking for?
In this issue we are talking about saving chunks, not about unloading. Please read the whole original post
Expected behavior
(Typing) I expect this, testing 123 123 123 123:
https://youtu.be/s9xF8NRkRVU
Observed/Actual behavior
(Typing) I get this, testing 123 123 123 123:
https://youtu.be/gUeE7jiia1Q
Steps/models to reproduce
Java 22; typing in consoles is broken on windows with paper, works on Java 21.
Java 22; typing in consoles works fine on windows with bungeecord/waterfall.
Testing on fresh Paper install with no plugins for sanity, same result, borked.
Plu...
0e1e24c update vf again and re-apply/rebuild patches - Machine-Maker
this looks like it needs indent
maybe update this comment while we are here
looks like start/end comments might need to be moved here?
should these be moved to mcdev fixes?
move .map down a line and put the Paper end commend above that (and revert indent change on these 3 lines)
Expected behavior
Im able to check if a player is sprinting, and set if they are sprinting.
Observed/Actual behavior
Both do not work. If I check if the player is sprinting and I am sprinting, it returns false. it seems the client and server are somewhat out of sync when it comes to this, since after using setSprinting(boolean), the isSprinting() method is updated.
Steps/models to reproduce
Just run either of those methods anywhere, it wont work correctly.
Plugin and Dat...
This is likely just going to be the caveats of "player movement happens on the client"
I don't have x86 hardware worth firing up for this, so, span up the windows VM I have sitting around on this arm laptop;
- Terminal input inside of windows terminal generally seems kinda janky, using conhost provides a much better experience in general
- counter to 1, it seemed to have gotten stuck less, but, it still ends up getting locked up, it's almost as if the terminal stuff is just not reading the input for some reason, if you keep spamming it eventually seems to pick back up aga...
I'm no longer sleepy and I have confirmed this on the latest paper (This server is running Paper version git-Paper-478 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: 5436d44)) with default config and no plugins.
There must be at least one player online. That player must be moving. It's easiest to trigger if you run /stop while falling but it's not 100% reliable.
Below is another stacktrace with some additional logging I added.
- 13:22:46.554 The server was interrupt...
Inline the import please.
What is the point of a boxed long here?
The implementation requires a primitive long in the first place. Unless I am mistakes it should be using a fastutil long set.
Missing NotNull annotation.
This can also just be a default method tbh.
I'd link to Chunk#getChunkKey here via a @see or something as the concept of a chunk key, or well, its creation is at least somewhat explained there.
It seems this isn't the case. I tested with both paper and I tested(and I develop) canvas. It doesn't work on either
However the client updates the server, so shouldn't it judge if the player is sprinting?
What abt the PlayerMoveEvent?
it doesn't judge if a player is sprinting, as far as the server is concerned it just sees movement from the player. The question here is, does the client tell us if the player entered a sprinting state?
[PaperMC/Paper] New branch created: fix/stackoverflow-on-stop
d6a648d Fix StackOverflowException being thrown on serv... - electronicboy
paper previously migrated away from using executeIfPossible as this throws a RejectedExecutionException when the server is shutting down, which is then picked up by the Connection handler object and causes the player to be kicked without the intended disconnection message that comes from commands such as /stop, /restart
This was fine, because previously changes made in spigot would just prevent these packets from being executed anyways. Instead, we'll just use a marker exception to try to ...
https://github.com/PaperMC/Paper/pull/10408 - should solve this issue. The patch on our side basically causes an issue as it tries to immediately execute the callback due to the server stopping, which runs off the main thread, which then causes issues because, we're off the main thread, so the packet handler tries to reschedule a callback onto the main thread, which immediately executes because we're stopping...
removing that patch fixes the issue, but, I also implemented an alternative so...
I've tried both Player#isSprinting and Player#setSprinting, and both methods seem to work fine. Are you testing this with a vanilla client?
The question here is, does the client tell us if the player entered a sprinting state?
The client does communicate when it starts/stops sprinting using ServerboundPlayerCommandPacket.
I ended up finding the time to look,
So, the client does tell is when it enters/exits sprinting mode, it does add a modifier but also sets the general entity flag which is what isSprinting checks
<img width="852" alt="image" src="https://github.com/PaperMC/Paper/assets/1228900/f9f0c664-f75a-4a46-b532-aaa6b0ea55d0">
Just re-based my fork on to this, I got 0/10 failures whereas before I would get 9/10 failures.
It does seem to be an issue with the client after testing where the shared constant doesnt get updated. Sorry for the trouble
I've had this patch to remove dead code since June, is there any interest in it? If there is I'll merge it in properly and submit it.
Please do not open pull requests from the master branch, create a new branch instead.
I've had this patch to remove dead code since June, is there any interest in it? If there is I'll merge it in properly and submit it.
Changing this default will not affect anything unless proxies.velocity.enabled is also true, and discouraging piracy is always nice.
Please do not open pull requests from the master branch, create a new branch instead.
Original patch should be adapted instead.
I doubt that it is unused.
Changing this default will not affect anything unless proxies.velocity.enabled is also true, and discouraging piracy is always nice.
This should modify the actual patch in which this was added
Yeah I'll adapt the original patch if there's interest. It's just that I didn't want to touch the Adventure patch if there's no interest.
I've had a look over it again, the only reason this code exists is to support chat preview, which was removed after a very brief existence in minecraft. I don't understand why AsyncPlayerChatPreviewEvent is still being fired if the feature was removed, it's a nonsense event.
[PaperMC/Paper] Pull request review submitted: #10406 Update patches to handle vineflower decompiler
Should start a server and see if things around collision work as expected, but otherwise should be good
23a513c update fineflower and fix patches again - Machine-Maker
Does upstream still fire that event? The concept of chat decoration is still very much a thing, even if previews aren't. Notice that our events are called "ChatDecorate" instead of "ChatPreview". If upstream isn't firing their event anymore during that process, I am fine removing our calling of it.
Looks like they don't fire it. I checked out the base tag in Paper-Server and grep doesn't find any reference to the event.
Is your feature request related to a problem?
Actually Paper API has two events that are called when an entity is pushed or receives knockback from another entity.
This is good because EntityKnockbackByEntity of spigot doesn't allow non living entities. So I think that may be the reason why this event is marked as deprecated, it's just my idea.
EntityKnockbackEvent is very usefull to handle explosion that doesn't have a source, like an explosion by an Respawn Anchor or artificial exp...
The event is deprecated because it duplicates an existing paper event, if the paper events are missing a case, an issue should be filed for that so that can be mitigated, there's no point having multiple events for the same thing
The event is deprecated because it duplicates an existing paper event, if the paper events are missing a case, an issue should be filed for that so that can be mitigated, there's no point having multiple events for the same thing
If so, then it occurs to me to create an event that covers explosions with and without a source that includes a @Nullable getSource() method.
I'll update this pull request tonight/tomorrow with a proper commit.
By the way it looks like github built the change before there was a review, is that supposed to happen? If not then it might be because this is a draft.
The old bungee component methods still use the old limit but i'm not sure if it's worth to fix them here.
Yeah, I can't find any reference to it either in their source, so we can remove our calls to it.
Page limits? Where we're going, we don't need page limits
37db2d7 [ci skip] Update book page/char limit for book ... - Lulu13022002
526795b Update patches to handle vineflower decompiler ... - Machine-Maker
[PaperMC/Paper] branch deleted: feat/vineflower
8fe90de [ci skip] Referenced InventoryDragEvent in docu... - Hy3z
[Paper] Branch fix/stackoverflow-on-stop was force-pushed to `f8242c7`
46d462b Fix StackOverflowException thrown on shutdown (... - electronicboy
[PaperMC/Paper] branch deleted: fix/stackoverflow-on-stop
f061e76 Fix hit criteria advancement triggered before c... - eteryi
This should generally be more declarative to what this is actually exposing, as it generally feels detached from what it actually exposes
The naming here feels a bit off.
I don#t have a better suggestion at hand, but given how rare the usage of HA proxies infront of servers are, I feel like the name proxyAddress does not properly separate that this method is exlusivly for HA proxies and not normal "proxies" as the minecraft community would understand (e.g. velo/waterfall/bungee).
ModernResult and Result can probably be removed with a larger refactor
3263470 Add color transition and clone functions to Par... - ButterDebugger
All of the changes in ChatDecorator.java (ModernResult and Result) can probably be removed with a larger refactor.
Not sure how to rebase on the latest changes, it's very big.
We would like to thank you for your contribution here, however, such a feature is a bit too expansive for us to have in the API.
Mainly, we prefer that plugins defer the logic for saving themselves here.
Some PersistentDataContainers are serialized after plugins have been unloaded (e.g. Chunks) which results in ClassLoader Problems
Instead, plugins should try to store primitive data whenever possible, to prevent issues like this.
But as mostly explained by Lynx, this API has some is...
getProxyJoinedWithAddress() or is that even worse?
No use here, changed to primitive.
Unmodifiable has a retention policy of class only i think
Correct. It isn't needed at runtime, but Intellij can infer more about the returned collection via said annotation.
4445d23 Deprecate ItemStack#setType & add ItemStack#wit... - Owen1212055
Yes, I prefer that we move more towards using future registry API to register custom tags instead of adding to this.
Thank you for your contribution, regardless. ๐
It might be useful to create an event that is invoked during an explosion, regardless of where it came from. Mainly, because although I know that there are currently events that are called on similar occasions, however, these events such as EntityExplodeEvent, BlockExplodeEvent and TNTPrimeEvent do not allow modifying explosion values, such as its radius or the push that the entities receive. This does not conflict with what the friend @electronicboy commented. I would appreciate the fe...
Is your feature request related to a problem?
There is currently no way to run bukkit plugins client side
Describe the solution you'd like.
A version of PaperMC that runs client side(like forge)
Describe alternatives you've considered.
None
Other
No response
Paper is a server software and will always stay a server software. Making it client compatible would mean a lot of rewriting.
You can always run a server locally. This also allows you to play with whatever client you want instead of needing to use the loader this would be written in.
I think you should return a collection of chunks rather than the keys. If you use the getChunkAt method and pass false as the second argument, it'll just construct the chunk without generating it.
I think you should return a collection of chunks rather than the keys. If you use the getChunkAt method and pass
falseas the second argument, it'll just construct the chunk without generating it.
At least optionally. Keys is best overall but the overload could be nice.
I think you should return a collection of chunks rather than the keys. If you use the getChunkAt method and pass
falseas the second argument, it'll just construct the chunk without generating it.
I specifically chose Set because it conveys an important property: There are no duplicates in the returned collection.
An overload method returning Chunks wont be added again. I initially had it but had a convo that made me remove it.
All of the changes in ChatDecorator.java (ModernResult and Result) can probably be removed with a larger refactor. "Inline constant arguments" is a move in that direction but can be ignored if you want.
Yeah, I think we should go all the way here, not partially remove stuff
in 1.20.5, we will be getting components, and one is override_enchantment_glint
This is the merged commit, you can see the individual refactoring steps here.
I think this bypasses the isSilent check that exists in the regular logic.
The more I look into this specific issue, the less satisfied I am with fixing it on the server. The correct fix is a client-sided one (as illustrated in the mojira issue). There are other inconsistencies we are creating. The sound now has a set seed and has the exact same pitch for all listeners which isn't the case in vanilla.
I think we should just not fix this as it would be too complicated to fix from the ...
Lets put a // Paper - diff on change on the specific line in LivingEntity#handleEntityEvent that you took the playing sound call from
It might not be appropriate to have this anymore? And just pass the legacy serialized result from ChatDecorator (or the plain string if there isn't one).
These two calls to .copy() are not needed. Calling PaperAdventure#asAdventure already copies it. In addition, adventure's components are immutable, so you don't need to create 2 of these, just pass the same instance in for both params of the event.
I think we can get rid of the extra parameter all together. The result of the decoration should just be set as the unsigned content of the PlayerChatMessage like vanilla does it.
If you're referring to the conversation with electroniccat, he probably missed the boolean parameter.
Using it that way just constructs a chunk, nothing else. It's pretty much a tuple of chunk coordinates
with the added benefit of a world - which is still much cleaner than a set of magic numbers.
They aren't magic numbers, they are explicitly derived values that correspond with Chunk Coordinates and commonly represent a lighter way to store data about chunks, (longs vs a Chunk object).
Granted, a CraftChunk is still a pretty small class, but there is at least a non-zero performance impact of the mapping and allocations of sentChunks from the long->chunks and (and players usually have many hundreds of chunks loaded).
I'd still advocate for having both options, but perhaps t...
I did clarify on the conversation that I did miss the change to the behavior of getChunkAt, but at least, IMHO, that is part of the headache here, I guess most of my concerns are somewhat mitigated by the fact that we can generally assure that it's not going to create some fun and interesting issues due to world switching if you put the CraftChunk alloc in the correct place
They aren't magic numbers, they are explicitly derived values that correspond with Chunk Coordinates and commonly represent a lighter way to store data about chunks, (longs vs a Chunk object).
Granted, a
CraftChunkis still a pretty small class, but there is at least a non-zero performance impact of the mapping and allocations ofsentChunksfrom long->chunk (and players usually have many hundreds of chunks loaded).I'd still advocate for having both options, but perhaps th...
Is your feature request related to a problem?
The thing is, you can't conveniently edit effects that are overlaid from different sources. You can cancel an event and apply your own effect, but this will cause a new event in turn.
Describe the solution you'd like.
Add setDuration and setAmplifier methods
Describe alternatives you've considered.
No alts.
Other
No response
Is your feature request related to a problem?
I am running a server in China and I hope that players can enter the game with Chinese names, but they encountered an Internal Exception: java.lang.IllegalStateException: Invalid characters in username in username error when entering
Describe the solution you'd like.
I hope the paper can create a feature in the configuration file that can switch this restriction on and off
Describe alternatives you've considered.
Searching for plu...
According to official help page, it is intended behabior.
- Must haveโฏ3-16 characters
- No Spaces are allowed between characters
Accepted characters:
- A-Zโฏ(upper and lower case)
- 0-9
- The only special character accepted isโฏ_โฏ(underscore)
Because of it, MC-249324 is closed as 'Resolved (Invalid)'.
However, many players on the NetEase China version use Chinese names. This would result in them being unable to enter servers with versions โฅ1.18.2.
You can use plugins that provide 'nickname' feature for chinese names. I don't know how NetEase things work, but if they provide an API for getting chinese name, you can fetch and assign it to players automatically when they join your server.
perform-username-validation under unsupported settings
Stack trace
https://pastebin.com/XZtUkSyK
Plugin and Datapack List
[14:02:14 INFO]: Server Plugins (49):
[14:02:14 INFO]: Bukkit Plugins:
[14:02:14 INFO]: - AdvancedRegionMarket, ajLeaderboards, BattlePass, BetterFarming, Chunky, ChunkyBorder, CMI, CMILib, CoffeeProtect, CoinsEngine
[14:02:14 INFO]: CoreProtect, CustomDrops, DailyBonus, DiscordSRV, dynmap, eco, EcoJobs, EcoSkills, ExcellentCrates, FarmLimiter
[14:02:14 INFO]: FastAsyncWorldEdit, GUIPlus, HeadDatabas...
The plugins are forming a dependency loop, somebody on their side needs to break it
Stack trace
https://paste.gg/p/anonymous/8fad62fef9034ffeb1a3b925630335ae
Plugin and Datapack List
projectkorra (addons - jedcore, spirits, projectaddons, spirits - the complete set), chatex, essentialsX, LP, crazycrates, gsit, brewery, tab, placeholderapi, coins
Actions to reproduce (if known)
No response
Paper version
I can't start a server and paste output from /version, but minecraft version is 1.20.1
Other
No response
1.20.1 is unsupported
downgrading is unsupported
your paper config is invalid because you're using a paper config from a newer version of the software
Expected behavior
BlockDropItemEvent should execute for indirectly broken blocks (like if a torch was on top of a stone block and the stone was broken- the torch also gets indirectly broken). Because BlockDropItemEvent has a Player attached to it, it should only occur if the block was broken by a player.
Observed/Actual behavior
When a block is broken indirectly by a player (like if a torch was on top of a stone block and the stone was broken- the torch also gets indirectly broken)...
4a8926c "Downgrade" Vineflower to 1.10.1 release - jpenilla
[PaperMC/Paper] New branch created: vineflower-1_10_1
The main thing we lose from the 1.11 snapshots is a recent fix for redundant casts.
Honestly the last thing I'd change is to avoid copying the long set when converting to a chunk set. Looks great otherwise.
Could readd the cast to keep the original line unmodified, but probably doesn't matter/would stay like this in a later update anyways
862299b "Downgrade" Vineflower to 1.10.1 release (#10423) - jpenilla
[PaperMC/Paper] branch deleted: vineflower-1_10_1
Please do not open pull requests from the master branch, create a new branch instead.
Expected behavior
Since a while i'm developing a plugin which acts as Addon for the plugin TrainCarts.
The purpose is to send minecarts/trains and their passengers between servers in a bungeecord-network.
I didn't update it for a while and now i'm dealing with the following problem:
I'm using the PlayerSpawnLocationEvent to put the player into a minecart (Entity.addPassenger(player)) as soon as he joined the server.
Observed/Actual behavior
Recently i get this error:
`j...
The ServerGamePacketListenerImpl isn't set yet, it hasn't been created when the PlayerSpawnLocationEvent fires. This isn't a bug, you just can't use logic that replies on the connection field in ServerPlayer being set in that event.
Expected behavior
if I schedule something in a scheduled runnable then my scheduled runnable should run in the amout of ticks I specified.
Observed/Actual behavior
the scheduled runnable runs instanly
Steps/models to reproduce
try scheduling something in a scheduled runnable
Plugin and Datapack List
no other plugins
Paper version
[15:50:38 INFO]: Checking version, please wait...
[15:50:38 INFO]: This server is running Paper version git-Paper-451 (MC: 1.20.4) (Imp...
Please provide code that you believe doesn't work as intended and update your server.
Please, rebase & update this PR, I've been waiting for it for 2 years now :c
Stack trace
[07:07:55] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[07:07:55] [ServerMain/INFO]: Found new data pack file/Incendium_1.20_v5.3.4.zip, loading it automatically
[07:07:55] [ServerMain/INFO]: Found new data pack file/Nullscape_1.20_v1.2.4.zip, loading it automatically
[07:07:55] [ServerMain/INFO]: Found new data pack file/Stellarity-2-2-0.zip, loading it automatica...
Expected behavior
BlockPistonEvent should fire when a piston is activated & return the direction it fired in addition to whether or not it is sticky.
Observed/Actual behavior
The event does not fire as far as I can tell.
Steps/models to reproduce
Listen for BlockPistonEvent, trigger a piston & observe nothing even though the piston clearly fires. The event doesn't fire when blocks are pushed & when blocks are not pushed. The event doesn't fire at all.
Plugin and Datapack...
BlockPistonEvent doesn't even have a handler list, so there is generally no way you're listening to that event
Is your feature request related to a problem?
Not that I know of.
Describe the solution you'd like.
I would like the ability to set the tickrate for a particular world on a server versus a global tickrate. This would enable different worlds to run at different speeds.
Describe alternatives you've considered.
I can't think of any alternatives other than just running multiple servers instead of multiple worlds on a single server.
Other
No response
The server does not work in a manner that permits this, and I generally do not see the inclination to pull off such an invasive patch, especially pre hard-fork
I fixed, excuse my lack of sleep
Expected behavior
BlockPistonExtendEvent should fire when a piston is activated even if nothing is pushed.
Observed/Actual behavior
The event does not fire when the piston pushes no blocks.
Steps/models to reproduce
Listen for BlockPistonExtendEvent, trigger a piston which is set up to push air & observe nothing even though the piston clearly fires. The event doesn't fire when blocks aren't pushed.
Plugin and Datapack List
No datapacks & no other plugins.
Paper ver...
Expected behavior would be getBlocks() to return empty instead of the event not firing at all.
I don't see any server crash happening in that log you sent, only some errors from invalid entities. Since you are also running an offline mode server I'm inclined to just close this here
It's possible this PR fixes the issue, but I haven't tested that exactly yet. https://github.com/PaperMC/Paper/pull/9258
BlockDropItemEvent does not execute like the documentation says it does:
This event will also be called if the player breaks a multi block structure, for example a torch on top of a stone.
The documentation only mentions that items dropped by indirectly broken blocks will be included in the list from getItems, not that another event will be called for the other blocks, so the current behaviour could seem WAI to me.
BlockDropItemEvent does not execute like the documentation says it does:
This event will also be called if the player breaks a multi block structure, for example a torch on top of a stone.
The documentation only mentions that items dropped by indirectly broken blocks will be included in the list from getItems, not that another event will be called for the other blocks, so the current behaviour could seem WAI to me.
That seems extremely strange to me. Especially becaus...
Expected behavior
I expect the water to start flowing when I change the block state
Observed/Actual behavior
The water does not flow. But the block does show the waterlogged visual
Steps/models to reproduce
code:
val targetBlockData = targetBlock.blockData
if (targetBlockData is Waterlogged) {
targetBlockData.isWaterlogged = !targetBlockData.isWaterlogged
ta...
Expected behavior
That the lead do not turn into a ghost item.
Observed/Actual behavior
That the item doesn't turn into a ghost item and having to update player inventory after cancelling the event in order for the item to not render as a ghost item.
Steps/models to reproduce
Simply add this listener and just remove the if() clause.
@EventHandler
public void onLeash(PlayerLeashEntityEvent event) {
Player player = event.getPlayer();
ItemStac...
I don't see any server crash happening in that log you sent, only some errors from invalid entities. Since you are also running an offline mode server I'm inclined to just close this here
yes, it does crash, and i can show you the video, as well as the online mode log
video:
https://youtu.be/XCUpb5RJzk8?si=-gS6vIUuIK3DkCcV (it does seem like i am, the client is the one who just got disconnected, but no, it's the server)
log:
[00:02:33] [ServerMain/INFO]: Environment: Environme...
Threw together a quick plugin to iterate and process all chunks to find and remove these invalid block entities:
https://github.com/lynxplay/block-entity-bin
People that had their worlds corrupted by the respective bug may use the plugin to fix their chunk data.
Any form of issue regarding the plugin is to be opened on the plugin's github page, not paper's repository.
As with any form of world data shenanigans, backup your data before running this.
Threw together a quick plugin to iterate and process all chunks to find and remove these invalid block entities:
https://github.com/lynxplay/block-entity-bin
People that had their worlds corrupted by the respective bug may use the plugin to fix their chunk data.
Any form of issue regarding the plugin is to be opened on the plugin's github page, not paper's repository.
As with any form of world data shenanigans, backup your data before running this.
We cannot diagnose why your unsupported client setup is blowing up on a screen recording we cannot read with 0 crash info, test in a supported environment with a vanilla client and provide logs, making sure to test against the vanilla server software, etc
Expected behavior
Items in Inventory are added, and the value of the first argument ItemStack remains unchanged.
Observed/Actual behavior
The total number of items in Inventory remains the same, and the total number of ItemStacks passed in the argument is added to the total number when first passed.
The sample assumes transport from Chest to Hopper.
Steps/models to reproduce
@EventHandler
public void onItemMove(InventoryMoveItemEvent event) {
ItemStack item = event....
The InventoryMoveitemEvent is generally broken af in terms of behavior, and any fixes are likely going to generally be invasive or behaviorally breaking...
Expected behavior
The number of items set with Inventory.setItem will be reflected in the game for the inventory that can be obtained with InventoryMoveItemEvent.getSource().
Observed/Actual behavior
Even if the internal variables are treated differently, when you check the game, the changed number is not reflected, and it only performs the normal operation of transporting items one by one to the hopper.
Steps/models to reproduce
https://github.com/eventhandler
public void o...
The server generally does not care to validate the state you've modified inside of the scheduler, if you want to modify stuff, you'll have to do it yourself with the scheduler; Such is a fairly typical caveat for inventory related things, there is no real good solution here which doesn't break existing behavior/expectations for this (fairly broken) event
doubly so, you're trying to add the item that is already inside of the inventory to the inventory, such is generally going to cause undefined behavior, especially with this event being generally broken
This was an unexpected answer because the changes were reflected in Spigot Server.
Therefore, we believe that the problem is caused by a change in Paper's implementation.
What I want to do is keep adding up the items sent by the hopper each time it moves.
Does this mean that it is difficult for me to solve this problem by changing the implementation?
Chances are papers optimisations change behavior vs spigot here because there are some expectations, modifying the underlying inventory in the middle before the server performs its state modifications is going to create issues. Modifying the items that the server is trying to move is unsupported behavior here, there is a general expectation that the server is going to wipe your changes, and so you'd generally be better off using the scheduler to run after the event, this is likely not somethi...
When I checked with a plugin (EventDebug) that allows you to check event calls, it appears that Hopper is only calling InventoryMoveItemEvent.
Let's talk about actual implementation, but which event can be used to make it possible?
Or is there currently no event implemented in Paper to make such changes?
There is no different event, modifying data as the server modifies it is unexpected behavior which we cannot support.
Maybe somebody else on the team will decide to invest some time into this, but, as it stands, what you're doing there is generally unsupported under the general "don't modify stuff as the server is doing so"
is that so. Thank you for your reply.
I'm looking forward to seeing good results.
Ok, this is actually due to a missing feature. There needs to be a method added to Block to tick the fluid. We have Block#tick and Block#randomTick, but not Block#fluidTick to tick the FluidState which will trigger the water to flow. That is exactly how vanilla does it, schedules a tick for the FluidState 3 ticks after the block was waterlogged.
resolves #10391
decided to go with the config option here since adding exclusions for only ender eyes seems unreasonable
[PaperMC/Paper] New comment on pull request #10436: Fix inventory desync with PlayerLeashEntityEvent
Might be nice to only send what actually needs sending, but otherwise
I have always advocated against this, due to client-side mods that deal with inventory management. Imagine a scenario where a hotbar slot is auto filled if a stack runs out, only sending that specific slot wouldn't update the rest of the inventory.
Please feel free to test this branch and ensure that all legacy commands work the same. So, just load your server and ensure that all commands (with plugins) seem to be working correctly. This includes stuff like namespaced commands, etc.
There is now a jar attached to the PR body.
I've done some extensive testing and everything works without exceptions
Things I've tested include:
plain old bukkit commands that use Plugin#getCommand to register
commands from paper plugins t...
Expected behavior
Loaded addon
Observed/Actual behavior
Steps/models to reproduce
Fix it pls
Plugin and Datapack List
advancedlogin
eco
ecoarmor
essentials
libreforge
litebans
mbedwars
multiverse core
oldcombatmechanbics
spawn
viabackwards
viaversion
worldedit
Paper version
[09:54:43 INFO]: This server is running Paper version git-Paper-488 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: 908b814)
You ar...
The issue that plugin links to here has been resolved, so I'm not sure what its talking about. Also, your reproduction steps are not valid and the plugin is a premium closed-source plugin which makes replicating it impossible on our end.
Try updating your plugins.
I commited some changes here relating to the cloning & boxing, seems like that's gone ignored.
https://github.com/Flo0/Paper/pull/1
I made a few changes in https://github.com/Flo0/Paper/pull/1 specifically to avoid unnecessary cloning and boxing, now you've made the Set both immutable and a clone..?
I made those changes as we were preparing this for a merge today.
We need to clone both, your proposed changes would end up with an unmodifiable view returned by getSentChunkKeys (one that is updated when the player moves) while getSentChunks is a normal clone.
Additional, a view is a dangerous thing given the fact that the server maintained set is not save for concurrent access. Callers would have to clone the returned view when trying to use it off the main thread, otherwise they'll run i...
I made those changes as we were preparing this for a merge today.
We need to clone both, your proposed changes would end up with an unmodifiable view returned by getSentChunkKeys (one that is updated when the player moves) while getSentChunks is a normal clone.
Additional, a view is a dangerous thing given the fact that the server maintained set is not save for concurrent access. Callers would have to clone the returned view when trying to use it off the main thread, otherwise...
Did I miss anything in the java docs regarding this being supposed to be a view?
It wasn't even a view in the initially proposed pr given it used Set.copyOf, which constructs an array based set.
This would also still not fix the issue that youd have getChunkKeysSent returning a view while getChunksSent would not. We could work around this with a transforming collection, but I honestly do not see the point of this being a view in the first place?
You'd save yourself a single internal clone ...
Is your feature request related to a problem?
In my plugin I sometimes use Player#setAllowFlight() for a few abilities, like allowing players in cobwebs to climb around. However this sometimes causes conflicts with other plugins that add features like /fly.
Describe the solution you'd like.
Similar to the method Player#hideEntity(Plugin, Entity), the setAllowFlight method could also take a plugin as a parameter, enabling flight for a player if at least one plugin enables flight...
I don't think this is a good idea. One can make this same argument for pretty much every "toggle" in the game, and that isn't really a good idea. What I would do, is track if the player had flight before you give it to them, and then don't remove the flight when your few seconds ends if they had it before.
resolves #10177
config naming/structure might need some changes, i didn't wanna break existing configs so i just did it like this.
currently doesn't work for Raiders as those have extra checking logic in the removeWhenFarAway method, so i am not quite sure what to do about those
Did I miss anything in the java docs regarding this being supposed to be a view?
It wasn't even a view in the initially proposed pr given it used Set.copyOf, which constructs an array based set.
Idk what documentation you referred to, nothing in this PR at least goes indepth of the dangers that using a view on a different thread poses.
To clarify, I am referring to the modifications proposed by @Vrganj, in his PR wherein the methods ar...
I'll bring up the use of view again in todays merge party regarding this.
Especially in regards to server state, a plugin incorrectly using this method and potentially screwing over the server terribly feels, at least to me, worth the "cost" of copying the open hash set once.
The long boxing is a good spot, will be included.
i think your idea of just adding a getBlockStates method is pretty good (if that is possible). that way we don't break how the event functions and still provide the extra data
I'm not sold on the format for the config with this change. There are several options that I can think of that I'd prefer
despawn-ranges:
monster:
hard:
xz: 30 # or "horizontal"
y: 5 # or "vertical"
soft: 20 # just putting a numerical value would mean it applies to both (as it does now)
or
despawn-ranges:
monster:
hard: 30
soft: 20
soft-y: 5 # basically the `-y` value wouldn't even be in...
is there an existing way i can add optional configurations like that?
Alright, talked it over with the view vs non view thing with some of the team.
Generally, my argument "protecting someone from getting the set, storing it and then using it off thread" is somewhat weak, agree with you on that end.
The argument of "api precedent" however, is what we are going to base the decision of copying the set on.
There is little to no views, as said early, on the API that directly reference internal server state (as in java Collection views, Entity interface being a...
c5f68ff Add CartographyItemEvent and get/setResult for ... - pontaoski
+ public boolean locateStructuresOutsideWorldBorder = false;
As you already said, this does not currently "work", as the distanceSqrt still takes into account the y diff.
Given we already have changes to basically every line in this section, I think it would be fair to just completely rewrite this logic
in a new paper block without consideration of keeping old code around/minimizing diff (given that this isn't minimal diff either, every line is touched beyond the two discard calls).
This would also heavily improve the variable names, making th...
fc53ff5 Add Configuration for finding Structures outsid... - notTamion
Resolved thanks to @notTamion!
Update paper and set https://docs.papermc.io/paper/reference/world-configuration#environment_locate_structures_outside_world_border to true to locate structures outside of the worldborder.
You could use the regular getter here instead of the internal field
The getter isn't annotated correctly. It thinks it returns a nonnull value which isn't true since its just a Map#get.
alright i will probably be working on the custom serializer and the rewrite tomorrow
Sounds reasonable. Discourse over the matter is good enough for me. It's not that significant of a difference in terms of performance for most users, anyway. ~and I can always reflect/nms into it if i need to, har har har~ I just wanted to bring up the topic to make sure it gets its due consideration before us committing to any given API contract.
What's weird is the API in 1.19 did say it would call the event multiple times unless I'm misunderstanding it. It says "Both items will have an event call" when describing a torch on top of a stone block. So I guess somewhere down the line the "fix" someone made for it was merging the dropped items in the #getItems() list. (Because yes, I did test it in 1.19 and it does in fact, not execute mult...
Yeah, afaik, those docs haven't been correct for a while (hence the change to the javadocs in the latest version). Keeping track of blocks broken indirectly is not simple. Right now, the way the items work, is any ItemEntity that is added to the world in the "block breaking" logic is then included in the BlockDropItemEvent items list. So that's why it captures drops from indirect block breaks.
Expected behavior
the iron golems should go through the water as seen in the video from an singleplayer world of the farm
https://github.com/PaperMC/Paper/assets/47952472/6e3294e3-e7d9-4f38-a2bc-c94ac62d5a7f
Link to schematic for the farm: https://www.mediafire.com/file_premium/yazr5bqfsotxk65/Iron_Farm_Castle.litematic/file
Observed/Actual behavior
the iron golems will be stuck at the edge of the drop
Steps/models to reproduce
Link to schematic for the farm: https://ww...
Expected behavior
Sniffer responds to pathfinding; i.e. API returns true if appropriate and Sniffer makes its way to the target
Observed/Actual behavior
Sniffer does not respond to pathfinding; API always returns false
Steps/models to reproduce
test plugin code:
public final class TestPlugin extends JavaPlugin implements Listener, CommandExecutor {
class SnifferCommand extends Command {
public SnifferCommand() {
super("sniffer");
...
Is your feature request related to a problem?
Probably related to #10442.
Related to #6862.
As Minecraft moves into the future, more and more of the new mobs are mostly controlled via the new systems instead of the old ones that the current Bukkit Goals API abstracts over, and the inability to control them from the Paper API is more glaring.
Describe the solution you'd like.
A new abstraction (or perhaps retrofitting the existing one) for controlling mob behaviours
Describ...
you may need to delay setting the path by a tick or two, as there's a whole bunch of state that these pathfinders rely upon which is not set until the entity is ticked; outside of that, this stuff is generally not really within our control as it's just interfacing with mojangs system
Stack trace
---- Minecraft Crash Report ----
// I feel sad now :(
Time: 2024-04-20 23:37:23
Description: Exception in server tick loop
java.lang.StackOverflowError: Exception in server tick loop
at java.base/java.lang.String.charAt(String.java:1517)
at com.mojang.brigadier.StringReader.peek(StringReader.java:76)
at net.minecraft.nbt.TagParser.readList(TagParser.java:144)
at net.minecraft.nbt.TagParser.readValue(TagParser.java:138)
at net.minecraft.nbt.TagParser.rea...
Latest version is not a version. Please provide the specific output of /version
Closing this as it is missing a code example.
If you have a code example for your issue, feel free to post it below and we can reopen the issue :)
had to boot up the game, sorry if it took too long
[CHAT] This server is running Paper version git-Paper-196 (MC: 1.20.1) (Implementing API version 1.20.1-R0.1-SNAPSHOT) (Git: 773dd72)
You are running the latest version
Previous version: git-Paper-19 (MC: 1.20.1)
1.20.1 is unsupported. This is a crash exploit that is patched on latest 1.20.4. Update.
Yea, you are certainly not running the latest version of paper, which would be 1.20.4 build 493.
This is a known exploit fixed in said newer versions, please update ๐
but we dont have plans on updating to 20.4 yet, il have to let the server owner know as im just an admin
Yea I mean, being stuck on an outdated version is annoying and I get that, but we only maintain latest paper, which in this case is 1.20.4.
I think if push comes to shove, there is an unofficial paper build by cat out there for 1.20.1 ? or .2, dunno, that has this fixed but really the server should be updating.
Is this going to include support for resourcepacks?
Is this going to include support for resourcepacks?
Resource packs are client-side only. The server can already send resource packs to the client using the server.properties configuration or the API.
Missing java docs @deprecated tags (on all four)
Missing private constructor for a namespace-only usage of class.
I'm satisfied with the API footprint. I think we probably want to define a slightly different API contract for the things that more closely represent minecraft's implementation of brig, such as the argument type provider methods.
Ignoring "owen" level of javadocs, this should be fine :tm:.
May the wilderness of brig commands be less breaking than paper plugins.
To my understanding this has generally been well tested in the API channel and I've generally looked over this stuff here and there over the past god knows how long
Owen also said that he's signed in blood to maintain this in .4 (given that we'll likely be maintaining .4 for a tad bit longer than usual due to all the data component stuff)
yes @NBS-Paste as @electronicboy mentioned, that's indeed the Vanilla behavior there.
This question has been asked many times in paper-help Discord and my friend Kyle has made a simple plugin that allow entity to exist for an extended period of time without player within range,
https://hangar.papermc.io/Kyle/Otherside/
The source code can be viewed publicly and this "should" make most portal farm works (given that the entity is then transported back relatively quickly)
...
Please don't spam approvals unless you've done testing yourself. ๐
This PR is going to be waiting till 1.20.5, so please feel free to test with your existing setups beforehand! (With the server jar linked in the description)
Implemented the requested changes
javadocs say for removal, but the annotation doesn't? same for CommandRegisteredEvent
+ api("com.mojang:brigadier:1.1.8") // Paper - Brigadier command api
something
This should probably give a better explanation then "the new brigadier api."? Maybe a @see [whatever the new api is]?
Just an update, this bug persists on JAVA 22.0.1
This argument type is broken, the api isn't a 1:1 representation either i'm not sure if it's worth to include this one for now.
This seems to be a Powershell 5 specific issue. The console is working fine both with the good old cmd.exe, and it also works without any issues with Powershell 7.
Seems to be caused by this JDK change. As a workaround, starting the server with -Djdk.console=java.base to revert to the old JDK behaviour fixes the issue. I would recommend just using PS7 though.
I thought that I got somebody to create an issue report but I'm blind, that is likely related to the crash that people get when double clicking on the server jar in order to run it
stumbled upon this typo recently. Thought to contribute it real quick.
The -Djdk.console=java.base workaround does work on JAVA 22.0.1. Thanks for that!
Expected behavior
For the javadocs to be updated
Observed/Actual behavior
I noticed the javadocs aren't up to date
Steps/models to reproduce
The last update of paper includes new API for raids, including getID and getBossBar
but if you head to the docs, neither of those are there:
https://jd.papermc.io/paper/1.20/org/bukkit/Raid.html
Plugin and Datapack List
N/A
Paper version
N/A
Other
No response
Stuff needs to build and caches need to expire.
In the meantime you can use the Javadoc in your IDE, e.g. in IDEA by pressing Ctrl+Q while your cursor is blinking on a class/method.
Stuff needs to build and caches need to expire. In the meantime you can use the Javadoc in your IDE, e.g. in IDEA by pressing Ctrl+Q while your cursor is blinking on a class/method.
ok good to know thanks. Ive never had this happen before, just wasn't sure if it was an issue.
Is your feature request related to a problem?
Yes. Currently there's no method in API to get NMS tickTimes10s and tickTimes60s
Server#getTickTimes returns only tickTimes5s.
Describe the solution you'd like.
Deprecate Server#getTickTimes() and instead add methods like getTickTimes5s(), getTickTimes10s() and getTickTimes60s().
Describe alternatives you've considere...
[PaperMC/Paper] New branch created: fix/large-packets
Previously, PacketEncoder assumed that a packet value larger
than the protocol limit would be compressed to become smaller
than the protocol limit. However, not all packets will compress
below the protocol limit.
To try to better handle this, we will run the large packet handler
when the packet size is above the protocol limit when the packet
has a large packet fallback to avoid a case where the packet
does not compress below protocol limit (at which point, it is
too late to run the...
Expected behavior
This settings should work and ignore duplicate UUID instead of deleting entity
duplicate-uuid:
mode: silent
safe-regen-delete-range: 0
(also tested safe-regen-delete-range: 1)
Observed/Actual behavior
When I paste twice the same item_frame it deletes it and send an error in the console
[15:36:41 WARN]: [EntityLookup] Entity uuid already exists: a8d8f021-32a9-4f0a-bc6b-e3be5bdd6f6e, mapped to EntityItemFrame['Item Frame'/...
Is this going to include support for resourcepacks?
Resource packs are client-side only. The server can already send resource packs to the client using the server.properties configuration or the API.
I meant that you can for example add the resource pack to you plugin jar and set it in the plugin-yml and the server is going to automatically send it to players and merge the different resource packs form plugins.
resource packs are entirely out of scope for datapcks
Is this going to include support for resourcepacks?
Resource packs are client-side only. The server can already send resource packs to the client using the server.properties configuration or the API.
I meant that you can for example add the resource pack to you plugin jar and set it in the plugin-yml and the server is going to automatically send it to players and merge the different resource packs form plugins.
No. You can already do that using the [API](https...
I meant that you can for example add the resource pack to you plugin jar and set it in the plugin-yml and the server is going to automatically send it to players and merge the different resource packs form plugins.
I don't think that is in scope of this PR. To put it simply, it is not related to this PR.
dd6ce09 Fix reflection diff and order wrt commodore diff - jpenilla
[PaperMC/Paper] New branch created: ver/1.20.4
9cac5b6 Fix continueServerUpdate with 2-line subjects - jpenilla
d07c487 Don't use defaultToolchain method for run tasks - jpenilla
[PaperMC/Paper] branch deleted: fix/large-packets
https://github.com/PaperMC/Paper/issues/10148 since 1.20.5 is using java 21
Is your feature request related to a problem?
Mojang has for whatever reason removed the (+NBT) item lore tag in 1.20.5 instead of just renaming it to (+Data).
This makes it impossible to easily tell if, for example, a chest you have in your inventory has stuff in it or not.
Also with this weird change, Mojang created a new parity issue, as Bedrock has the (+Data) tag.
Describe the solution you'd like.
When updating Paper to 1.20.5, instead of following Mojang, just rename ...
Probably better as a plugin, not sure if itโs our realm to readd removed features.
But Paper "aims to fix gameplay and mechanics inconsistencies" and this is one?
This was rendered purely by the client, not the server; There is generally no way to support this which doesn't involve modifying items, which then creates issues with creative mode, etc
Expected behavior
I expect the EntityKnockbackEvent to also fire when a primed TNT pushes another primed TNT
Additionally, it would also be nice if there was an EntityExplodedEvent#getEntityList()
Observed/Actual behavior
The event does not fire when event.getHitBy() and event.getEntity() are both TNTPrimed
Steps/models to reproduce
Build a simple cannon like so:
Add the f...
public void onEntityKnockback(EntityKnockbackByEntityEvent event) {
which import is that?
nvm, that's the paper one, can tell with the method call on it
I believe they're talking about this:
<img width="482" alt="image" src="https://github.com/PaperMC/Paper/assets/44026893/29d08b83-1baf-4ea4-8e7f-176444719d3b">
this was client side only, a better place to re-add this would be via a mod
It's not client-side lol, ItemStack#getLore().get(0).equals("(+NBT)") on the server side returns true in 1.20.4
$ grep -R "(+NBT)" *
src/main/java/net/minecraft/client/Minecraft.java: var5.add(StringTag.valueOf("\"(+NBT)\""))
So, the value is purely added by the client as a side-effect from creative mode, it's not sourced from the server, and there is little inclination for us to hack it back in
Oh, didn't think about that client is requesting the server for an item that already contain this lore. Okay, thanks!
This part needs another look when patch porting is done. CraftBukkit deleted their craftpotionbrewer impl but paper needs it for our custom potion mix methods.
Expected behavior
When teleporting an axolotl using both vanilla commands and with Skript, to a location with a modified pitch. The pitch should be retained in the axolotl.
Changing the "Rotation" NBT of the axolotl has the same results
Observed/Actual behavior
Axolotl's location and yaw are updated but not pitch. However, when leaving the server (my localhost) and joining back, the axolotl is updated to the pitch. For vanilla teleport command, Skript teleport, and changing the Ro...
looking at the implementation of the brain system across versions, it seems stable enough that short of mojang nuking the system out of nowhere in a future update, there's not much risk in doing a mostly 1:1 exposure of the API?
the one (1) thing that concerns me is that the set of available tasks tends to fluctuate a decent amount, but mostly in the direction of adding tasks/splitting existing tasks into multiple flavours
tasks in general are a bit weird from an API perspective because t...
one thing i'm not sure about is if an API should be LivingEntity#getBrain with all of the methods similar to the minecraft implementation, or exposing the sensor/task methods on the entity itself the same way spigot did with LivingEntity#getMemory/LivingEntity#setMemory
