Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ jobs:
echo "GIT_BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV
echo "BUILD_NUMBER=${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
- name: Publish to Sponge Maven & GitHub Packages
# run: ./gradlew -s -PenableSpongeForge=true :publish :SpongeVanilla:publish :SpongeForge:publish
run: ./gradlew -s -PenableSpongeForge=true :publish :SpongeVanilla:publish
run: ./gradlew -s -PenableSpongeForge=true :publish :SpongeVanilla:publish :SpongeForge:publish
# run: ./gradlew -s -PenableSpongeForge=true :publish :SpongeVanilla:publish
env:
CI_SYSTEM: Github Actions
GITHUB_USERNAME: "${{ github.actor }}"
Expand Down
6 changes: 5 additions & 1 deletion forge/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,10 @@ extensions.configure(LoomGradleExtensionAPI::class) {
useLegacyMixinAp.set(false)
}

forge {
useCustomMixin.set(false)
}

mods {
named("main") {
sourceSet(forgeMixins)
Expand Down Expand Up @@ -236,7 +240,7 @@ dependencies {

val runTaskOnly = runTaskOnlyConfig.name
// Arch-loom bug, fix support of MOD_CLASSES
runTaskOnly("net.minecraftforge:bootstrap-dev:2.1.1")
runTaskOnly("net.minecraftforge:bootstrap-dev:2.1.3")
}

val forgeManifest = java.manifest {
Expand Down
2 changes: 1 addition & 1 deletion forge/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name=SpongeForge
implementation=Forge
description=The SpongeAPI implementation for MinecraftForge

forgeVersion=50.0.22
forgeVersion=52.0.3
loom.platform=forge
fabric.loom.dontRemap=true
mixinConfigs=mixins.spongeforge.accessors.json,mixins.spongeforge.api.json,mixins.spongeforge.inventory.json,mixins.spongeforge.core.json,mixins.spongeforge.tracker.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@
import org.spongepowered.common.network.channel.SpongeChannelManager;
import org.spongepowered.common.network.packet.SpongePacketHandler;
import org.spongepowered.forge.hook.ForgeChannelHooks;
import org.spongepowered.forge.hook.ForgeEntityHooks;
import org.spongepowered.forge.hook.ForgeEventHooks;
import org.spongepowered.forge.hook.ForgeGeneralHooks;
import org.spongepowered.forge.hook.ForgeItemHooks;
Expand All @@ -81,7 +80,6 @@ public SpongeForgeMod() {

// Set platform hooks as required
PlatformHooks.INSTANCE.setEventHooks(new ForgeEventHooks());
PlatformHooks.INSTANCE.setEntityHooks(new ForgeEntityHooks());
PlatformHooks.INSTANCE.setWorldHooks(new ForgeWorldHooks());
PlatformHooks.INSTANCE.setGeneralHooks(new ForgeGeneralHooks());
PlatformHooks.INSTANCE.setChannelHooks(new ForgeChannelHooks());
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,8 @@
*/
package org.spongepowered.forge.hook;

import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.AABB;
import net.minecraftforge.common.ToolActions;
import org.spongepowered.common.hooks.ItemHooks;

public class ForgeItemHooks implements ItemHooks {
@Override
public boolean canPerformSweepAttack(ItemStack heldItem) {
return heldItem.canPerformAction(ToolActions.SWORD_SWEEP);
}

@Override
public AABB getSweepingHitBox(Player player, ItemStack itemStack, Entity targetEntity) {
return itemStack.getSweepHitBox(player, targetEntity);
}
}
8 changes: 4 additions & 4 deletions forge/src/main/resource-templates/META-INF/mods.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
modLoader="javafml"
loaderVersion="[50,)"
loaderVersion="[52,)"
license="MIT License"

issueTrackerURL="https://github.com/SpongePowered/Sponge/issues"
Expand All @@ -17,7 +17,7 @@ description = "{{ description }}"
[[dependencies.spongeforge]]
modId="forge"
mandatory=true
versionRange="[50,)"
versionRange="[52,)"
ordering="AFTER"
side="BOTH"

Expand All @@ -41,14 +41,14 @@ description="The SpongeAPI implementation targeting vanilla Minecraft and 3rd pa
[[dependencies.sponge]]
modId="spongeapi"
mandatory=true
versionRange="[11.0.0,)"
versionRange="[12.0.0,)"
ordering="AFTER"
side="BOTH"


[[mods]]
modId="spongeapi"
version="11.0.0"
version="12.0.0"
displayName="SpongeAPI"
displayTest="IGNORE_SERVER_VERSION"
credits="SpongePowered and Contributors"
Expand Down
2 changes: 1 addition & 1 deletion forge/src/main/resources/forge.superclasschange
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"org.spongepowered.api.entity.ai.goal.AbstractGoal": "net.minecraft.entity.ai.goal.Goal"
"org.spongepowered.api.entity.ai.goal.AbstractGoal": "net.minecraft.world.entity.ai.goal.Goal"
}
7 changes: 2 additions & 5 deletions forge/src/main/resources/pack.mcmeta
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
{
"pack": {
"description": {
"text": "Resources for SpongeForge"
},
"forge:server_data_pack_format": 12,
"pack_format": 13
"description": "Resources for SpongeForge",
"pack_format": 34
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,14 @@
*/
package org.spongepowered.forge.mixin.core.server.level;

import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import net.minecraftforge.common.util.ITeleporter;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.common.bridge.world.entity.EntityBridge;
import org.spongepowered.common.event.tracking.PhaseContext;
import org.spongepowered.common.event.tracking.PhaseTracker;
import org.spongepowered.common.event.tracking.context.transaction.EffectTransactor;
import org.spongepowered.common.event.tracking.context.transaction.TransactionalCaptureSupplier;
import org.spongepowered.common.event.tracking.context.transaction.inventory.PlayerInventoryTransaction;
import org.spongepowered.common.world.portal.PortalLogic;
import org.spongepowered.forge.mixin.core.world.entity.LivingEntityMixin_Forge;

@Mixin(ServerPlayer.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,23 @@
*/
package org.spongepowered.forge.mixin.core.world.entity;

import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
import net.minecraftforge.common.util.ITeleporter;
import org.checkerframework.checker.nullness.qual.Nullable;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.stats.Stat;
import net.minecraft.world.entity.LivingEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.common.bridge.world.entity.EntityBridge;
import org.spongepowered.common.world.portal.PortalLogic;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(Entity.class)
public abstract class EntityMixin_Forge {
@Mixin(LivingEntity.class)
public class LivingEntityMixin_Forge_Attack_Impl {

/**
* @author dualspiral - 8th August 2021, Minecraft 1.16.5
* @reason Redirects to our handling so we have common logic with Vanilla.
* Prevents {@link ServerPlayer#awardStat} from running before event
*/
@Overwrite
@Nullable
public Entity changeDimension(final ServerLevel level, final ITeleporter teleporter) {
return ((EntityBridge) this).bridge$changeDimension(level, (PortalLogic) teleporter);
@Redirect(method = "getDamageAfterMagicAbsorb",
at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;awardStat(Lnet/minecraft/stats/Stat;I)V"))
public void attackImpl$onAwardStatDamageResist(final ServerPlayer instance, final Stat<?> resourceLocation, final int i) {
// do nothing
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -147,34 +147,34 @@ public abstract class AbstractFurnaceBlockEntityMixin_Forge implements AbstractF
final RegistryAccess registryAccess, final RecipeHolder<?> recipe,
final NonNullList<ItemStack> slots, final int var2,
final CallbackInfoReturnable<Boolean> cir,
final ItemStack $$4, final ItemStack $$5, final ItemStack $$6
final ItemStack itemIn, final ItemStack recipeResult, final ItemStack itemOut
) {
final AbstractFurnaceBlockEntityMixin_Forge mixinSelf = MixinTargetHelper.cast(this);
final FurnaceBlockEntity entity = (FurnaceBlockEntity) this;

final List<SlotTransaction> transactions = new ArrayList<>();
$$4.grow(1);
final ItemStackSnapshot originalSmeltItem = ItemStackUtil.snapshotOf($$4);
$$4.shrink(1);
transactions.add(new SlotTransaction(entity.inventory().slot(0).get(), originalSmeltItem, ItemStackUtil.snapshotOf($$4)));
itemIn.grow(1);
final ItemStackSnapshot originalSmeltItem = ItemStackUtil.snapshotOf(itemIn);
itemIn.shrink(1);
transactions.add(new SlotTransaction(entity.inventory().slot(0).get(), originalSmeltItem, ItemStackUtil.snapshotOf(itemIn)));

final boolean hasFuel = !mixinSelf.forgeImpl$filledWaterBucket;
if (mixinSelf.forgeImpl$filledWaterBucket) {
transactions.add(new SlotTransaction(entity.inventory().slot(1).get(), ItemStackSnapshot.empty(), ItemStackUtil.snapshotOf(slots.get(1))));
}
mixinSelf.forgeImpl$filledWaterBucket = false;

if ($$6.isEmpty()) {
transactions.add(new SlotTransaction(entity.inventory().slot(2).get(), ItemStackSnapshot.empty(), ItemStackUtil.snapshotOf($$5)));
} else if (ItemStack.isSameItemSameComponents($$6, $$5)) {
$$6.shrink(1);
final ItemStackSnapshot originalResult = ItemStackUtil.snapshotOf($$6);
$$6.grow(1);
transactions.add(new SlotTransaction(entity.inventory().slot(2).get(), originalResult, ItemStackUtil.snapshotOf($$6)));
if (itemOut.isEmpty()) {
transactions.add(new SlotTransaction(entity.inventory().slot(2).get(), ItemStackSnapshot.empty(), ItemStackUtil.snapshotOf(recipeResult)));
} else if (ItemStack.isSameItemSameComponents(itemOut, recipeResult)) {
itemOut.shrink(1);
final ItemStackSnapshot originalResult = ItemStackUtil.snapshotOf(itemOut);
itemOut.grow(1);
transactions.add(new SlotTransaction(entity.inventory().slot(2).get(), originalResult, ItemStackUtil.snapshotOf(itemOut)));
}
final Optional<ItemStackSnapshot> fuel = hasFuel && !slots.get(1).isEmpty() ? Optional.of(ItemStackUtil.snapshotOf(slots.get(1))) : Optional.empty();
final CookingEvent.Finish event = SpongeEventFactory.createCookingEventFinish(PhaseTracker.getCauseStackManager().currentCause(), entity,
fuel, Optional.ofNullable((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id()), Collections.unmodifiableList(transactions));
fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id()), Collections.unmodifiableList(transactions));
SpongeCommon.post(event);

for (final SlotTransaction transaction : transactions) {
Expand Down
Loading