0.0.7
EnergonRelics/pipeline/head This commit looks good Details

This commit is contained in:
TheBrokenRail 2020-08-15 14:26:33 -04:00
parent 401970963f
commit 72c85fa67b
9 changed files with 103 additions and 14 deletions

View File

@ -1,5 +1,8 @@
# Changelog
**Beta 0.0.7**
* Fix Structure Generation
**Beta 0.0.6**
* Remove ``DamageSourceAccessor``

View File

@ -10,7 +10,7 @@ org.gradle.jvmargs = -Xmx1G
fabric_loader_version = 0.9.0+build.204
# Mod Properties
mod_version = 0.0.6
mod_version = 0.0.7
maven_group = com.thebrokenrail
# Dependencies
@ -19,6 +19,6 @@ org.gradle.jvmargs = -Xmx1G
modmenu_version = 1.14.6+build.31
cloth_config_version = 4.7.0-unstable
autoconfig_version = 3.2.0-unstable
libstructure_version = 1.4.1
libstructure_version = 1.5
roughlyenoughitems_version = 5.2.3
jetbrains_annotations_version = 19.0.0

View File

@ -157,7 +157,7 @@ public final class EnergonRelics implements ModInitializer {
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "defensive_laser_core"), DEFENSIVE_LASER_CORE_ITEM);
DEFENSIVE_LASER_BLOCK.register("defensive_laser");
StructureGeneratorBlock.register();
StructureGeneratorBlock.registerBlocks();
BLOCK_BREAKER_BLOCK.register("block_breaker");

View File

@ -24,9 +24,11 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.World;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.GenerationSettings;
import net.minecraft.world.gen.GenerationStep;
import net.minecraft.world.gen.chunk.StructureConfig;
import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import net.minecraft.world.gen.feature.FeatureConfig;
import net.minecraft.world.gen.feature.StructureFeature;
@ -119,19 +121,23 @@ public class StructureGeneratorBlock extends SimpleBlockWithEntity {
LibStructure.registerStructure(new Identifier(EnergonRelics.NAMESPACE, name), block.feature, GenerationStep.Feature.UNDERGROUND_STRUCTURES, block.structureConfig, block.feature.configure(FeatureConfig.DEFAULT));
}
public static void register() {
public static void registerBlocks() {
for (Map.Entry<String, StructureGeneratorBlock> entry : blocks.entrySet()) {
entry.getValue().register(entry.getKey());
}
}
public static void addToBiome(GenerationSettings.Builder builder) {
public static void addToBiome(Biome biome) {
registerStructures();
for (Map.Entry<String, StructureGeneratorBlock> entry : blocks.entrySet()) {
builder.structureFeature(entry.getValue().feature.configure(DefaultFeatureConfig.INSTANCE));
ConfiguredStructureFeature<?, ?> feature = entry.getValue().feature.configure(DefaultFeatureConfig.INSTANCE);
biome.getGenerationSettings().getStructureFeatures().add(() -> feature);
}
}
static {
create("research_complex", (world, random, transformations) -> new ResearchComplexStartPart(new ResearchComplexState(world, random), transformations), new StructureConfig(32, 8, 14357618));
public static void registerStructures() {
if (blocks.size() == 0) {
create("research_complex", (world, random, transformations) -> new ResearchComplexStartPart(new ResearchComplexState(world, random), transformations), new StructureConfig(32, 8, 14357618));
}
}
}

View File

@ -0,0 +1,20 @@
package com.thebrokenrail.energonrelics.mixin;
import net.minecraft.world.biome.GenerationSettings;
import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.List;
import java.util.function.Supplier;
@Mixin(GenerationSettings.class)
public interface GenerationSettingsAccessor {
@Accessor
List<Supplier<ConfiguredStructureFeature<?, ?>>> getStructureFeatures();
@Mutable
@Accessor
void setStructureFeatures(List<Supplier<ConfiguredStructureFeature<?, ?>>> structureFeatures);
}

View File

@ -0,0 +1,16 @@
package com.thebrokenrail.energonrelics.mixin;
import com.thebrokenrail.energonrelics.block.structure.StructureGeneratorBlock;
import net.minecraft.Bootstrap;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Bootstrap.class)
public class MixinBootstrap {
@Inject(at = @At("TAIL"), method = "initialize")
private static void initialize(CallbackInfo info) {
StructureGeneratorBlock.registerStructures();
}
}

View File

@ -1,7 +1,6 @@
package com.thebrokenrail.energonrelics.mixin;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.structure.StructureGeneratorBlock;
import net.minecraft.world.biome.GenerationSettings;
import net.minecraft.world.gen.GenerationStep;
import net.minecraft.world.gen.feature.DefaultBiomeFeatures;
@ -16,9 +15,4 @@ public class MixinDefaultBiomeFeatures {
private static void addDefaultOres(GenerationSettings.Builder builder, CallbackInfo info) {
builder.feature(GenerationStep.Feature.UNDERGROUND_ORES, EnergonRelics.VERIDIUM_ORE_FEATURE);
}
@Inject(at = @At("RETURN"), method = "addDefaultUndergroundStructures")
private static void addDefaultUndergroundStructures(GenerationSettings.Builder builder, CallbackInfo info) {
StructureGeneratorBlock.addToBiome(builder);
}
}

View File

@ -0,0 +1,47 @@
package com.thebrokenrail.energonrelics.mixin;
import com.mojang.authlib.GameProfileRepository;
import com.mojang.authlib.minecraft.MinecraftSessionService;
import com.mojang.datafixers.DataFixer;
import com.thebrokenrail.energonrelics.block.structure.StructureGeneratorBlock;
import net.minecraft.resource.ResourcePackManager;
import net.minecraft.resource.ServerResourceManager;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.WorldGenerationProgressListenerFactory;
import net.minecraft.util.UserCache;
import net.minecraft.util.registry.DynamicRegistryManager;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.SaveProperties;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.feature.StructureFeature;
import net.minecraft.world.level.storage.LevelStorage;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.net.Proxy;
import java.util.ArrayList;
@Mixin(MinecraftServer.class)
public class MixinMinecraftServer {
@Shadow
@Final
protected DynamicRegistryManager.Impl registryManager;
@Inject(at = @At("TAIL"), method = "<init>")
private void init(Thread thread, DynamicRegistryManager.Impl impl, LevelStorage.Session session, SaveProperties saveProperties, ResourcePackManager resourcePackManager, Proxy proxy, DataFixer dataFixer, ServerResourceManager serverResourceManager, MinecraftSessionService minecraftSessionService, GameProfileRepository gameProfileRepository, UserCache userCache, WorldGenerationProgressListenerFactory worldGenerationProgressListenerFactory, CallbackInfo info) {
if (registryManager.getOptional(Registry.BIOME_KEY).isPresent()) {
for (Biome biome : registryManager.getOptional(Registry.BIOME_KEY).get()) {
// Make Mutable
((GenerationSettingsAccessor) biome.getGenerationSettings()).setStructureFeatures(new ArrayList<>(((GenerationSettingsAccessor) biome.getGenerationSettings()).getStructureFeatures()));
if (biome.getGenerationSettings().hasStructureFeature(StructureFeature.MINESHAFT)) {
StructureGeneratorBlock.addToBiome(biome);
}
}
}
}
}

View File

@ -9,9 +9,12 @@
],
"mixins": [
"BrewingRecipeRegistryAccessor",
"GenerationSettingsAccessor",
"MixinBootstrap",
"MixinDefaultBiomeFeatures",
"MixinEntity",
"MixinLivingEntity",
"MixinMinecraftServer",
"MixinWorld"
],
"injectors": {