Skip to content

Commit

Permalink
Fixes #4796: Update Forge and fix registry validation problems.
Browse files Browse the repository at this point in the history
  • Loading branch information
shartte committed Oct 27, 2020
1 parent aa88fb7 commit 73d4d5c
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 47 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ artifact_basename=appliedenergistics2
minecraft_release=1.16
minecraft_version=1.16.3
mcp_mappings=20200916-1.16.2
forge_version=34.1.15
forge_version=34.1.33

#########################################################
# Provided APIs #
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/appeng/core/AppEng.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
import net.minecraft.particles.ParticleType;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation;
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.OnlyIn;
import net.minecraftforge.common.MinecraftForge;
Expand Down Expand Up @@ -108,6 +110,8 @@ public AppEng() {
modEventBus.addGenericListener(TileEntityType.class, registration::registerTileEntities);
modEventBus.addGenericListener(ContainerType.class, registration::registerContainerTypes);
modEventBus.addGenericListener(IRecipeSerializer.class, registration::registerRecipeSerializers);
modEventBus.addGenericListener(Structure.class, registration::registerStructures);
modEventBus.addGenericListener(Feature.class, registration::registerFeatures);

modEventBus.addListener(Integrations::enqueueIMC);
modEventBus.addListener(this::commonSetup);
Expand Down
22 changes: 0 additions & 22 deletions src/main/java/appeng/core/AppEngBootstrap.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,12 @@

import appeng.api.features.AEFeature;
import appeng.mixins.feature.ConfiguredFeaturesAccessor;
import appeng.mixins.structure.ConfiguredStructureFeaturesAccessor;
import appeng.mixins.structure.StructureFeatureAccessor;
import appeng.spatial.SpatialStorageChunkGenerator;
import appeng.spatial.SpatialStorageDimensionIds;
import appeng.worldgen.BiomeModifier;
import appeng.worldgen.ChargedQuartzOreConfig;
import appeng.worldgen.ChargedQuartzOreFeature;
import appeng.worldgen.meteorite.MeteoriteStructure;
import appeng.worldgen.meteorite.MeteoriteStructurePiece;

/**
* Hooks into the very early bootstrapping phase to register things before the
Expand All @@ -43,8 +40,6 @@ public synchronized static void initialize() {
}
initialized = true;

registerStructures();

quartzOreFeature = registerQuartzOreFeature();
chargedQuartzOreFeature = registerChargedQuartzOreFeature();

Expand All @@ -60,20 +55,6 @@ public synchronized static void enhanceBiomes() {
});
}

private static void registerStructures() {

MeteoriteStructurePiece.register();

// Registering into the registry alone is INSUFFICIENT!
// There's a bidirectional map in the Structure class itself primarily for the
// purposes of NBT serialization
StructureFeatureAccessor.register(MeteoriteStructure.ID.toString(), MeteoriteStructure.INSTANCE,
GenerationStage.Decoration.TOP_LAYER_MODIFICATION);

ConfiguredStructureFeaturesAccessor.register(MeteoriteStructure.ID.toString(),
MeteoriteStructure.CONFIGURED_INSTANCE);
}

private static void addMeteoriteWorldGen(Biome b) {
if (!AEConfig.instance().isFeatureEnabled(AEFeature.METEORITE_WORLD_GEN)) {
return;
Expand Down Expand Up @@ -114,9 +95,6 @@ private static void addQuartzWorldGen(Biome b, ConfiguredFeature<?, ?> quartzOre
}

private static ConfiguredFeature<?, ?> registerChargedQuartzOreFeature() {
// Tell Minecraft about our configured charged quartz ore feature
Registry.register(Registry.FEATURE, AppEng.makeId("charged_quartz_ore"), ChargedQuartzOreFeature.INSTANCE);

BlockState quartzOreState = Api.instance().definitions().blocks().quartzOre().block().getDefaultState();
BlockState chargedQuartzOreState = Api.instance().definitions().blocks().quartzOreCharged().block()
.getDefaultState();
Expand Down
41 changes: 41 additions & 0 deletions src/main/java/appeng/core/Registration.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package appeng.core;

import java.util.Locale;
import java.util.function.Supplier;

import net.minecraft.advancements.CriteriaTriggers;
Expand All @@ -32,7 +33,11 @@
import net.minecraft.particles.ParticleType;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.World;
import net.minecraft.world.gen.GenerationStage;
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.OnlyIn;
import net.minecraftforge.client.event.ColorHandlerEvent;
Expand Down Expand Up @@ -200,6 +205,7 @@
import appeng.me.cache.SecurityCache;
import appeng.me.cache.SpatialPylonCache;
import appeng.me.cache.TickManagerCache;
import appeng.mixins.structure.ConfiguredStructureFeaturesAccessor;
import appeng.parts.automation.PlaneModelLoader;
import appeng.recipes.game.DisassembleRecipe;
import appeng.recipes.game.FacadeRecipe;
Expand All @@ -208,6 +214,9 @@
import appeng.server.AECommand;
import appeng.tile.AEBaseTileEntity;
import appeng.tile.crafting.MolecularAssemblerRenderer;
import appeng.worldgen.ChargedQuartzOreFeature;
import appeng.worldgen.meteorite.MeteoriteStructure;
import appeng.worldgen.meteorite.MeteoriteStructurePiece;

final class Registration {

Expand Down Expand Up @@ -475,6 +484,37 @@ public void registerParticleTypes(RegistryEvent.Register<ParticleType<?>> event)
registry.register(ParticleTypes.VIBRANT);
}

public void registerStructures(RegistryEvent.Register<Structure<?>> event) {
MeteoriteStructurePiece.register();

// Registering into the registry alone is INSUFFICIENT!
// There's a bidirectional map in the Structure class itself primarily for the
// purposes of NBT serialization
registerStructure(event.getRegistry(), MeteoriteStructure.ID.toString(), MeteoriteStructure.INSTANCE,
GenerationStage.Decoration.TOP_LAYER_MODIFICATION);

ConfiguredStructureFeaturesAccessor.register(MeteoriteStructure.ID.toString(),
MeteoriteStructure.CONFIGURED_INSTANCE);
}

// This mirrors the Vanilla registration method for structures, but uses the
// Forge registry instead
private static <F extends Structure<?>> void registerStructure(IForgeRegistry<Structure<?>> registry, String name,
F structure, GenerationStage.Decoration stage) {
Structure.field_236365_a_.put(name.toLowerCase(Locale.ROOT), structure);
Structure.field_236385_u_.put(structure, stage);
structure.setRegistryName(name.toLowerCase(Locale.ROOT));
registry.register(structure);
}

public void registerFeatures(RegistryEvent.Register<Feature<?>> event) {
IForgeRegistry<Feature<?>> registry = event.getRegistry();

// Tell Minecraft about our charged quartz ore feature
ChargedQuartzOreFeature.INSTANCE.setRegistryName(AppEng.makeId("charged_quartz_ore"));
registry.register(ChargedQuartzOreFeature.INSTANCE);
}

@OnlyIn(Dist.CLIENT)
public void registerParticleFactories(ParticleFactoryRegisterEvent event) {
ParticleManager particles = Minecraft.getInstance().particles;
Expand Down Expand Up @@ -699,4 +739,5 @@ public void registerClientEvents() {
modEventBus.addListener(this::registerItemColors);
modEventBus.addListener(this::handleModelBake);
}

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ public MeteoriteStructure(Codec<NoFeatureConfig> configCodec) {
super(configCodec);
}

@Override
public String getStructureName() {
String s = super.getStructureName();
return s;
}

@Override
protected boolean func_230363_a_(ChunkGenerator generator, BiomeProvider biomeSource, long seed,
SharedSeedRandom randIn, int chunkX, int chunkZ, Biome biome, ChunkPos chunkPos2,
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/META-INF/accesstransformer.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,5 @@ protected net.minecraft.entity.item.ItemEntity func_203043_v()V # applyFloatMoti

# Registration of custom DimensionType
public net.minecraft.world.DimensionType <init>(Ljava/util/OptionalLong;ZZZZZZZZZILnet/minecraft/util/ResourceLocation;F)V

public net.minecraft.world.gen.feature.structure.Structure field_236385_u_
1 change: 0 additions & 1 deletion src/main/resources/appliedenergistics2.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"spatial.BiomesMixin",
"structure.DimensionStructuresSettingsMixin",
"structure.ConfiguredStructureFeaturesAccessor",
"structure.StructureFeatureAccessor",
"structure.GenerationSettingsAccessor",
"structure.BiomeAccessor",
"feature.ConfiguredFeaturesAccessor"
Expand Down

0 comments on commit 73d4d5c

Please sign in to comment.