Skip to content

Commit

Permalink
chore: merge api-14 for additions
Browse files Browse the repository at this point in the history
Signed-off-by: Gabriel Harris-Rouquette <[email protected]>
  • Loading branch information
gabizou committed Feb 8, 2025
2 parents 0ab192d + 6883cfd commit 848d9fc
Show file tree
Hide file tree
Showing 179 changed files with 1,173 additions and 645 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public boolean post(final Event event, final IEventBusInvokeDispatcher wrapper)
if (!this.rtrackPhases && Objects.equals(listener.getClass(), EventPriority.class)) continue;

try (
final CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame();
final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame();
final PhaseContext<@NonNull ?> context = SpongeEventManager.createListenerContext(null))
{
if (context != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public abstract class CommandsMixin_Forge {
final Function<SuggestionProvider<S>, SuggestionProvider<T>> execute,
final ServerPlayer player
) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame()) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame()) {
frame.pushCause(player);
frame.addContext(EventContextKeys.SUBJECT, (Subject) player);
final CommandCause sourceToUse = ((CommandSourceStackBridge) sourceToResult).bridge$withCurrentCause();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ private EntityTravelToDimensionEventMixin_Forge(Entity entity) {
public ChangeEntityWorldEvent.@Nullable Pre bridge$createSpongeEvent() {
final Entity entity = this.getEntity();
final ServerLevel toWorld = SpongeCommon.server().getLevel(this.dimension);
return SpongeEventFactory.createChangeEntityWorldEventPre(PhaseTracker.getCauseStackManager().currentCause(),
return SpongeEventFactory.createChangeEntityWorldEventPre(PhaseTracker.getInstance().currentCause(),
(org.spongepowered.api.entity.Entity) entity, (org.spongepowered.api.world.server.ServerWorld) entity.getCommandSenderWorld(),
(org.spongepowered.api.world.server.ServerWorld) toWorld, (org.spongepowered.api.world.server.ServerWorld) toWorld);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public final class PlayerEvent_PlayerChangedDimensionEventMixin_Forge implements
public ChangeEntityWorldEvent.Post bridge$createSpongeEvent() {
final PlayerEvent.PlayerChangedDimensionEvent thisEvent = (PlayerEvent.PlayerChangedDimensionEvent) (Object) this;
return SpongeEventFactory.createChangeEntityWorldEventPost(
PhaseTracker.getCauseStackManager().currentCause(),
PhaseTracker.getInstance().currentCause(),
(Entity) thisEvent.getEntity(),
(ServerWorld) SpongeCommon.server().getLevel(this.fromDim),
(ServerWorld) SpongeCommon.server().getLevel(this.toDim),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public abstract class BlockEvent_BreakEventMixin_Forge extends BlockEventMixin_F
.build(),
Operations.BREAK.get()
);
return SpongeEventFactory.createChangeBlockEventAll(PhaseTracker.getCauseStackManager().currentCause(),
return SpongeEventFactory.createChangeBlockEventAll(PhaseTracker.getInstance().currentCause(),
Collections.singletonList(transaction), serverWorld);
}
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public abstract class SpreadPlayersCommandMixin_Forge {
target = "Lnet/minecraftforge/event/ForgeEventFactory;onEntityTeleportSpreadPlayersCommand(Lnet/minecraft/world/entity/Entity;DDD)Lnet/minecraftforge/event/entity/EntityTeleportEvent$SpreadPlayersCommand;"
))
private static EntityTeleportEvent.SpreadPlayersCommand vanilla$createCauseFrameForTeleport(Entity entity, double targetX, double targetY, double targetZ) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame()) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame()) {
frame.addContext(EventContextKeys.MOVEMENT_TYPE, MovementTypes.COMMAND);

return ForgeEventFactory.onEntityTeleportSpreadPlayersCommand(entity, targetX, targetY, targetZ);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public abstract class ServerExplosionMixin_Forge {
final var apiWorld = (ServerWorld) this.level;
final var apiEntities = entities.stream().map(org.spongepowered.api.entity.Entity.class::cast).toList();
final var apiBlockPositions = this.impl$affectedBlocks.stream().map(bp -> ServerLocation.of(apiWorld, VecHelper.toVector3i(bp))).toList();
final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
final ExplosionEvent.Detonate event = SpongeEventFactory.createExplosionEventDetonate(cause, apiBlockPositions, apiEntities, (Explosion) this, apiWorld);
if (SpongeCommon.post(event)) {
this.impl$affectedBlocks.clear(); // no blocks affected
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Forge implements AbstractF

final ItemStackSnapshot fuel = ItemStackUtil.snapshotOf(slots.get(1));

final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
if (entity.cookingTimer == 0) { // Start
final CookingEvent.Start event = SpongeEventFactory.createCookingEventStart(cause, (FurnaceBlockEntity) entityIn, Optional.of(fuel),
Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location()));
Expand All @@ -117,7 +117,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Forge implements AbstractF
final int clampedCookTime = Mth.clamp(newCookTime, zero, totalCookTime);
final var entity = (AbstractFurnaceBlockEntityMixin_Forge) (Object) entityIn;
final ItemStackSnapshot fuel = ItemStackUtil.snapshotOf(entity.items.get(1));
final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
final var recipe = entity.bridge$getCurrentRecipe();
final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.get(0));
final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel),
Expand Down Expand Up @@ -172,7 +172,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Forge implements AbstractF
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,
final CookingEvent.Finish event = SpongeEventFactory.createCookingEventFinish(PhaseTracker.getInstance().currentCause(), entity,
fuel, Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location()), Collections.unmodifiableList(transactions));
SpongeCommon.post(event);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ public abstract class HopperBlockEntityMixin_Inventory_Forge {
// Call event
InventoryEventFactory.callTransferPost(capture, (Inventory) iInventory, InventoryUtil.toInventory(iInventory), itemStack, sourceSlotTransaction);
}

InventoryUtil.updateInventoryNoEvents(var3);
InventoryUtil.updateInventoryNoEvents(iInventory);
}

}
7 changes: 6 additions & 1 deletion gradle/verification-metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8304,7 +8304,12 @@
<sha256 value="192b295f8611d6468c593a9c61d70234684e83697e11a7fdd77dafd27ebf778e" origin="Generated by Gradle"/>
</artifact>
<artifact name="plugin-meta-0.8.2.module">
<sha256 value="2f57975203b3be9f047209f52c913fe1c14303de0d83efff9b1d641c00e4d035" origin="Generated by Gradle"/>
<sha256 value="2f57975203b3be9f047209f52c913fe1c14303de0d83efff9b1d641c00e4d035" origin="Generated by Gradle">
<also-trust value="85e8cb2c1d57a53de5cfef74b9b5efe72e133f618b5d9408821523b0405b56f9"/>
</sha256>
</artifact>
<artifact name="plugin-meta-0.8.2.pom">
<sha256 value="d6b2578a82b576c6d7415d6811c38e69712cbeb3b2797f3c6aa1031901481650" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.spongepowered" name="plugin-spi" version="0.3.0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public SpongeEventBus(final BusBuilderImpl busBuilder) {
@Override
public <T extends Event> T post(T event) {
try (
final CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame();
final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame();
final PhaseContext<@NonNull ?> context = SpongeEventManager.createListenerContext(null)
) {
if (context != null) {
Expand All @@ -56,7 +56,7 @@ public <T extends Event> T post(T event) {
@Override
public <T extends Event> T post(EventPriority phase, T event) {
try (
final CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame();
final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame();
final PhaseContext<@NonNull ?> context = SpongeEventManager.createListenerContext(null)
) {
if (context != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public abstract class CommandsMixin_Neo {
final Function<SuggestionProvider<S>, SuggestionProvider<T>> execute,
final ServerPlayer player
) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame()) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame()) {
frame.pushCause(player);
frame.addContext(EventContextKeys.SUBJECT, (Subject) player);
final CommandCause sourceToUse = ((CommandSourceStackBridge) sourceToResult).bridge$withCurrentCause();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public abstract class EntityTravelToDimensionEventMixin_Neo implements NeoEventB
public ChangeEntityWorldEvent.@Nullable Pre bridge$createSpongeEvent() {
final Entity entity = ((EntityEvent) (Object) this).getEntity();
final ServerLevel toWorld = SpongeCommon.server().getLevel(this.dimension);
return SpongeEventFactory.createChangeEntityWorldEventPre(PhaseTracker.getCauseStackManager().currentCause(),
return SpongeEventFactory.createChangeEntityWorldEventPre(PhaseTracker.getInstance().currentCause(),
(org.spongepowered.api.entity.Entity) entity, (org.spongepowered.api.world.server.ServerWorld) entity.getCommandSenderWorld(),
(org.spongepowered.api.world.server.ServerWorld) toWorld, (org.spongepowered.api.world.server.ServerWorld) toWorld);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public final class PlayerEvent_PlayerChangedDimensionEventMixin_Neo implements
public Event bridge$createSpongeEvent() {
final PlayerEvent.PlayerChangedDimensionEvent thisEvent = (PlayerEvent.PlayerChangedDimensionEvent) (Object) this;
return SpongeEventFactory.createChangeEntityWorldEventPost(
PhaseTracker.getCauseStackManager().currentCause(),
PhaseTracker.getInstance().currentCause(),
(Entity) thisEvent.getEntity(),
(ServerWorld) SpongeCommon.server().getLevel(this.fromDim),
(ServerWorld) SpongeCommon.server().getLevel(this.toDim),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public abstract class BlockEvent_BreakEventMixin_Neo extends BlockEventMixin_Neo
.build(),
Operations.BREAK.get()
);
return SpongeEventFactory.createChangeBlockEventAll(PhaseTracker.getCauseStackManager().currentCause(),
return SpongeEventFactory.createChangeBlockEventAll(PhaseTracker.getInstance().currentCause(),
Collections.singletonList(transaction), serverWorld);
}
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public abstract class SpreadPlayersCommandMixin_Neo {
target = "Lnet/neoforged/neoforge/event/EventHooks;onEntityTeleportSpreadPlayersCommand(Lnet/minecraft/world/entity/Entity;DDD)Lnet/neoforged/neoforge/event/entity/EntityTeleportEvent$SpreadPlayersCommand;"
))
private static EntityTeleportEvent.SpreadPlayersCommand vanilla$createCauseFrameForTeleport(Entity entity, double targetX, double targetY, double targetZ) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getCauseStackManager().pushCauseFrame()) {
try (final CauseStackManager.StackFrame frame = PhaseTracker.getInstance().pushCauseFrame()) {
frame.addContext(EventContextKeys.MOVEMENT_TYPE, MovementTypes.COMMAND);

return EventHooks.onEntityTeleportSpreadPlayersCommand(entity, targetX, targetY, targetZ);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public abstract class ServerExplosionMixin_NeoForge {
final var apiWorld = (ServerWorld) this.level;
final var apiEntities = entities.stream().map(org.spongepowered.api.entity.Entity.class::cast).toList();
final var apiBlockPositions = this.impl$affectedBlocks.stream().map(bp -> ServerLocation.of(apiWorld, VecHelper.toVector3i(bp))).toList();
final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
final ExplosionEvent.Detonate event = SpongeEventFactory.createExplosionEventDetonate(cause, apiBlockPositions, apiEntities, (Explosion) this, apiWorld);
if (SpongeCommon.post(event)) {
this.impl$affectedBlocks.clear(); // no blocks affected
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Neo extends BaseContainerB
final var entity = (AbstractFurnaceBlockEntityMixin_Neo) (Object) (entityIn);
final ItemStackSnapshot fuel = ItemStackUtil.snapshotOf(slots.get(1));

final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
if (entity.cookingTimer == 0) { // Start
final CookingEvent.Start event = SpongeEventFactory.createCookingEventStart(cause, (FurnaceBlockEntity) entityIn, Optional.of(fuel),
Optional.of((CookingRecipe) recipe.value()), Optional.of((ResourceKey) (Object) recipe.id().location()));
Expand All @@ -117,7 +117,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Neo extends BaseContainerB
final int clampedCookTime = Mth.clamp(newCookTime, zero, totalCookTime);
final var entity = (AbstractFurnaceBlockEntityMixin_Neo) (Object) entityIn;
final ItemStackSnapshot fuel = ItemStackUtil.snapshotOf(entity.items.get(1));
final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
final var recipe = entity.bridge$getCurrentRecipe();
final ItemStackSnapshot cooking = ItemStackUtil.snapshotOf(entity.items.get(0));
final CookingEvent.Tick event = SpongeEventFactory.createCookingEventTick(cause, (FurnaceBlockEntity) entityIn, cooking, Optional.of(fuel),
Expand All @@ -139,7 +139,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Neo extends BaseContainerB
final RegistryAccess registryAccess, final RecipeHolder<?> recipe, final SingleRecipeInput arg3,
final NonNullList<ItemStack> slots, final int maxStackSize, final CallbackInfoReturnable<Boolean> cir
) {
final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
final FurnaceBlockEntity entity = cause.first(FurnaceBlockEntity.class)
.orElseThrow(() -> new IllegalStateException("Expected to have a FurnaceBlockEntity in the Cause"));
((AbstractFurnaceBlockEntityMixin_Neo) entity).neo$filledWaterBucket = true;
Expand All @@ -155,7 +155,7 @@ public abstract class AbstractFurnaceBlockEntityMixin_Neo extends BaseContainerB
final ItemStack recipeResult = recipe.value().assemble(input, registryAccess);
final ItemStack itemOut = slots.get(2);

final Cause cause = PhaseTracker.getCauseStackManager().currentCause();
final Cause cause = PhaseTracker.getInstance().currentCause();
final FurnaceBlockEntity entity = cause.first(FurnaceBlockEntity.class)
.orElseThrow(() -> new IllegalStateException("Expected to have a FurnaceBlockEntity in the Cause"));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ public abstract class HopperBlockEntityMixin_Inventory_Neo {
// Call event
InventoryEventFactory.callTransferPost(capture, (Inventory) iInventory, InventoryUtil.toInventory(iInventory), itemStack, sourceSlotTransaction);
}

InventoryUtil.updateInventoryNoEvents(var3);
InventoryUtil.updateInventoryNoEvents(iInventory);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,17 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.spongepowered.common.bridge.world.ticks;
package org.spongepowered.common.accessor.world.ticks;

public interface ScheduledTickBridge {
import net.minecraft.world.ticks.LevelChunkTicks;
import net.minecraft.world.ticks.ScheduledTick;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

boolean bridge$isPartOfWorldGeneration();
import java.util.Set;

void bridge$setIsPartOfWorldGeneration(boolean isLoading);
@Mixin(LevelChunkTicks.class)
public interface LevelChunkTicksAccessor {

@Accessor("ticksPerPosition") Set<ScheduledTick<?>> accessor$ticksPerPosition();
}
3 changes: 2 additions & 1 deletion src/accessors/resources/mixins.sponge.accessors.json
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,8 @@
"world.level.storage.PlayerDataStorageAccessor",
"world.phys.AABBAccessor",
"world.scores.PlayerTeamAccessor",
"world.scores.ScoreboardAccessor"
"world.scores.ScoreboardAccessor",
"world.ticks.LevelChunkTicksAccessor"
],
"server": [
"server.dedicated.DedicatedServerAccessor"
Expand Down
Loading

0 comments on commit 848d9fc

Please sign in to comment.