Skip to content

Commit

Permalink
Merge branch '1.21.x' into 1.21.x-ShapeUpdateEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
ZygZagGaming authored Jan 31, 2025
2 parents 151be97 + b19a079 commit 03493f5
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ private NeoDevConfigurations(Project project) {

// Libraries & module libraries & MC dependencies need to be available when compiling in NeoDev,
// and on the runtime classpath too for IDE debugging support.
configurations.getByName("implementation").extendsFrom(libraries, moduleLibraries, neoFormDependencies);
configurations.getByName("api").extendsFrom(libraries, moduleLibraries, neoFormDependencies);

// runtimeClasspath is our reference for all MC dependency versions.
// Make sure that any classpath we resolve is consistent with it.
Expand Down
12 changes: 12 additions & 0 deletions patches/net/minecraft/world/entity/LivingEntity.java.patch
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,18 @@
}

protected float getWaterSlowDown() {
@@ -2193,8 +_,9 @@
public void travel(Vec3 p_21280_) {
if (this.isControlledByLocalInstance()) {
FluidState fluidstate = this.level().getFluidState(this.blockPosition());
- if ((this.isInWater() || this.isInLava()) && this.isAffectedByFluids() && !this.canStandOnFluid(fluidstate)) {
- this.travelInFluid(p_21280_);
+ // Neo: Call (patched-in overload of) #travelInFluid for custom fluid types
+ if ((this.isInWater() || this.isInLava() || this.isInFluidType(fluidstate)) && this.isAffectedByFluids() && !this.canStandOnFluid(fluidstate)) {
+ this.travelInFluid(p_21280_, fluidstate);
} else if (this.isFallFlying()) {
this.travelFallFlying();
} else {
@@ -2205,7 +_,7 @@

private void travelInAir(Vec3 p_362457_) {
Expand Down
8 changes: 7 additions & 1 deletion projects/neoforge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,12 @@ javaComponent.withVariantsFromConfiguration(configurations.runtimeElements) {

// Resolvable configurations only
configurations {
runtimeElements {
attributes {
// Add an attribute to disambiguate with the universalJar
attribute(Attribute.of("net.neoforged.neoforge.includes-minecraft", Boolean), true)
}
}
modDevBundle {
canBeDeclared = false
canBeResolved = false
Expand Down Expand Up @@ -313,7 +319,7 @@ configurations {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY))
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, JavaVersion.current().majorVersion.toInteger())
attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, java_version as Integer)
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, LibraryElements.JAR))
}
// Publish it
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
Expand All @@ -26,11 +28,13 @@
import net.minecraft.client.resources.ClientPackSource;
import net.minecraft.client.resources.IndexedAssetSource;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.RegistrySetBuilder;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.packs.PackLocationInfo;
import net.minecraft.server.packs.PackResources;
import net.minecraft.server.packs.PackType;
Expand All @@ -46,7 +50,10 @@
import net.neoforged.fml.ModList;
import net.neoforged.fml.event.IModBusEvent;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.neoforge.common.conditions.ICondition;
import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider;
import net.neoforged.neoforge.resource.ResourcePackLoader;
import org.apache.commons.lang3.function.Consumers;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;

Expand All @@ -55,6 +62,9 @@ public abstract class GatherDataEvent extends Event implements IModBusEvent {
private final DataGeneratorConfig config;
private final ModContainer modContainer;

@Nullable
private CompletableFuture<HolderLookup.Provider> registriesWithModdedEntries = null;

public GatherDataEvent(final ModContainer mc, final DataGenerator dataGenerator, final DataGeneratorConfig dataGeneratorConfig) {
this.modContainer = mc;
this.dataGenerator = dataGenerator;
Expand All @@ -81,7 +91,7 @@ public DataGenerator getGenerator() {
}

public CompletableFuture<HolderLookup.Provider> getLookupProvider() {
return this.config.lookupProvider;
return Objects.requireNonNullElse(this.registriesWithModdedEntries, this.config.lookupProvider);
}

public boolean includeDev() {
Expand Down Expand Up @@ -216,14 +226,40 @@ public <T extends DataProvider> T createProvider(DataProviderFromOutput<T> build
}

public <T extends DataProvider> T createProvider(DataProviderFromOutputLookup<T> builder) {
return addProvider(builder.create(dataGenerator.getPackOutput(), config.lookupProvider));
return addProvider(builder.create(dataGenerator.getPackOutput(), this.getLookupProvider()));
}

public void createBlockAndItemTags(DataProviderFromOutputLookup<TagsProvider<Block>> blockTagsProvider, ItemTagsProvider itemTagsProvider) {
var blockTags = createProvider(blockTagsProvider);
addProvider(itemTagsProvider.create(this.getGenerator().getPackOutput(), this.getLookupProvider(), blockTags.contentsGetter()));
}

public void createDatapackRegistryObjects(RegistrySetBuilder datapackEntriesBuilder) {
this.createDatapackRegistryObjects(datapackEntriesBuilder, Set.of(this.modContainer.getModId()));
}

public void createDatapackRegistryObjects(RegistrySetBuilder datapackEntriesBuilder, Set<String> modIds) {
this.createDatapackRegistryObjects(datapackEntriesBuilder, Consumers.nop(), modIds);
}

public void createDatapackRegistryObjects(RegistrySetBuilder datapackEntriesBuilder, Map<ResourceKey<?>, List<ICondition>> conditions) {
this.createDatapackRegistryObjects(datapackEntriesBuilder, conditions, Set.of(this.modContainer.getModId()));
}

public void createDatapackRegistryObjects(RegistrySetBuilder datapackEntriesBuilder, Map<ResourceKey<?>, List<ICondition>> conditions, Set<String> modIds) {
var registries = this.createProvider((output, lookupProvider) -> new DatapackBuiltinEntriesProvider(output, lookupProvider, datapackEntriesBuilder, conditions, modIds));
this.registriesWithModdedEntries = registries.getRegistryProvider();
}

public void createDatapackRegistryObjects(RegistrySetBuilder datapackEntriesBuilder, Consumer<BiConsumer<ResourceKey<?>, ICondition>> conditionsBuilder) {
this.createDatapackRegistryObjects(datapackEntriesBuilder, conditionsBuilder, Set.of(this.modContainer.getModId()));
}

public void createDatapackRegistryObjects(RegistrySetBuilder datapackEntriesBuilder, Consumer<BiConsumer<ResourceKey<?>, ICondition>> conditionsBuilder, Set<String> modIds) {
var registries = this.createProvider((output, lookupProvider) -> new DatapackBuiltinEntriesProvider(output, lookupProvider, datapackEntriesBuilder, conditionsBuilder, modIds));
this.registriesWithModdedEntries = registries.getRegistryProvider();
}

@FunctionalInterface
public interface DataProviderFromOutput<T extends DataProvider> {
T create(PackOutput output);
Expand Down
14 changes: 1 addition & 13 deletions testframework/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@ java.withSourcesJar()
apply plugin : net.neoforged.minecraftdependencies.MinecraftDependenciesPlugin

dependencies {
// TODO: is this leaking in the POM? (most likely yes)
// TODO: does this need to be changed back to runtimeDependencies?
// TODO: should use attributes to resolve the right variant instead of hardcoding
compileOnly project(path: ':neoforge', configuration: 'apiElements')
runtimeOnly project(path: ':neoforge', configuration: 'runtimeElements')
compileOnly project(path: ':neoforge')

compileOnly(platform("org.junit:junit-bom:${project.jupiter_api_version}"))
compileOnly "org.junit.jupiter:junit-jupiter-params"
Expand All @@ -23,14 +19,6 @@ dependencies {
compileOnly "com.google.code.findbugs:jsr305:3.0.2"
}

sourceSets {
main {
// TODO: cursed
compileClasspath += project(':neoforge').sourceSets.main.compileClasspath
runtimeClasspath += project(':neoforge').sourceSets.main.runtimeClasspath
}
}

license {
header = rootProject.file('codeformat/HEADER.txt')
include '**/*.java'
Expand Down
13 changes: 11 additions & 2 deletions tests/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ sourceSets {
}

dependencies {
implementation project(path: ':neoforge', configuration: 'runtimeElements')
implementation(neoforgeProject)
implementation(testframeworkProject)

junitImplementation(platform("org.junit:junit-bom:${project.jupiter_api_version}"))
Expand All @@ -31,12 +31,21 @@ dependencies {

junitImplementation("org.assertj:assertj-core:${project.assertj_core}")
junitImplementation "net.neoforged.fancymodloader:junit-fml:${project.fancy_mod_loader_version}"
junitImplementation project(path: ':neoforge', configuration: 'runtimeElements')
junitImplementation(neoforgeProject)
junitImplementation(testframeworkProject)

compileOnly "org.jetbrains:annotations:${project.jetbrains_annotations_version}"
}

// Select runtimeElements rather than universalJar from the neoforge project
sourceSets.each {
configurations.named(it.runtimeClasspathConfigurationName) {
attributes {
attribute(Attribute.of("net.neoforged.neoforge.includes-minecraft", Boolean), true)
}
}
}

junitTest {
useJUnitPlatform()
classpath = sourceSets.junit.output + sourceSets.junit.runtimeClasspath
Expand Down

0 comments on commit 03493f5

Please sign in to comment.