feat: use anvillib
This commit is contained in:
parent
4cad6de484
commit
fc200ca483
|
@ -35,6 +35,9 @@ allprojects {
|
|||
group = rootProject.maven_group
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
url "https://maven.tilera.xyz"
|
||||
}
|
||||
// Add repositories to retrieve artifacts from in here.
|
||||
// You should only use this when depending on other mods because
|
||||
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
|
||||
|
|
|
@ -10,6 +10,8 @@ dependencies {
|
|||
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies
|
||||
// Do NOT use other classes from fabric loader
|
||||
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
|
||||
|
||||
modImplementation("net.anvilcraft:anvillib-18:0.2.0") {transitive = false}
|
||||
// Remove the next line if you don't want to depend on the API
|
||||
// modApi "dev.architectury:architectury:${rootProject.architectury_version}"
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package com.cursedcauldron.wildbackport.common.registry.worldgen;
|
||||
|
||||
import com.cursedcauldron.wildbackport.common.utils.SupplierHolder;
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.AdvancedJigsawConfiguration;
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.features.AncientCityFeature;
|
||||
import com.cursedcauldron.wildbackport.core.api.CoreRegistry;
|
||||
import com.cursedcauldron.wildbackport.core.mixin.access.StructureFeatureAccessor;
|
||||
|
||||
import net.anvilcraft.anvillib.worldgen.AdvancedStructurePoolFeatureConfig;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
||||
|
@ -17,7 +17,7 @@ public class WBStructureFeatures {
|
|||
|
||||
public static final Holder<StructureFeature<?>> ANCIENT_CITY
|
||||
= SupplierHolder.createAndRegister(STRUCTURE_FEATURES, "ancient_city", () -> {
|
||||
var acf = new AncientCityFeature(AdvancedJigsawConfiguration.CODEC);
|
||||
var acf = new AncientCityFeature(AdvancedStructurePoolFeatureConfig.CODEC);
|
||||
StructureFeatureAccessor.getStep().put(
|
||||
acf, Decoration.UNDERGROUND_STRUCTURES
|
||||
);
|
||||
|
|
|
@ -6,12 +6,12 @@ import java.util.stream.Collectors;
|
|||
|
||||
import com.cursedcauldron.wildbackport.common.tag.WBBiomeTags;
|
||||
import com.cursedcauldron.wildbackport.common.utils.SupplierHolder;
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.AdvancedJigsawConfiguration;
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.features.AncientCityFeature;
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.structure.AncientCityStructurePieces;
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.structure.processors.BlockTagRotProcessor;
|
||||
import com.cursedcauldron.wildbackport.core.api.CoreRegistry;
|
||||
|
||||
import net.anvilcraft.anvillib.worldgen.AdvancedStructurePoolFeatureConfig;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.data.BuiltinRegistries;
|
||||
|
@ -49,11 +49,10 @@ public class WBStructures {
|
|||
()
|
||||
-> ((AncientCityFeature) WBStructureFeatures.ANCIENT_CITY.value())
|
||||
.configured(
|
||||
new AdvancedJigsawConfiguration(
|
||||
new AdvancedStructurePoolFeatureConfig(
|
||||
AncientCityStructurePieces.START,
|
||||
7,
|
||||
116,
|
||||
Optional.of(new ResourceLocation("city_anchor"))
|
||||
116
|
||||
),
|
||||
WBBiomeTags.HAS_ANCIENT_CITY,
|
||||
true,
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
package com.cursedcauldron.wildbackport.common.worldgen;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration;
|
||||
import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool;
|
||||
|
||||
public class AdvancedJigsawConfiguration extends JigsawConfiguration {
|
||||
public static final Codec<JigsawConfiguration> CODEC = RecordCodecBuilder.create(
|
||||
(instance) -> {
|
||||
return instance
|
||||
.group(
|
||||
StructureTemplatePool.CODEC.fieldOf("start_pool")
|
||||
.forGetter(
|
||||
(self) -> ((AdvancedJigsawConfiguration) self).startPool()
|
||||
),
|
||||
Codec.intRange(0, 7).fieldOf("size").forGetter(
|
||||
(self) -> ((AdvancedJigsawConfiguration) self).maxDepth()
|
||||
),
|
||||
Codec.INT.fieldOf("max_distance_from_center")
|
||||
.forGetter(
|
||||
(self)
|
||||
-> ((AdvancedJigsawConfiguration) self)
|
||||
.maxDistanceFromCenter
|
||||
),
|
||||
ResourceLocation.CODEC.optionalFieldOf("start_jigsaw_name")
|
||||
.forGetter(
|
||||
(self) -> ((AdvancedJigsawConfiguration) self).startJigsawName
|
||||
)
|
||||
)
|
||||
.apply(instance, AdvancedJigsawConfiguration::new);
|
||||
}
|
||||
);
|
||||
|
||||
public int maxDistanceFromCenter;
|
||||
public Optional<ResourceLocation> startJigsawName;
|
||||
|
||||
public AdvancedJigsawConfiguration(
|
||||
Holder<StructureTemplatePool> holder,
|
||||
int i,
|
||||
int maxDistanceFromCenter,
|
||||
Optional<ResourceLocation> startJigsawName
|
||||
) {
|
||||
super(holder, i);
|
||||
this.maxDistanceFromCenter = maxDistanceFromCenter;
|
||||
this.startJigsawName = startJigsawName;
|
||||
}
|
||||
}
|
|
@ -30,6 +30,8 @@ dependencies {
|
|||
// modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}"
|
||||
modImplementation("com.github.glitchfiend:TerraBlender-fabric:${minecraft_version}-${terrablender_version}")
|
||||
|
||||
modImplementation("net.anvilcraft:anvillib-18-fabric:0.2.0") {transitive = false}
|
||||
|
||||
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||
shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false }
|
||||
}
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
package com.cursedcauldron.wildbackport.core.mixin.fabric.common;
|
||||
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.AdvancedJigsawConfiguration;
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration;
|
||||
import net.minecraft.world.level.levelgen.structure.PoolElementStructurePiece;
|
||||
import net.minecraft.world.level.levelgen.structure.pools.JigsawPlacement;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||
|
||||
@Mixin(JigsawPlacement.class)
|
||||
public class JigsawPlacementMixin {
|
||||
// this is a lambda
|
||||
@ModifyVariable(
|
||||
method = "method_39824", at = @At(value = "STORE", ordinal = 0), remap = false
|
||||
)
|
||||
private static AABB
|
||||
adjustAncientCityBoundingBox(
|
||||
AABB aabb, PoolElementStructurePiece alec, JigsawConfiguration conf
|
||||
) {
|
||||
if (conf instanceof AdvancedJigsawConfiguration aconf) {
|
||||
return new AABB(
|
||||
aabb.minX + 80 - aconf.maxDistanceFromCenter,
|
||||
aabb.minY + 80 - aconf.maxDistanceFromCenter,
|
||||
aabb.minZ + 80 - aconf.maxDistanceFromCenter,
|
||||
aabb.maxX - 80 + aconf.maxDistanceFromCenter,
|
||||
aabb.maxY - 80 + aconf.maxDistanceFromCenter,
|
||||
aabb.maxZ - 80 + aconf.maxDistanceFromCenter
|
||||
);
|
||||
}
|
||||
return aabb;
|
||||
}
|
||||
}
|
|
@ -9,8 +9,7 @@
|
|||
"client": [
|
||||
"client.FogRendererMixin",
|
||||
"client.SheetsMixin",
|
||||
"common.BeardifierMixin",
|
||||
"common.JigsawPlacementMixin"
|
||||
"common.BeardifierMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
|
|
@ -37,6 +37,8 @@ dependencies {
|
|||
forge "net.minecraftforge:forge:${rootProject.forge_version}"
|
||||
modApi "com.github.glitchfiend:TerraBlender-forge:${minecraft_version}-${terrablender_version}"
|
||||
|
||||
modImplementation("net.anvilcraft:anvillib-18-forge:0.2.0") {transitive = false}
|
||||
|
||||
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||
shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false }
|
||||
}
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
package com.cursedcauldron.wildbackport.core.mixin.forge.common;
|
||||
|
||||
import com.cursedcauldron.wildbackport.common.worldgen.AdvancedJigsawConfiguration;
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration;
|
||||
import net.minecraft.world.level.levelgen.structure.PoolElementStructurePiece;
|
||||
import net.minecraft.world.level.levelgen.structure.pools.JigsawPlacement;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||
|
||||
// this is an exact duplicate of this mixin for fabric, but with the target changed to
|
||||
// SRG mappings. you have failed me, refmap.
|
||||
@Mixin(JigsawPlacement.class)
|
||||
public class JigsawPlacementMixin {
|
||||
// for this nonsense to work in the devenv, replace this with method_39824
|
||||
// for prod, use m_210268_
|
||||
// very elegant!
|
||||
@ModifyVariable(
|
||||
method = "m_210268_", at = @At(value = "STORE", ordinal = 0), remap = false
|
||||
)
|
||||
private static AABB
|
||||
adjustAncientCityBoundingBox(
|
||||
AABB aabb, PoolElementStructurePiece alec, JigsawConfiguration conf
|
||||
) {
|
||||
if (conf instanceof AdvancedJigsawConfiguration aconf) {
|
||||
return new AABB(
|
||||
aabb.minX + 80 - aconf.maxDistanceFromCenter,
|
||||
aabb.minY + 80 - aconf.maxDistanceFromCenter,
|
||||
aabb.minZ + 80 - aconf.maxDistanceFromCenter,
|
||||
aabb.maxX - 80 + aconf.maxDistanceFromCenter,
|
||||
aabb.maxY - 80 + aconf.maxDistanceFromCenter,
|
||||
aabb.maxZ - 80 + aconf.maxDistanceFromCenter
|
||||
);
|
||||
}
|
||||
return aabb;
|
||||
}
|
||||
}
|
|
@ -4,8 +4,7 @@
|
|||
"package": "com.cursedcauldron.wildbackport.core.mixin.forge",
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"mixins": [
|
||||
"common.BeardifierMixin",
|
||||
"common.JigsawPlacementMixin"
|
||||
"common.BeardifierMixin"
|
||||
],
|
||||
"client": [],
|
||||
"injectors": {
|
||||
|
|
Loading…
Reference in a new issue