Skip to content

Commit

Permalink
Merge branch 'api-12' into api-13
Browse files Browse the repository at this point in the history
  • Loading branch information
Yeregorix committed Jan 13, 2025
2 parents 6539a0c + 21bc1ef commit cf98600
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.Nested;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;

Expand All @@ -49,6 +50,7 @@
import java.nio.file.Files;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
Expand Down Expand Up @@ -108,6 +110,10 @@ public final void dependencies(final String key, final NamedDomainObjectProvider
@Internal
public abstract SetProperty<ResolvedArtifactResult> getExcludedDependencies();

@Input
@Optional
protected abstract SetProperty<ModuleComponentIdentifier> getExcludedDependencyIdentifiers();

public final void excludeDependencies(final NamedDomainObjectProvider<Configuration> config) {
this.getExcludedDependencies().addAll(config.flatMap(conf -> conf.getIncoming().getArtifacts().getResolvedArtifacts()));
}
Expand All @@ -123,18 +129,21 @@ public final void excludeDependencies(final NamedDomainObjectProvider<Configurat

public OutputDependenciesToJson() {
this.getAllowedClassifiers().add("");
this.getExcludedDependencyIdentifiers().set(this.getExcludedDependencies().map(artifacts -> {
final Set<ModuleComponentIdentifier> ids = new HashSet<>();
for (final ResolvedArtifactResult artifact : artifacts) {
final ComponentIdentifier id = artifact.getId().getComponentIdentifier();
if (id instanceof ModuleComponentIdentifier) {
ids.add((ModuleComponentIdentifier) id);
}
}
return ids;
}));
}

@TaskAction
public void generateDependenciesJson() {
final Set<ModuleComponentIdentifier> excludedDeps = new HashSet<>();
if (this.getExcludedDependencies().isPresent()) {
for (final ResolvedArtifactResult result : this.getExcludedDependencies().get()) {
if (result.getId().getComponentIdentifier() instanceof ModuleComponentIdentifier) {
excludedDeps.add((ModuleComponentIdentifier) result.getId().getComponentIdentifier());
}
}
}
final Set<ModuleComponentIdentifier> excludedDeps = this.getExcludedDependencyIdentifiers().getOrElse(Collections.emptySet());

final Map<String, ConfigurationHolder> inputConfigs = this.getDependencies().get();
final Map<String, List<DependencyDescriptor>> dependenciesMap = new TreeMap<>();
Expand Down Expand Up @@ -201,15 +210,29 @@ public static String toHexString(final byte[] bytes) {
}

public static class ConfigurationHolder {
private final Provider<Set<ResolvedArtifactResult>> configuration;
private final Provider<Set<ResolvedArtifactResult>> artifacts;

public ConfigurationHolder(final Configuration configuration) {
this.configuration = configuration.getIncoming().getArtifacts().getResolvedArtifacts();
this.artifacts = configuration.getIncoming().getArtifacts().getResolvedArtifacts();
}

@Input
public Provider<Set<String>> getIds() {
return this.artifacts.map(set -> {
final Set<String> ids = new HashSet<>();
for (final ResolvedArtifactResult artifact : set) {
final ComponentIdentifier id = artifact.getId().getComponentIdentifier();
if (id instanceof ModuleComponentIdentifier) {
ids.add(id.getDisplayName());
}
}
return ids;
});
}

@Internal
public Provider<Set<ResolvedArtifactResult>> getArtifacts() {
return this.configuration;
return this.artifacts;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,14 @@
*/
package org.spongepowered.forge.hook;

import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraftforge.event.ForgeEventFactory;
import org.spongepowered.common.hooks.EventHooks;

public final class ForgeEventHooks implements EventHooks {

@Override
public boolean callPlayerDestruction(ServerPlayer serverPlayer, DamageSource cause) {
return ForgeEventFactory.onLivingDeath(serverPlayer, cause);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,16 @@
*/
package org.spongepowered.neoforge.hook;

import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.damagesource.DamageSource;
import net.neoforged.neoforge.common.CommonHooks;
import org.spongepowered.common.hooks.EventHooks;

public final class NeoEventHooks implements EventHooks {

@Override
public boolean callPlayerDestruction(ServerPlayer serverPlayer, DamageSource cause) {
return CommonHooks.onLivingDeath(serverPlayer, cause);
}

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,10 @@ public static WorldBlockChangeCompleteEffect getInstance() {
public EffectResult processSideEffect(final BlockPipeline pipeline, final PipelineCursor oldState, final BlockState newState,
final SpongeBlockChangeFlag flag, final int limit
) {
if (flag.notifyPathfinding()) {
pipeline.getServerWorld().onBlockStateChange(oldState.pos(), oldState.state(), newState);
final var world = pipeline.getServerWorld();
final var nowState = pipeline.getAffectedChunk().getBlockState(oldState.pos());
if (nowState == newState && flag.notifyPathfinding()) {
world.onBlockStateChange(oldState.pos(), oldState.state(), nowState);
}
return new EffectResult(oldState.state(), true);
}
Expand Down
10 changes: 8 additions & 2 deletions src/main/java/org/spongepowered/common/hooks/EventHooks.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
package org.spongepowered.common.hooks;

import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import org.spongepowered.api.event.SpongeEventFactory;
import org.spongepowered.api.event.entity.ChangeEntityWorldEvent;
Expand All @@ -39,9 +41,13 @@ public interface EventHooks {

default ChangeEntityWorldEvent.Pre callChangeEntityWorldEventPre(final Entity entity, final ServerLevel toWorld) {
final ChangeEntityWorldEvent.Pre event = SpongeEventFactory.createChangeEntityWorldEventPre(PhaseTracker.getCauseStackManager().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);
(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);
SpongeCommon.post(event);
return event;
}

default boolean callPlayerDestruction(ServerPlayer serverPlayer, DamageSource cause) {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,9 @@ public boolean teleportTo(final ServerLevel world,
@Overwrite
public void die(final DamageSource cause) {
// Sponge start - Call Destruct Death Event
if (PlatformHooks.INSTANCE.getEventHooks().callPlayerDestruction((net.minecraft.server.level.ServerPlayer) (Object) this, cause)) {
return;
}
final DestructEntityEvent.Death event = SpongeCommonEventFactory.callDestructEntityEventDeath((net.minecraft.server.level.ServerPlayer) (Object) this, cause,
Audiences.server());
if (event.isCancelled()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import net.minecraft.world.level.block.piston.PistonBaseBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.LevelChunk;
import net.minecraft.world.level.gameevent.GameEvent;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.phys.Vec3;
import org.checkerframework.checker.nullness.qual.NonNull;
Expand Down Expand Up @@ -98,7 +99,6 @@
import org.spongepowered.common.event.tracking.context.transaction.effect.RemoveTileEntityFromChunkEffect;
import org.spongepowered.common.event.tracking.context.transaction.effect.SetAndRegisterBlockEntityToLevelChunk;
import org.spongepowered.common.event.tracking.context.transaction.effect.UpdateConnectingBlocksEffect;
import org.spongepowered.common.event.tracking.context.transaction.effect.UpdatePOIAfterBlockChange;
import org.spongepowered.common.event.tracking.context.transaction.effect.UpdateWorldRendererEffect;
import org.spongepowered.common.event.tracking.context.transaction.effect.WorldBlockChangeCompleteEffect;
import org.spongepowered.common.event.tracking.context.transaction.effect.WorldDestroyBlockLevelEffect;
Expand Down Expand Up @@ -457,7 +457,6 @@ public abstract class ServerLevelMixin_Tracker extends LevelMixin_Tracker implem
.addEffect(NotifyClientEffect.getInstance())
.addEffect(NotifyNeighborSideEffect.getInstance())
.addEffect(UpdateConnectingBlocksEffect.getInstance())
.addEffect(UpdatePOIAfterBlockChange.getInstance())
;
return worldPipelineBuilder;
}
Expand Down Expand Up @@ -526,13 +525,18 @@ public boolean destroyBlock(final BlockPos pos, final boolean doDrops, @Nullable
return false;
}
final WorldPipeline.Builder pipelineBuilder = this.bridge$makePipeline(pos, currentState, emptyBlock, chunk, spongeFlag, limit)
.addEffect(WorldDestroyBlockLevelEffect.getInstance());
.addEffect(WorldDestroyBlockLevelEffect.getInstance())
;

if (doDrops) {
pipelineBuilder.addEffect(PerformBlockDropsFromDestruction.getInstance());
}

final WorldPipeline pipeline = pipelineBuilder
.addEffect((pipeline1, oldState, newState, flag, limit1) -> {
pipeline1.getServerWorld().gameEvent(GameEvent.BLOCK_DESTROY, oldState.pos, GameEvent.Context.of(p_241212_3_, oldState.state));
return EffectResult.NULL_PASS;
})
.addEffect(WorldBlockChangeCompleteEffect.getInstance())
.build();

Expand Down

0 comments on commit cf98600

Please sign in to comment.