Skip to content

Commit 6e3641d

Browse files
committed
feat(forge): update Forge for 1.21.9
Upgraded Forge dependencies and introduced MixinExtras for better injector handling. Adjusted lambda mixin methods, improved client-side checks, and refined explosion knockback logic with `WrapOperation`. Updated verification metadata for new component versions.
1 parent 3e6f55c commit 6e3641d

File tree

8 files changed

+180
-17
lines changed

8 files changed

+180
-17
lines changed

.github/workflows/common-run-build.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ jobs:
1616
matrix:
1717
project:
1818
- vanilla
19-
# - forge
19+
- forge
2020
# - neoforge
2121
include:
2222
- project: vanilla
2323
gradleProject: SpongeVanilla
24-
# - project: forge
25-
# gradleProject: SpongeForge
24+
- project: forge
25+
gradleProject: SpongeForge
2626
# - project: neoforge
2727
# gradleProject: SpongeNeo
2828
steps:

.github/workflows/deploy.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ jobs:
4242
- project: forge
4343
gradleProject: ':SpongeForge'
4444
skipUpdateBranch: true
45-
- project: neoforge
46-
gradleProject: ':SpongeNeo'
47-
skipUpdateBranch: true
45+
# - project: neoforge
46+
# gradleProject: ':SpongeNeo'
47+
# skipUpdateBranch: true
4848
steps:
4949
- name: setup
5050
if: "!(matrix.skipUpdateBranch && startsWith(github.ref, 'refs/heads/update/'))"

forge/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ name=SpongeForge
22
implementation=Forge
33
description=The SpongeAPI implementation for MinecraftForge
44

5-
forgeVersion=58.0.5
5+
forgeVersion=59.0.0
66
mixinConfigs=mixins.spongeforge.accessors.json,mixins.spongeforge.api.json,mixins.spongeforge.inventory.json,mixins.spongeforge.inventory.shared.json,mixins.spongeforge.core.json,mixins.spongeforge.core.shared.json,mixins.spongeforge.tracker.json

forge/src/mixins/java/org/spongepowered/forge/mixin/core/server/MinecraftServerMixin_Forge.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ public long[] getTickTime(ResourceKey<Level> dim) {
6363
return ((ServerLevelBridge) this.shadow$getLevel(dim)).bridge$recentTickTimes();
6464
}
6565

66-
@ModifyExpressionValue(method = "lambda$reloadResources$29", at = @At(value = "NEW", target = "Lnet/minecraft/server/packs/resources/MultiPackResourceManager;"))
66+
@ModifyExpressionValue(method = "lambda$reloadResources$30", at = @At(value = "NEW", target = "Lnet/minecraft/server/packs/resources/MultiPackResourceManager;"))
6767
private MultiPackResourceManager forge$onReloadResources(final MultiPackResourceManager original) {
6868
((MinecraftServerBridge) this).bridge$reloadServerRegistries((RegistryHolder) original);
6969
return original;
7070
}
7171

72-
@Inject(method = "lambda$reloadResources$30", at = @At("TAIL"))
72+
@Inject(method = "lambda$reloadResources$31", at = @At("TAIL"))
7373
public void forge$onReloadedResources(final Collection<?> $$0x, final @Coerce MinecraftServer_ReloadableResourcesAccessor $$1x, final CallbackInfo ci) {
7474
((MinecraftServerBridge) this).bridge$reloadedServerRegistries(((SpongeRegistryHolder) $$1x.accessor$resourceManager()).registryHolder());
7575
}

forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/entity/item/ItemEntityMixin_Forge.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public abstract class ItemEntityMixin_Forge {
4646
final CallbackInfo ci
4747
) {
4848
// Check the level is not null to avoid an NPE
49-
if (level != null && !level.isClientSide) {
49+
if (level != null && !level.isClientSide()) {
5050
this.lifespan = SpongeGameConfigs.getForWorld(level).get().entity.item.despawnRate;
5151
}
5252
}

forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/level/ServerExplosionMixin_Forge.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
*/
2525
package org.spongepowered.forge.mixin.core.world.level;
2626

27+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
28+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2729
import net.minecraft.core.BlockPos;
2830
import net.minecraft.server.level.ServerLevel;
2931
import net.minecraft.world.entity.Entity;
@@ -104,12 +106,10 @@ public abstract class ServerExplosionMixin_Forge {
104106
}
105107

106108

107-
@Redirect(method = "hurtEntities", at = @At(value = "NEW", target = "(DDD)Lnet/minecraft/world/phys/Vec3;"))
108-
private Vec3 forge$useKnockbackMultiplier(final double $$0, final double $$1, final double $$2) {
109+
@WrapOperation(method = "hurtEntities", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;scale(D)Lnet/minecraft/world/phys/Vec3;"))
110+
private Vec3 forge$useKnockbackMultiplier(Vec3 instance, double $$0, Operation<Vec3> original) {
109111
// Honor our knockback value from event
110-
return new Vec3($$0 * this.impl$knockbackMultiplier,
111-
$$1 * this.impl$knockbackMultiplier,
112-
$$2 * this.impl$knockbackMultiplier);
112+
return original.call(instance, $$0 * this.impl$knockbackMultiplier);
113113
}
114114

115115
}

forge/src/mixins/java/org/spongepowered/forge/mixin/core/world/level/block/FireBlockMixin_Forge.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class FireBlockMixin_Forge {
4949
cancellable = true)
5050
private void impl$onCatchFirePreCheck(
5151
final Level world, final BlockPos pos, final int chance, final RandomSource random, final int age, final Direction dir, final CallbackInfo callbackInfo) {
52-
if (!world.isClientSide) {
52+
if (!world.isClientSide()) {
5353
if (ShouldFire.CHANGE_BLOCK_EVENT_PRE && SpongeCommonEventFactory.callChangeBlockEventPre((ServerLevelBridge) world, pos).isCancelled()) {
5454
callbackInfo.cancel();
5555
}
@@ -65,7 +65,7 @@ public class FireBlockMixin_Forge {
6565
cancellable = true)
6666
private void impl$onCatchFirePreCheckOther(
6767
final Level world, final BlockPos pos, final int chance, final RandomSource random, final int age, final Direction dir, final CallbackInfo callbackInfo) {
68-
if (!world.isClientSide) {
68+
if (!world.isClientSide()) {
6969
if (ShouldFire.CHANGE_BLOCK_EVENT_PRE && SpongeCommonEventFactory.callChangeBlockEventPre((ServerLevelBridge) world, pos).isCancelled()) {
7070
callbackInfo.cancel();
7171
}

0 commit comments

Comments
 (0)