Skip to content

Client side stuff#8704

Open
AnOwlBe wants to merge 29 commits into
SkriptLang:dev/featurefrom
AnOwlBe:ClientSideStuff
Open

Client side stuff#8704
AnOwlBe wants to merge 29 commits into
SkriptLang:dev/featurefrom
AnOwlBe:ClientSideStuff

Conversation

@AnOwlBe

@AnOwlBe AnOwlBe commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Problem

Skript was missing what small stuff bukkit/paper offers for client side stuff & on top of that EffSendBlockChange was running on deprecated methods & class was a tad bit messy (atleast in my opinion)

Solution

Changes to EffSendBlockChange made the syntaxstringbuilder a bit more clean changed it to use SendMultiBlockChange which is much more efficient than sending a whole new packet for every single location provided (this is an up for debate thing as paper has marked Position (which it uses) as experimental so I will revert changes back for this if needed)

Progress:

  • EffSendArmorChange - allows you to fake a livingentity's armor to x for players
  • EffSendBlockDamage - allows you to fake the damage of a block for players
  • EffSendHealthChange - allows you to fake the health, food level & saturation of a player for the player
  • EffSendExperienceChange - allows you to fake the experience of a player for the player
  • EffSendHurtAnimation - allows you to show hurt animation on a player
  • ExprTime - already exists but didn't use newer registry or support client time
  • EffWeather - allows you to set the weather normally or for a specific player (already in skript needs updated registry)

Testing Completed

Manual testing completed everything appears to work flawlessly

Supporting Information


Completes: #8490
Related: none
AI assistance: just some for debugging issues

@AnOwlBe
AnOwlBe requested a review from a team as a code owner June 14, 2026 23:32
@AnOwlBe
AnOwlBe requested review from Burbulinis and Efnilite and removed request for a team June 14, 2026 23:32
@skriptlang-automation skriptlang-automation Bot added needs reviews A PR that needs additional reviews needs triage An issue that hasn't been classified or verified yet labels Jun 14, 2026
@skriptlang-automation

This comment has been minimized.

AnOwlBe added 2 commits June 14, 2026 23:32
Initial work on implementing client side stuff
Fixes conflict hopefully

test

:wq
@skriptlang-automation skriptlang-automation Bot added the feature Pull request adding a new feature. label Jun 15, 2026
@skriptlang-automation skriptlang-automation Bot removed the needs triage An issue that hasn't been classified or verified yet label Jun 15, 2026
@github-project-automation github-project-automation Bot moved this to In Review in 2.16 Releases Jun 15, 2026
@AnOwlBe

AnOwlBe commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

This is ready-for-review now

@AnOwlBe
AnOwlBe requested a review from Absolutionism June 17, 2026 01:53
public static void register(SyntaxRegistry syntaxRegistry) {
syntaxRegistry.register(SyntaxRegistry.EFFECT, SyntaxInfo.builder(EffSendExperienceChange.class)
.supplier(EffSendExperienceChange::new)
.addPatterns("make %players% see their [own] (experience|exp|xp) as level %integer% with %number% progress")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thoughts on allowing only level and only progress?
Changing only the level could set the progress to 0 perhaps?
Changing progress could keep the player's current level?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could make progress optional but I think level should be required

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The API does allow only sending progress though. Another pattern might not hurt IMO. Maybe a pattern to reset it too? Like the other syntaxes have.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could make the level optional & put progress before level & add a pattern for reset which would simply just set the experience to the player's current

AnOwlBe and others added 2 commits June 17, 2026 05:35
Co-authored-by: SirSmurfy2 <82696841+Absolutionism@users.noreply.github.com>
@skriptlang-automation skriptlang-automation Bot added needs reviews A PR that needs additional reviews and removed needs reviews A PR that needs additional reviews labels Jun 22, 2026
AnOwlBe and others added 3 commits June 22, 2026 11:34
@AnOwlBe
AnOwlBe requested a review from sovdeeth June 22, 2026 15:36
@skriptlang-automation skriptlang-automation Bot removed the needs reviews A PR that needs additional reviews label Jun 23, 2026
AnOwlBe and others added 4 commits June 23, 2026 14:04
…nts/effects/EffSendBlockDamage.java

Co-authored-by: sovdee <10354869+sovdeeth@users.noreply.github.com>
…nts/effects/EffSendBlockDamage.java

Co-authored-by: sovdee <10354869+sovdeeth@users.noreply.github.com>
@AnOwlBe
AnOwlBe requested a review from sovdeeth June 23, 2026 18:05
@skriptlang-automation skriptlang-automation Bot added the needs reviews A PR that needs additional reviews label Jun 23, 2026

@APickledWalrus APickledWalrus left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a quick look

@Example("add 54 real seconds to time of world \"world\" # approximately 1 minecraft hour")
@Example("set client time of player to 2:00")
@Since("1.0, INSERT VERSION (player support)")
public class ExprTime extends PropertyExpression<Object, Time> {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could probably be a SimplePropertyExpression

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aren't SimplePropertyExpressions more for simpler stuff this doesn't really seem simple considering its handling time of worlds & players with an object

Comment thread src/main/java/org/skriptlang/skript/bukkit/entity/player/PlayerModule.java Outdated
public static void register(SyntaxRegistry syntaxRegistry) {
syntaxRegistry.register(SyntaxRegistry.EFFECT, SyntaxInfo.builder(EffSendExperienceChange.class)
.supplier(EffSendExperienceChange::new)
.addPatterns("make %players% see their [own] (experience|exp|xp) as level %integer% with %number% progress")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The API does allow only sending progress though. Another pattern might not hurt IMO. Maybe a pattern to reset it too? Like the other syntaxes have.

@skriptlang-automation skriptlang-automation Bot removed the needs reviews A PR that needs additional reviews label Jul 1, 2026
@AnOwlBe

AnOwlBe commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author
image possibly though there has to be atleast 1 pattern allowing both else it'd be impossible to send em both without one overriding the other

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Pull request adding a new feature.

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

4 participants