Fixed Facades Creative Tab.

Moved Facades Whitelist to Tag.
Moved Facades TileEntity config over to an AE feature.
This commit is contained in:
Sebastian Hartte
2020-06-22 00:52:06 +02:00
parent 9d8e23a2ea
commit 5367315fd3
18 changed files with 273 additions and 591 deletions
+6 -7
View File
@@ -1,16 +1,15 @@
package appeng.core;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import appeng.api.AEApi;
import appeng.api.definitions.IBlocks;
import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IItemDefinition;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import java.util.ArrayList;
import java.util.List;
public class AEItemGroup extends ItemGroup {
+30 -61
View File
@@ -18,14 +18,34 @@
package appeng.core;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
import javax.annotation.Nonnull;
import appeng.block.paint.PaintSplotchesModel;
import appeng.block.qnb.QnbFormedModel;
import appeng.bootstrap.components.IClientSetupComponent;
import appeng.bootstrap.components.IInitComponent;
import appeng.bootstrap.components.IPostInitComponent;
import appeng.capabilities.Capabilities;
import appeng.client.ClientHelper;
import appeng.client.render.DummyFluidItemModel;
import appeng.client.render.FacadeItemModel;
import appeng.client.render.SimpleModelLoader;
import appeng.client.render.cablebus.CableBusModelLoader;
import appeng.client.render.cablebus.P2PTunnelFrequencyModel;
import appeng.client.render.crafting.CraftingCubeModelLoader;
import appeng.client.render.crafting.EncodedPatternModelLoader;
import appeng.client.render.model.*;
import appeng.client.render.spatial.SpatialPylonModel;
import appeng.core.crash.ModCrashEnhancement;
import appeng.core.features.registries.PartModels;
import appeng.core.stats.AdvancementTriggers;
import appeng.core.sync.network.NetworkHandler;
import appeng.core.worlddata.WorldData;
import appeng.entity.*;
import appeng.hooks.TickHandler;
import appeng.integration.Integrations;
import appeng.parts.PartPlacement;
import appeng.parts.automation.PlaneModelLoader;
import appeng.server.ServerHelper;
import com.google.common.base.Stopwatch;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.ItemRenderer;
@@ -58,42 +78,9 @@ import net.minecraftforge.fml.event.server.FMLServerStoppedEvent;
import net.minecraftforge.fml.event.server.FMLServerStoppingEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import appeng.block.paint.PaintSplotchesModel;
import appeng.block.qnb.QnbFormedModel;
import appeng.bootstrap.components.IClientSetupComponent;
import appeng.bootstrap.components.IInitComponent;
import appeng.bootstrap.components.IPostInitComponent;
import appeng.capabilities.Capabilities;
import appeng.client.ClientHelper;
import appeng.client.render.DummyFluidItemModel;
import appeng.client.render.SimpleModelLoader;
import appeng.client.render.cablebus.CableBusModelLoader;
import appeng.client.render.cablebus.P2PTunnelFrequencyModel;
import appeng.client.render.crafting.CraftingCubeModelLoader;
import appeng.client.render.crafting.EncodedPatternModelLoader;
import appeng.client.render.model.BiometricCardModel;
import appeng.client.render.model.ColorApplicatorModel;
import appeng.client.render.model.DriveModel;
import appeng.client.render.model.GlassModel;
import appeng.client.render.model.MemoryCardModel;
import appeng.client.render.model.SkyCompassModel;
import appeng.client.render.model.UVLModelLoader;
import appeng.client.render.spatial.SpatialPylonModel;
import appeng.core.crash.ModCrashEnhancement;
import appeng.core.features.registries.PartModels;
import appeng.core.stats.AdvancementTriggers;
import appeng.core.sync.network.NetworkHandler;
import appeng.core.worlddata.WorldData;
import appeng.entity.EntityChargedQuartz;
import appeng.entity.EntityGrowingCrystal;
import appeng.entity.EntitySingularity;
import appeng.entity.EntityTinyTNTPrimed;
import appeng.entity.RenderTinyTNTPrimed;
import appeng.hooks.TickHandler;
import appeng.integration.Integrations;
import appeng.parts.PartPlacement;
import appeng.parts.automation.PlaneModelLoader;
import appeng.server.ServerHelper;
import javax.annotation.Nonnull;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
@Mod(AppEng.MOD_ID)
public final class AppEng {
@@ -132,11 +119,8 @@ public final class AppEng {
CrashReportExtender.registerCrashCallable(new ModCrashEnhancement());
// FIXMEthis.registration = new Registration();
// FIXMEMinecraftForge.EVENT_BUS.register( this.registration );
CreativeTab.init();
CreativeTabFacade.init();
new FacadeItemGroup(); // This call has a side-effect (adding it to the creative screen)
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
registration = new Registration();
@@ -241,21 +225,6 @@ public final class AppEng {
return INSTANCE;
}
// public Biome getStorageBiome()
// {
// return this.registration.storageBiome;
// }
//
// public DimensionType getStorageDimensionType()
// {
// return this.registration.storageDimensionType;
// }
//
// public int getStorageDimensionID()
// {
// return this.registration.storageDimensionID;
// }
public AdvancementTriggers getAdvancementTriggers() {
return this.registration.advancementTriggers;
}
@@ -1,46 +0,0 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
*
* Applied Energistics 2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Applied Energistics 2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
package appeng.core;
import net.minecraft.block.Blocks;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
public final class CreativeTabFacade {
public static ItemGroup instance = null;
static void init() {
instance = new ItemGroup("appliedenergistics2.facades") {
@Override
public ItemStack createIcon() {
// FIXME final Optional<Item> maybeFacade =
// AEApi.instance().definitions().items().facade().maybeItem();
// FIXME if( maybeFacade.isPresent() )
{
// FIXME return ( (ItemFacade) maybeFacade.get() ).getCreativeTabIcon();
}
return new ItemStack(Blocks.OAK_PLANKS);
}
};
}
}
-148
View File
@@ -1,148 +0,0 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
*
* Applied Energistics 2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Applied Energistics 2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
package appeng.core;
import java.io.File;
import net.minecraft.block.Block;
import net.minecraft.util.ResourceLocation;
import it.unimi.dsi.fastutil.objects.Object2IntArrayMap;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
public class FacadeConfig {
private static final String CONFIG_VERSION = "1";
private static final String CONFIG_COMMON_KEY = "common";
private static final String CONFIG_COMMON_COMMENT = "Settings applied to all facades.\n\n" //
+ "By default full blocks with no tile entity and a model do not need whitelisting.\n"//
+ "This will only be read once during client startup.";
private static final String CONFIG_COMMON_ALLOW_TILEENTITIES_KEY = "allowTileEntityFacades";
private static final String CONFIG_COMMON_ALLOW_TILEENTITIES_COMMENT = "Unsupported: Allows whitelisting TileEntity as facades. Could work, have render issues, or corrupt your world. USE AT YOUR OWN RISK.";
private static final String CONFIG_FACADES_KEY = "facades";
private static final String CONFIG_FACADES_COMMENT = "A way to explicitly handle certain blocks as facades.\n\n" //
+ "Blocks can be added by their resource location under the following rules.\n" //
+ " - One category per domain like minecraft or appliedenergistics2\n" //
+ " - One key per id. E.g. glass in case of minecraft:glass\n" //
+ " - An integer value ranging from 0 to 16 representing the metadata 0-15 and 16 as wildcard for all" //
+ " - Multiple entries for the same id but different metadata are possible when needed";
private static FacadeConfig instance;
private final boolean allowTileEntityFacades;
private final Object2IntMap<ResourceLocation> whiteList;
private FacadeConfig(boolean allowTileEntityFacades, Object2IntMap<ResourceLocation> whiteList) {
this.allowTileEntityFacades = allowTileEntityFacades;
this.whiteList = whiteList;
}
/**
* Creates a custom confuration based on a {@link Configuration}, but ultimately
* throws it away after reading it once to save a couple MB of memory.
*
* @param configFile
*/
public static void init(final File configFile) {
// FIXME final Configuration configurartion = migrate( new Configuration( configFile, CONFIG_VERSION ) );
// FIXME
// FIXME final boolean allowTileEntityFacades = configurartion
// FIXME .get( CONFIG_COMMON_KEY, CONFIG_COMMON_ALLOW_TILEENTITIES_KEY, false, CONFIG_COMMON_ALLOW_TILEENTITIES_COMMENT )
// FIXME .setRequiresMcRestart( true )
// FIXME .setShowInGui( false )
// FIXME .getBoolean();
// FIXME
// FIXME final Object2IntMap<ResourceLocation> configWhiteList = new Object2IntArrayMap<>();
// FIXME
// FIXME final Set<ConfigCategory> whitelist = configurartion.getCategory( CONFIG_FACADES_KEY ).getChildren();
// FIXME for( ConfigCategory configCategory : whitelist )
// FIXME {
// FIXME final String domain = configCategory.getName();
// FIXME final Map<String, Property> values = configCategory.getValues();
// FIXME
// FIXME for( Entry<String, Property> entry : values.entrySet() )
// FIXME {
// FIXME configWhiteList.put( new ResourceLocation( domain, entry.getKey() ), entry.getValue().getInt() );
// FIXME }
// FIXME }
// FIXME
// FIXME if( configurartion.hasChanged() )
// FIXME {
// FIXME configurartion.save();
// FIXME }
instance = new FacadeConfig(false, new Object2IntArrayMap<>()); // FIXME
}
// FIXME private static Configuration migrate( Configuration configurartion )
// FIXME {
// FIXME // Clear pre rv6 configs.
// FIXME if( configurartion.getLoadedConfigVersion() == null )
// FIXME {
// FIXME for( String category : configurartion.getCategoryNames() )
// FIXME {
// FIXME final ConfigCategory c = configurartion.getCategory( category );
// FIXME configurartion.removeCategory( c );
// FIXME }
// FIXME }
// FIXME
// FIXME // Create general category, if missing
// FIXME if( !configurartion.hasCategory( CONFIG_COMMON_KEY ) )
// FIXME {
// FIXME configurartion.getCategory( CONFIG_COMMON_KEY ).setComment( CONFIG_COMMON_COMMENT );
// FIXME }
// FIXME
// FIXME // Create whitelist, if missing
// FIXME if( !configurartion.hasCategory( CONFIG_FACADES_KEY ) )
// FIXME {
// FIXME final ConfigCategory category = configurartion.getCategory( CONFIG_FACADES_KEY );
// FIXME category.setComment( CONFIG_FACADES_COMMENT );
// FIXME
// FIXME // Whitelist some vanilla blocks like glass
// FIXME final ConfigCategory minecraft = new ConfigCategory( "minecraft", category );
// FIXME minecraft.put( "glass", new Property( "glass", "16", Type.INTEGER ) );
// FIXME minecraft.put( "stained_glass", new Property( "stained_glass", "16", Type.INTEGER ) );
// FIXME
// FIXME // Whitelist some AE2 blocks like quartz glass
// FIXME final ConfigCategory appliedenergistics = new ConfigCategory( "appliedenergistics2", category );
// FIXME appliedenergistics.put( "quartz_glass", new Property( "quartz_glass", "16", Type.INTEGER ) );
// FIXME appliedenergistics.put( "quartz_vibrant_glass", new Property( "quartz_vibrant_glass", "16", Type.INTEGER ) );
// FIXME }
// FIXME
// FIXME return configurartion;
// FIXME }
public static FacadeConfig instance() {
return instance;
}
public boolean allowTileEntityFacades() {
return this.allowTileEntityFacades;
}
public boolean isWhiteListed(final Block block, final int metadata) {
final Integer entry = this.whiteList.get(block.getRegistryName());
if (entry != null) {
return entry == metadata || entry == 16;
}
return false;
}
}
@@ -0,0 +1,90 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
*
* Applied Energistics 2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Applied Energistics 2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
package appeng.core;
import appeng.items.parts.ItemFacade;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.NonNullList;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.ArrayList;
import java.util.List;
public final class FacadeItemGroup extends ItemGroup {
private final ItemFacade itemFacade;
private List<ItemStack> subTypes = null;
public FacadeItemGroup() {
super("appliedenergistics2.facades");
itemFacade = (ItemFacade) Api.INSTANCE.definitions().items().facade().item();
}
@Override
public ItemStack createIcon() {
this.calculateSubTypes();
if (this.subTypes.isEmpty()) {
return new ItemStack(Items.CAKE);
}
return this.subTypes.get(0);
}
@Override
public void fill(NonNullList<ItemStack> items) {
this.calculateSubTypes();
items.addAll(subTypes);
}
private void calculateSubTypes() {
if (this.subTypes != null) {
return;
}
this.subTypes = new ArrayList<>(1000);
for (final Block b : ForgeRegistries.BLOCKS) {
try {
final Item item = Item.getItemFromBlock(b);
if (item == Items.AIR) {
continue;
}
Item blockItem = b.asItem();
if (blockItem != Items.AIR && blockItem.getGroup() != null) {
final NonNullList<ItemStack> tmpList = NonNullList.create();
b.fillItemGroup(blockItem.getGroup(), tmpList);
for (final ItemStack l : tmpList) {
final ItemStack facade = itemFacade.createFacadeForItem(l, false);
if (!facade.isEmpty()) {
this.subTypes.add(facade);
}
}
}
} catch (final Throwable t) {
// just absorb..
}
}
}
}
+48 -141
View File
@@ -18,49 +18,6 @@
package appeng.core;
import appeng.items.parts.ItemFacade;
import appeng.recipes.game.FacadeRecipe;
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.biome.Biome;
import net.minecraft.world.dimension.DimensionType;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
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.ModDimension;
import net.minecraftforge.common.crafting.CraftingHelper;
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.AEApi;
import appeng.api.config.Upgrades;
import appeng.api.definitions.IBlocks;
@@ -79,45 +36,8 @@ import appeng.api.networking.security.ISecurityGrid;
import appeng.api.networking.spatial.ISpatialCache;
import appeng.api.networking.storage.IStorageGrid;
import appeng.api.networking.ticking.ITickManager;
import appeng.bootstrap.components.IBlockRegistrationComponent;
import appeng.bootstrap.components.IEntityRegistrationComponent;
import appeng.bootstrap.components.IItemColorRegistrationComponent;
import appeng.bootstrap.components.IItemRegistrationComponent;
import appeng.bootstrap.components.IModelBakeComponent;
import appeng.bootstrap.components.ITileEntityRegistrationComponent;
import appeng.client.gui.implementations.GuiCellWorkbench;
import appeng.client.gui.implementations.GuiChest;
import appeng.client.gui.implementations.GuiCondenser;
import appeng.client.gui.implementations.GuiCraftAmount;
import appeng.client.gui.implementations.GuiCraftConfirm;
import appeng.client.gui.implementations.GuiCraftingCPU;
import appeng.client.gui.implementations.GuiCraftingStatus;
import appeng.client.gui.implementations.GuiCraftingTerm;
import appeng.client.gui.implementations.GuiDrive;
import appeng.client.gui.implementations.GuiFormationPlane;
import appeng.client.gui.implementations.GuiGrinder;
import appeng.client.gui.implementations.GuiIOPort;
import appeng.client.gui.implementations.GuiInscriber;
import appeng.client.gui.implementations.GuiInterface;
import appeng.client.gui.implementations.GuiInterfaceTerminal;
import appeng.client.gui.implementations.GuiLevelEmitter;
import appeng.client.gui.implementations.GuiMEMonitorable;
import appeng.client.gui.implementations.GuiMEPortableCell;
import appeng.client.gui.implementations.GuiMolecularAssembler;
import appeng.client.gui.implementations.GuiNetworkStatus;
import appeng.client.gui.implementations.GuiNetworkTool;
import appeng.client.gui.implementations.GuiPatternTerm;
import appeng.client.gui.implementations.GuiPriority;
import appeng.client.gui.implementations.GuiQNB;
import appeng.client.gui.implementations.GuiQuartzKnife;
import appeng.client.gui.implementations.GuiSecurityStation;
import appeng.client.gui.implementations.GuiSkyChest;
import appeng.client.gui.implementations.GuiSpatialIOPort;
import appeng.client.gui.implementations.GuiStorageBus;
import appeng.client.gui.implementations.GuiUpgradeable;
import appeng.client.gui.implementations.GuiVibrationChamber;
import appeng.client.gui.implementations.GuiWireless;
import appeng.client.gui.implementations.GuiWirelessTerm;
import appeng.bootstrap.components.*;
import appeng.client.gui.implementations.*;
import appeng.client.render.effects.*;
import appeng.client.render.model.BiometricCardModel;
import appeng.client.render.model.DriveModel;
@@ -127,39 +47,7 @@ import appeng.client.render.tesr.InscriberTESR;
import appeng.client.render.tesr.SkyChestTESR;
import appeng.container.AEBaseContainer;
import appeng.container.ContainerOpener;
import appeng.container.implementations.ContainerCellWorkbench;
import appeng.container.implementations.ContainerChest;
import appeng.container.implementations.ContainerCondenser;
import appeng.container.implementations.ContainerCraftAmount;
import appeng.container.implementations.ContainerCraftConfirm;
import appeng.container.implementations.ContainerCraftingCPU;
import appeng.container.implementations.ContainerCraftingStatus;
import appeng.container.implementations.ContainerCraftingTerm;
import appeng.container.implementations.ContainerDrive;
import appeng.container.implementations.ContainerFormationPlane;
import appeng.container.implementations.ContainerGrinder;
import appeng.container.implementations.ContainerIOPort;
import appeng.container.implementations.ContainerInscriber;
import appeng.container.implementations.ContainerInterface;
import appeng.container.implementations.ContainerInterfaceTerminal;
import appeng.container.implementations.ContainerLevelEmitter;
import appeng.container.implementations.ContainerMEMonitorable;
import appeng.container.implementations.ContainerMEPortableCell;
import appeng.container.implementations.ContainerMolecularAssembler;
import appeng.container.implementations.ContainerNetworkStatus;
import appeng.container.implementations.ContainerNetworkTool;
import appeng.container.implementations.ContainerPatternTerm;
import appeng.container.implementations.ContainerPriority;
import appeng.container.implementations.ContainerQNB;
import appeng.container.implementations.ContainerQuartzKnife;
import appeng.container.implementations.ContainerSecurityStation;
import appeng.container.implementations.ContainerSkyChest;
import appeng.container.implementations.ContainerSpatialIOPort;
import appeng.container.implementations.ContainerStorageBus;
import appeng.container.implementations.ContainerUpgradeable;
import appeng.container.implementations.ContainerVibrationChamber;
import appeng.container.implementations.ContainerWireless;
import appeng.container.implementations.ContainerWirelessTerm;
import appeng.container.implementations.*;
import appeng.core.features.registries.P2PTunnelRegistry;
import appeng.core.features.registries.PartModels;
import appeng.core.features.registries.cell.BasicCellHandler;
@@ -168,29 +56,14 @@ import appeng.core.features.registries.cell.CreativeCellHandler;
import appeng.core.stats.AdvancementTriggers;
import appeng.core.stats.AeStats;
import appeng.core.stats.PartItemPredicate;
import appeng.fluids.client.gui.GuiFluidFormationPlane;
import appeng.fluids.client.gui.GuiFluidIO;
import appeng.fluids.client.gui.GuiFluidInterface;
import appeng.fluids.client.gui.GuiFluidLevelEmitter;
import appeng.fluids.client.gui.GuiFluidStorageBus;
import appeng.fluids.client.gui.GuiFluidTerminal;
import appeng.fluids.container.ContainerFluidFormationPlane;
import appeng.fluids.container.ContainerFluidIO;
import appeng.fluids.container.ContainerFluidInterface;
import appeng.fluids.container.ContainerFluidLevelEmitter;
import appeng.fluids.container.ContainerFluidStorageBus;
import appeng.fluids.container.ContainerFluidTerminal;
import appeng.fluids.client.gui.*;
import appeng.fluids.container.*;
import appeng.fluids.registries.BasicFluidCellGuiHandler;
import appeng.me.cache.CraftingGridCache;
import appeng.me.cache.EnergyGridCache;
import appeng.me.cache.GridStorageCache;
import appeng.me.cache.P2PCache;
import appeng.me.cache.PathGridCache;
import appeng.me.cache.SecurityCache;
import appeng.me.cache.SpatialPylonCache;
import appeng.me.cache.TickManagerCache;
import appeng.items.parts.ItemFacade;
import appeng.me.cache.*;
import appeng.recipes.conditions.FeaturesEnabled;
import appeng.recipes.game.DisassembleRecipe;
import appeng.recipes.game.FacadeRecipe;
import appeng.recipes.handlers.GrinderRecipe;
import appeng.recipes.handlers.GrinderRecipeSerializer;
import appeng.recipes.handlers.InscriberRecipe;
@@ -203,6 +76,44 @@ import appeng.tile.crafting.MolecularAssemblerRenderer;
import appeng.worldgen.ChargedQuartzOreConfig;
import appeng.worldgen.ChargedQuartzOreFeature;
import appeng.worldgen.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.biome.Biome;
import net.minecraft.world.dimension.DimensionType;
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.*;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.common.ModDimension;
import net.minecraftforge.common.crafting.CraftingHelper;
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 {
@@ -428,12 +339,8 @@ final class Registration {
InscriberRecipe.TYPE = new AERecipeType<>(InscriberRecipeSerializer.INSTANCE.getRegistryName());
ItemFacade facadeItem = (ItemFacade) Api.INSTANCE.definitions().items().facade().item();
r.registerAll(
DisassembleRecipe.SERIALIZER,
GrinderRecipeSerializer.INSTANCE,
InscriberRecipeSerializer.INSTANCE,
FacadeRecipe.getSerializer(facadeItem)
);
r.registerAll(DisassembleRecipe.SERIALIZER, GrinderRecipeSerializer.INSTANCE,
InscriberRecipeSerializer.INSTANCE, FacadeRecipe.getSerializer(facadeItem));
CraftingHelper.register(FeaturesEnabled.Serializer.INSTANCE);
}