Compiles, can get ingame, uses Mixins to work around missing Fork Hooks for structures and custom dimensions.
This commit is contained in:
@@ -19,11 +19,13 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
maven { url = 'https://files.minecraftforge.net/maven' }
|
maven { url = 'https://files.minecraftforge.net/maven' }
|
||||||
|
maven { url = 'https://repo.spongepowered.org/maven' }
|
||||||
jcenter()
|
jcenter()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
|
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
|
||||||
|
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,6 +38,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'net.minecraftforge.gradle'
|
apply plugin: 'net.minecraftforge.gradle'
|
||||||
|
apply plugin: 'org.spongepowered.mixin'
|
||||||
apply plugin: "eclipse"
|
apply plugin: "eclipse"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
@@ -112,6 +115,7 @@ minecraft {
|
|||||||
client {
|
client {
|
||||||
property 'forge.logging.console.level', 'debug'
|
property 'forge.logging.console.level', 'debug'
|
||||||
workingDirectory project.file('run')
|
workingDirectory project.file('run')
|
||||||
|
property "mixin.debug.export", "true"
|
||||||
mods {
|
mods {
|
||||||
appliedenergistics2 {
|
appliedenergistics2 {
|
||||||
source sourceSets.main
|
source sourceSets.main
|
||||||
@@ -143,6 +147,18 @@ minecraft {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mixin {
|
||||||
|
add sourceSets.main, "mixins.appliedenergistics2.refmap.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
|
manifest {
|
||||||
|
attributes([
|
||||||
|
"MixinConfigs": "appliedenergistics2.mixins.json"
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def signProps = [:]
|
def signProps = [:]
|
||||||
if (System.getenv("KEY_STORE_FILE")) {
|
if (System.getenv("KEY_STORE_FILE")) {
|
||||||
signProps['keyStore'] = System.getenv("KEY_STORE_FILE")
|
signProps['keyStore'] = System.getenv("KEY_STORE_FILE")
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import net.minecraft.tileentity.TileEntityType;
|
|||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.gen.feature.Feature;
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import net.minecraft.world.gen.feature.structure.Structure;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.client.model.ModelLoaderRegistry;
|
import net.minecraftforge.client.model.ModelLoaderRegistry;
|
||||||
@@ -130,7 +131,8 @@ public final class AppEng {
|
|||||||
modEventBus.addGenericListener(TileEntityType.class, registration::registerTileEntities);
|
modEventBus.addGenericListener(TileEntityType.class, registration::registerTileEntities);
|
||||||
modEventBus.addGenericListener(ContainerType.class, registration::registerContainerTypes);
|
modEventBus.addGenericListener(ContainerType.class, registration::registerContainerTypes);
|
||||||
modEventBus.addGenericListener(IRecipeSerializer.class, registration::registerRecipeSerializers);
|
modEventBus.addGenericListener(IRecipeSerializer.class, registration::registerRecipeSerializers);
|
||||||
modEventBus.addGenericListener(Feature.class, registration::registerWorldGen);
|
modEventBus.addGenericListener(Feature.class, registration::registerFeatures);
|
||||||
|
modEventBus.addGenericListener(Structure.class, registration::registerStructures);
|
||||||
modEventBus.addGenericListener(Biome.class, registration::registerBiomes);
|
modEventBus.addGenericListener(Biome.class, registration::registerBiomes);
|
||||||
|
|
||||||
modEventBus.addListener(Integrations::enqueueIMC);
|
modEventBus.addListener(Integrations::enqueueIMC);
|
||||||
|
|||||||
@@ -18,48 +18,6 @@
|
|||||||
|
|
||||||
package appeng.core;
|
package appeng.core;
|
||||||
|
|
||||||
import net.minecraft.advancements.CriteriaTriggers;
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.gui.ScreenManager;
|
|
||||||
import net.minecraft.client.particle.ParticleManager;
|
|
||||||
import net.minecraft.entity.EntityType;
|
|
||||||
import net.minecraft.inventory.container.ContainerType;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.crafting.IRecipeSerializer;
|
|
||||||
import net.minecraft.particles.ParticleType;
|
|
||||||
import net.minecraft.tileentity.TileEntityType;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.world.DimensionType;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import net.minecraft.world.biome.Biome;
|
|
||||||
import net.minecraft.world.gen.GenerationStage;
|
|
||||||
import net.minecraft.world.gen.feature.Feature;
|
|
||||||
import net.minecraft.world.gen.feature.IFeatureConfig;
|
|
||||||
import net.minecraft.world.gen.feature.OreFeatureConfig;
|
|
||||||
import net.minecraft.world.gen.placement.CountRangeConfig;
|
|
||||||
import net.minecraft.world.gen.placement.IPlacementConfig;
|
|
||||||
import net.minecraft.world.gen.placement.Placement;
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
||||||
import net.minecraftforge.client.event.ColorHandlerEvent;
|
|
||||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
|
||||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
|
||||||
import net.minecraftforge.client.event.ParticleFactoryRegisterEvent;
|
|
||||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
|
||||||
import net.minecraftforge.client.model.ModelLoader;
|
|
||||||
import net.minecraftforge.common.extensions.IForgeContainerType;
|
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
|
||||||
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
|
|
||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
|
||||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
|
||||||
import net.minecraftforge.fml.network.IContainerFactory;
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
|
||||||
import net.minecraftforge.registries.IForgeRegistry;
|
|
||||||
|
|
||||||
import appeng.api.config.Upgrades;
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.definitions.IBlocks;
|
import appeng.api.definitions.IBlocks;
|
||||||
import appeng.api.definitions.IItems;
|
import appeng.api.definitions.IItems;
|
||||||
@@ -195,6 +153,7 @@ import appeng.me.cache.PathGridCache;
|
|||||||
import appeng.me.cache.SecurityCache;
|
import appeng.me.cache.SecurityCache;
|
||||||
import appeng.me.cache.SpatialPylonCache;
|
import appeng.me.cache.SpatialPylonCache;
|
||||||
import appeng.me.cache.TickManagerCache;
|
import appeng.me.cache.TickManagerCache;
|
||||||
|
import appeng.mixins.StructureAccessor;
|
||||||
import appeng.recipes.game.DisassembleRecipe;
|
import appeng.recipes.game.DisassembleRecipe;
|
||||||
import appeng.recipes.game.FacadeRecipe;
|
import appeng.recipes.game.FacadeRecipe;
|
||||||
import appeng.recipes.handlers.GrinderRecipe;
|
import appeng.recipes.handlers.GrinderRecipe;
|
||||||
@@ -208,15 +167,51 @@ import appeng.tile.crafting.MolecularAssemblerRenderer;
|
|||||||
import appeng.worldgen.ChargedQuartzOreConfig;
|
import appeng.worldgen.ChargedQuartzOreConfig;
|
||||||
import appeng.worldgen.ChargedQuartzOreFeature;
|
import appeng.worldgen.ChargedQuartzOreFeature;
|
||||||
import appeng.worldgen.meteorite.MeteoriteStructure;
|
import appeng.worldgen.meteorite.MeteoriteStructure;
|
||||||
|
import net.minecraft.advancements.CriteriaTriggers;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.ScreenManager;
|
||||||
|
import net.minecraft.client.particle.ParticleManager;
|
||||||
|
import net.minecraft.entity.EntityType;
|
||||||
|
import net.minecraft.inventory.container.ContainerType;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.crafting.IRecipeSerializer;
|
||||||
|
import net.minecraft.particles.ParticleType;
|
||||||
|
import net.minecraft.tileentity.TileEntityType;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.biome.Biome;
|
||||||
|
import net.minecraft.world.gen.GenerationStage;
|
||||||
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import net.minecraft.world.gen.feature.IFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.feature.OreFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.feature.structure.Structure;
|
||||||
|
import net.minecraft.world.gen.placement.CountRangeConfig;
|
||||||
|
import net.minecraft.world.gen.placement.IPlacementConfig;
|
||||||
|
import net.minecraft.world.gen.placement.Placement;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import net.minecraftforge.client.event.ColorHandlerEvent;
|
||||||
|
import net.minecraftforge.client.event.ModelBakeEvent;
|
||||||
|
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||||
|
import net.minecraftforge.client.event.ParticleFactoryRegisterEvent;
|
||||||
|
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||||
|
import net.minecraftforge.client.model.ModelLoader;
|
||||||
|
import net.minecraftforge.common.extensions.IForgeContainerType;
|
||||||
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
|
||||||
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
|
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||||
|
import net.minecraftforge.fml.network.IContainerFactory;
|
||||||
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
import net.minecraftforge.registries.IForgeRegistry;
|
||||||
|
|
||||||
final class Registration {
|
final class Registration {
|
||||||
|
|
||||||
public Registration() {
|
static AdvancementTriggers advancementTriggers;
|
||||||
AeStats.register();
|
|
||||||
advancementTriggers = new AdvancementTriggers(CriteriaTriggers::register);
|
|
||||||
}
|
|
||||||
|
|
||||||
AdvancementTriggers advancementTriggers;
|
|
||||||
|
|
||||||
public static void setupInternalRegistries() {
|
public static void setupInternalRegistries() {
|
||||||
// TODO: Do not use the internal API
|
// TODO: Do not use the internal API
|
||||||
@@ -468,6 +463,9 @@ final class Registration {
|
|||||||
|
|
||||||
// FIXME LATER
|
// FIXME LATER
|
||||||
public static void postInit() {
|
public static void postInit() {
|
||||||
|
AeStats.register();
|
||||||
|
advancementTriggers = new AdvancementTriggers(CriteriaTriggers::register);
|
||||||
|
|
||||||
final IRegistryContainer registries = Api.instance().registries();
|
final IRegistryContainer registries = Api.instance().registries();
|
||||||
// TODO: Do not use the internal API
|
// TODO: Do not use the internal API
|
||||||
ApiDefinitions definitions = Api.INSTANCE.definitions();
|
ApiDefinitions definitions = Api.INSTANCE.definitions();
|
||||||
@@ -682,14 +680,24 @@ final class Registration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerWorldGen(RegistryEvent.Register<Feature<?>> evt) {
|
public void registerFeatures(RegistryEvent.Register<Feature<?>> evt) {
|
||||||
IForgeRegistry<Feature<?>> r = evt.getRegistry();
|
IForgeRegistry<Feature<?>> r = evt.getRegistry();
|
||||||
|
|
||||||
r.register(ChargedQuartzOreFeature.INSTANCE);
|
r.register(ChargedQuartzOreFeature.INSTANCE.setRegistryName(AppEng.makeId("charged_quartz_ore")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerStructures(RegistryEvent.Register<Structure<?>> evt) {
|
||||||
|
// Registering into the Forge registry is INSUFFICIENT!
|
||||||
|
// There's a bidirectional map in the Structure class itself primarily for the purposes of NBT serialization
|
||||||
|
StructureAccessor.register(
|
||||||
|
MeteoriteStructure.ID.toString(),
|
||||||
|
MeteoriteStructure.INSTANCE.setRegistryName(MeteoriteStructure.ID),
|
||||||
|
GenerationStage.Decoration.TOP_LAYER_MODIFICATION
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerBiomes(RegistryEvent.Register<Biome> evt) {
|
public void registerBiomes(RegistryEvent.Register<Biome> evt) {
|
||||||
evt.getRegistry().register(StorageCellBiome.INSTANCE);
|
evt.getRegistry().register(StorageCellBiome.INSTANCE.setRegistryName(AppEng.makeId("storage")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package appeng.mixins;
|
||||||
|
|
||||||
|
import appeng.worldgen.meteorite.MeteoriteStructure;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import net.minecraft.world.gen.feature.structure.Structure;
|
||||||
|
import net.minecraft.world.gen.settings.DimensionStructuresSettings;
|
||||||
|
import net.minecraft.world.gen.settings.StructureSeparationSettings;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Mixin will add the structure placement configuration for the meteorite structure
|
||||||
|
* to the static final immutable map that contains them. There is currently no
|
||||||
|
* Forge hook for this, and registering them during the registry event is already too late.
|
||||||
|
* <p>
|
||||||
|
* If this is not done, Meteorites spawn every chunk, since that is the default for missing entries.
|
||||||
|
*/
|
||||||
|
@Mixin(DimensionStructuresSettings.class)
|
||||||
|
public class DimensionStructuresSettingsMixin {
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Mutable
|
||||||
|
private static ImmutableMap<Structure<?>, StructureSeparationSettings> field_236191_b_;
|
||||||
|
|
||||||
|
@Inject(method = "<clinit>", at = @At("TAIL"))
|
||||||
|
private static void addMeteoriteSpreadConfig(CallbackInfo ci) {
|
||||||
|
field_236191_b_ = ImmutableMap.<Structure<?>, StructureSeparationSettings>builder()
|
||||||
|
.putAll(field_236191_b_)
|
||||||
|
.put(MeteoriteStructure.INSTANCE, new StructureSeparationSettings(32, 8, 124895654)).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|||||||
|
|
||||||
import java.util.OptionalLong;
|
import java.util.OptionalLong;
|
||||||
|
|
||||||
@Mixin(DimensionType.class)
|
@Mixin(value = DimensionType.class)
|
||||||
public class DimensionTypeMixin {
|
public class DimensionTypeMixin {
|
||||||
|
|
||||||
@Inject(method = "func_236027_a_", at = @At("TAIL"))
|
@Inject(method = "func_236027_a_", at = @At("TAIL"))
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import java.util.Optional;
|
|||||||
@Mixin(DimensionRenderInfo.class)
|
@Mixin(DimensionRenderInfo.class)
|
||||||
public class SkyPropertiesMixin {
|
public class SkyPropertiesMixin {
|
||||||
|
|
||||||
@Inject(method = "func_239215_a_", at = @At("HEAD"), cancellable = true, remap = false)
|
@Inject(method = "func_239215_a_", at = @At("HEAD"), cancellable = true)
|
||||||
private static void byDimensionType(Optional<RegistryKey<DimensionType>> optional,
|
private static void byDimensionType(Optional<RegistryKey<DimensionType>> optional,
|
||||||
CallbackInfoReturnable<DimensionRenderInfo> ci) {
|
CallbackInfoReturnable<DimensionRenderInfo> ci) {
|
||||||
if (optional.orElse(null) == SpatialDimensionManager.STORAGE_DIMENSION_TYPE) {
|
if (optional.orElse(null) == SpatialDimensionManager.STORAGE_DIMENSION_TYPE) {
|
||||||
|
|||||||
@@ -11,16 +11,16 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
@Mixin(WorldRenderer.class)
|
@Mixin(value = WorldRenderer.class)
|
||||||
public class SkyRenderMixin {
|
public class SkyRenderMixin {
|
||||||
|
|
||||||
@Shadow(aliases = {"mc"})
|
@Shadow
|
||||||
private Minecraft client;
|
private Minecraft mc;
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions")
|
@SuppressWarnings("ConstantConditions")
|
||||||
@Inject(method = "renderSky", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "renderSky(Lcom/mojang/blaze3d/matrix/MatrixStack;F)V", at = @At("HEAD"), cancellable = true)
|
||||||
public void renderSky(MatrixStack matrices, float tickDelta, CallbackInfo ci) {
|
public void renderSky(MatrixStack matrices, float tickDelta, CallbackInfo ci) {
|
||||||
if (client.world.func_234922_V_() == SpatialDimensionManager.STORAGE_DIMENSION_TYPE) {
|
if (mc.world.func_234922_V_() == SpatialDimensionManager.STORAGE_DIMENSION_TYPE) {
|
||||||
SpatialSkyRender.getInstance().render(matrices);
|
SpatialSkyRender.getInstance().render(matrices);
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package appeng.mixins;
|
||||||
|
|
||||||
|
import net.minecraft.world.gen.GenerationStage;
|
||||||
|
import net.minecraft.world.gen.feature.structure.Structure;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
|
@Mixin(Structure.class)
|
||||||
|
public interface StructureAccessor {
|
||||||
|
|
||||||
|
@Invoker("func_236394_a_")
|
||||||
|
static <F extends Structure<?>> F register(String id, F feature, GenerationStage.Decoration defaultStage) {
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package appeng.mixins;
|
|
||||||
|
|
||||||
import net.minecraft.block.TNTBlock;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
@Mixin(TNTBlock.class)
|
|
||||||
public interface TntAccessor {
|
|
||||||
|
|
||||||
@Invoker
|
|
||||||
static void callPrimeTnt(World world, BlockPos pos, @Nullable LivingEntity igniter) {
|
|
||||||
throw new AssertionError("Mixin dummy");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -21,7 +21,7 @@ public class ChargedQuartzOreFeature extends Feature<ChargedQuartzOreConfig> {
|
|||||||
|
|
||||||
public static final ChargedQuartzOreFeature INSTANCE = new ChargedQuartzOreFeature(ChargedQuartzOreConfig.CODEC);
|
public static final ChargedQuartzOreFeature INSTANCE = new ChargedQuartzOreFeature(ChargedQuartzOreConfig.CODEC);
|
||||||
|
|
||||||
public ChargedQuartzOreFeature(Codec<ChargedQuartzOreConfig> codec) {
|
private ChargedQuartzOreFeature(Codec<ChargedQuartzOreConfig> codec) {
|
||||||
super(codec);
|
super(codec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,16 @@
|
|||||||
package appeng.worldgen.meteorite;
|
package appeng.worldgen.meteorite;
|
||||||
|
|
||||||
import java.util.Random;
|
import appeng.core.AppEng;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.SharedSeedRandom;
|
import net.minecraft.util.SharedSeedRandom;
|
||||||
import net.minecraft.util.math.ChunkPos;
|
import net.minecraft.util.math.ChunkPos;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.biome.BiomeManager;
|
|
||||||
import net.minecraft.world.biome.provider.BiomeProvider;
|
import net.minecraft.world.biome.provider.BiomeProvider;
|
||||||
import net.minecraft.world.gen.ChunkGenerator;
|
import net.minecraft.world.gen.ChunkGenerator;
|
||||||
import net.minecraft.world.gen.feature.NoFeatureConfig;
|
import net.minecraft.world.gen.feature.NoFeatureConfig;
|
||||||
import net.minecraft.world.gen.feature.StructureFeature;
|
|
||||||
import net.minecraft.world.gen.feature.structure.Structure;
|
import net.minecraft.world.gen.feature.structure.Structure;
|
||||||
|
|
||||||
import appeng.core.AELog;
|
|
||||||
import appeng.core.AppEng;
|
|
||||||
|
|
||||||
public class MeteoriteStructure extends Structure<NoFeatureConfig> {
|
public class MeteoriteStructure extends Structure<NoFeatureConfig> {
|
||||||
|
|
||||||
public static final ResourceLocation ID = AppEng.makeId("meteorite");
|
public static final ResourceLocation ID = AppEng.makeId("meteorite");
|
||||||
@@ -29,6 +22,12 @@ public class MeteoriteStructure extends Structure<NoFeatureConfig> {
|
|||||||
super(configCodec);
|
super(configCodec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getStructureName() {
|
||||||
|
String s = super.getStructureName();
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean func_230363_a_(ChunkGenerator generator, BiomeProvider biomeSource, long seed, SharedSeedRandom randIn, int chunkX, int chunkZ, Biome biome, ChunkPos chunkPos2, NoFeatureConfig featureConfig) {
|
protected boolean func_230363_a_(ChunkGenerator generator, BiomeProvider biomeSource, long seed, SharedSeedRandom randIn, int chunkX, int chunkZ, Biome biome, ChunkPos chunkPos2, NoFeatureConfig featureConfig) {
|
||||||
return randIn.nextBoolean();
|
return randIn.nextBoolean();
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
MixinConfigs: appliedenergistics2.mixins.json
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
modLoader="javafml"
|
modLoader="javafml"
|
||||||
loaderVersion="[31,)"
|
loaderVersion="[32,)"
|
||||||
#updateJSONURL=""
|
#updateJSONURL=""
|
||||||
issueTrackerURL="https://github.com/AppliedEnergistics/Applied-Energistics-2/issues"
|
issueTrackerURL="https://github.com/AppliedEnergistics/Applied-Energistics-2/issues"
|
||||||
displayURL="https://github.com/AppliedEnergistics/Applied-Energistics-2"
|
displayURL="https://github.com/AppliedEnergistics/Applied-Energistics-2"
|
||||||
@@ -16,13 +16,13 @@ description="A Mod about Matter, Energy and using them to conquer the world.."
|
|||||||
[[dependencies.appliedenergistics2]]
|
[[dependencies.appliedenergistics2]]
|
||||||
modId="forge"
|
modId="forge"
|
||||||
mandatory=true
|
mandatory=true
|
||||||
versionRange="[31.2.31,32.0.0)"
|
versionRange="[32.0.75,33.0.0)"
|
||||||
ordering="NONE"
|
ordering="NONE"
|
||||||
side="BOTH"
|
side="BOTH"
|
||||||
|
|
||||||
[[dependencies.appliedenergistics2]]
|
[[dependencies.appliedenergistics2]]
|
||||||
modId="minecraft"
|
modId="minecraft"
|
||||||
mandatory=true
|
mandatory=true
|
||||||
versionRange="[1.15.2]"
|
versionRange="[1.16.1]"
|
||||||
ordering="NONE"
|
ordering="NONE"
|
||||||
side="BOTH"
|
side="BOTH"
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"minVersion": "0.8",
|
||||||
|
"package": "appeng.mixins",
|
||||||
|
"compatibilityLevel": "JAVA_8",
|
||||||
|
"mixins": [
|
||||||
|
"DimensionTypeMixin",
|
||||||
|
"MinecraftServerMixin",
|
||||||
|
"ThreadedAnvilChunkStorageAccessor",
|
||||||
|
"DimensionStructuresSettingsMixin",
|
||||||
|
"StructureAccessor"
|
||||||
|
],
|
||||||
|
"client": [
|
||||||
|
"SkyRenderMixin",
|
||||||
|
"SkyPropertiesMixin"
|
||||||
|
],
|
||||||
|
"server": [],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user