Copper Golem + Copper Block Support#8244
Open
Absolutionism wants to merge 17 commits intoSkriptLang:dev/featurefrom
Open
Copper Golem + Copper Block Support#8244Absolutionism wants to merge 17 commits intoSkriptLang:dev/featurefrom
Absolutionism wants to merge 17 commits intoSkriptLang:dev/featurefrom
Conversation
…to dev/feature
…to dev/feature
…to dev/feature
…to dev/feature
sovdeeth
requested changes
Oct 18, 2025
sovdeeth
requested changes
Oct 18, 2025
src/main/java/ch/njol/skript/expressions/ExprCopperGolemOxidationTime.java
Outdated
Show resolved
Hide resolved
src/main/java/ch/njol/skript/expressions/ExprCopperGolemOxidationTime.java
Outdated
Show resolved
Hide resolved
src/main/java/ch/njol/skript/expressions/ExprCopperGolemOxidationTime.java
Outdated
Show resolved
Hide resolved
Member
|
Forgot to write this in the last review, but this should all be in the skriptlang package. |
sovdeeth
requested changes
Oct 23, 2025
src/main/java/org/skriptlang/skript/bukkit/elements/effects/EffWax.java
Outdated
Show resolved
Hide resolved
src/main/java/org/skriptlang/skript/bukkit/elements/expressions/ExprCopperState.java
Outdated
Show resolved
Hide resolved
src/main/java/org/skriptlang/skript/bukkit/paperutil/CopperState.java
Outdated
Show resolved
Hide resolved
sovdeeth
approved these changes
Oct 23, 2025
sovdeeth
approved these changes
Oct 23, 2025
Efnilite
requested changes
Oct 26, 2025
...ain/java/org/skriptlang/skript/bukkit/elements/expressions/ExprCopperGolemOxidationTime.java
Outdated
Show resolved
Hide resolved
...ain/java/org/skriptlang/skript/bukkit/elements/expressions/ExprCopperGolemOxidationTime.java
Outdated
Show resolved
Hide resolved
src/main/java/org/skriptlang/skript/bukkit/paperutil/CopperState.java
Outdated
Show resolved
Hide resolved
Efnilite
approved these changes
Nov 3, 2025
APickledWalrus
requested changes
Nov 3, 2025
Member
APickledWalrus
left a comment
There was a problem hiding this comment.
Overall this looks good. I have some suggestions about the organization/modularization.
src/main/java/org/skriptlang/skript/bukkit/elements/conditions/CondIsWaxed.java
Outdated
Show resolved
Hide resolved
src/main/java/org/skriptlang/skript/bukkit/elements/effects/EffWax.java
Outdated
Show resolved
Hide resolved
src/main/java/org/skriptlang/skript/bukkit/elements/effects/EffWax.java
Outdated
Show resolved
Hide resolved
src/main/java/org/skriptlang/skript/bukkit/elements/effects/EffWax.java
Outdated
Show resolved
Hide resolved
# Conflicts: # src/main/java/org/skriptlang/skript/bukkit/misc/expressions/ExprTextOf.java
APickledWalrus
requested changes
Nov 8, 2025
src/main/java/org/skriptlang/skript/bukkit/entity/coppergolem/CopperGolemModule.java
Outdated
Show resolved
Hide resolved
| if (!(entity instanceof CopperGolem golem)) | ||
| continue; | ||
| long worldTime = golem.getWorld().getGameTime(); | ||
| golem.setOxidizing(Oxidizing.atTime(worldTime + ticks)); |
Member
There was a problem hiding this comment.
Probably need to check for negative values from overflow here
Contributor
Author
There was a problem hiding this comment.
Minecraft's internal code doesn't seem to have special handling for overflow when it comes to the game time of a world.
So if a world is alive long enough, it can return negative
Contributor
Author
There was a problem hiding this comment.
Minecrafts Internal Code - ServerLevel.java
protected void tickTime() {
if (this.tickTime) {
long $$0 = this.levelData.getGameTime() + 1L;
this.serverLevelData.setGameTime($$0);
Profiler.get().push("scheduledFunctions");
this.serverLevelData.getScheduledEvents().tick(this.server, $$0);
Profiler.get().pop();
if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
this.setDayTime(this.levelData.getDayTime() + 1L);
}
}
}
src/main/java/org/skriptlang/skript/bukkit/entity/coppergolem/ExprCopperGolemOxidationTime.java
Outdated
Show resolved
Hide resolved
# Conflicts: # src/main/java/ch/njol/skript/Skript.java # src/main/java/org/skriptlang/skript/bukkit/entity/EntityModule.java # src/main/resources/lang/default.lang
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
No proper support for setting and getting attributes of copper golems and copper blocks.
Solution
Removes 'copper golem' from SimpleEntityData and adds CopperGolemData allowing users to specify the copper state of the copper golem and whether they're waxed.
Adds a condition to check if a copper golem or a copper block is waxed.
Adds an effect to wax or unwax a copper golem or a copper block.
Adds an expression to get/set the time until the next oxidation for a copper golem.
Adds an expression to get/set the pose of a copper golem statue.
Adds an expression to get/set the copper state of a copper golem or a copper block.
Adds 'CopperState' that mimics 'WeatheringCopperState' for the versions that don't have it. Allowing easy use for getting and setting the copper states.
Registers ClassInfo for copper golem statue poses
Registers ClassInfo for 'CopperState' or 'WeatheringCopperState' if it exists.
Adds 'ReflectUtils' that is a utility class for common reflection and caches where possible. Reflection was needed for 'CopperState', 'ExprCopperState', and 'ExprCopperGolemOxidationTime' which led to the creation of ReflectUtils.
Testing Completed
EntityData.sk
EffWax.sk
ExprCopperGolemOxidationTime.sk
ExprCopperGolemPose.sk
ExprCopperState.sk
EffSecSpawn.sk
Supporting Information
N/A
Completes: none
Related: none