Lots of fixes
This commit is contained in:
@@ -1,8 +1,14 @@
|
||||
package appeng.core;
|
||||
|
||||
import appeng.core.Api;
|
||||
import appeng.api.config.Upgrades;
|
||||
import appeng.api.definitions.IBlocks;
|
||||
import appeng.api.definitions.IItems;
|
||||
import appeng.api.definitions.IParts;
|
||||
import appeng.api.features.AEFeature;
|
||||
import appeng.api.features.IRegistryContainer;
|
||||
import appeng.api.features.IWirelessTermHandler;
|
||||
import appeng.api.features.IWorldGen;
|
||||
import appeng.api.movable.IMovableRegistry;
|
||||
import appeng.api.networking.IGridCacheRegistry;
|
||||
import appeng.api.networking.crafting.ICraftingGrid;
|
||||
import appeng.api.networking.energy.IEnergyGrid;
|
||||
@@ -17,28 +23,82 @@ import appeng.bootstrap.components.ITileEntityRegistrationComponent;
|
||||
import appeng.client.render.effects.ParticleTypes;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.container.ContainerOpener;
|
||||
import appeng.container.implementations.*;
|
||||
import appeng.container.implementations.CellWorkbenchContainer;
|
||||
import appeng.container.implementations.ChestContainer;
|
||||
import appeng.container.implementations.CondenserContainer;
|
||||
import appeng.container.implementations.CraftAmountContainer;
|
||||
import appeng.container.implementations.CraftConfirmContainer;
|
||||
import appeng.container.implementations.CraftingCPUContainer;
|
||||
import appeng.container.implementations.CraftingStatusContainer;
|
||||
import appeng.container.implementations.CraftingTermContainer;
|
||||
import appeng.container.implementations.DriveContainer;
|
||||
import appeng.container.implementations.FormationPlaneContainer;
|
||||
import appeng.container.implementations.GrinderContainer;
|
||||
import appeng.container.implementations.IOPortContainer;
|
||||
import appeng.container.implementations.InscriberContainer;
|
||||
import appeng.container.implementations.InterfaceContainer;
|
||||
import appeng.container.implementations.InterfaceTerminalContainer;
|
||||
import appeng.container.implementations.LevelEmitterContainer;
|
||||
import appeng.container.implementations.MEMonitorableContainer;
|
||||
import appeng.container.implementations.MEPortableCellContainer;
|
||||
import appeng.container.implementations.MolecularAssemblerContainer;
|
||||
import appeng.container.implementations.NetworkStatusContainer;
|
||||
import appeng.container.implementations.NetworkToolContainer;
|
||||
import appeng.container.implementations.PatternTermContainer;
|
||||
import appeng.container.implementations.PriorityContainer;
|
||||
import appeng.container.implementations.QNBContainer;
|
||||
import appeng.container.implementations.QuartzKnifeContainer;
|
||||
import appeng.container.implementations.SecurityStationContainer;
|
||||
import appeng.container.implementations.SkyChestContainer;
|
||||
import appeng.container.implementations.SpatialIOPortContainer;
|
||||
import appeng.container.implementations.StorageBusContainer;
|
||||
import appeng.container.implementations.UpgradeableContainer;
|
||||
import appeng.container.implementations.VibrationChamberContainer;
|
||||
import appeng.container.implementations.WirelessContainer;
|
||||
import appeng.container.implementations.WirelessTermContainer;
|
||||
import appeng.core.features.registries.P2PTunnelRegistry;
|
||||
import appeng.core.features.registries.cell.BasicCellHandler;
|
||||
import appeng.core.features.registries.cell.BasicItemCellGuiHandler;
|
||||
import appeng.core.features.registries.cell.CreativeCellHandler;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.core.stats.AdvancementTriggers;
|
||||
import appeng.core.stats.AeStats;
|
||||
import appeng.core.sync.BasePacket;
|
||||
import appeng.core.sync.network.NetworkHandler;
|
||||
import appeng.core.sync.network.TargetPoint;
|
||||
import appeng.fluids.container.*;
|
||||
import appeng.fluids.container.FluidFormationPlaneContainer;
|
||||
import appeng.fluids.container.FluidIOContainer;
|
||||
import appeng.fluids.container.FluidInterfaceContainer;
|
||||
import appeng.fluids.container.FluidLevelEmitterContainer;
|
||||
import appeng.fluids.container.FluidStorageBusContainer;
|
||||
import appeng.fluids.container.FluidTerminalContainer;
|
||||
import appeng.fluids.registries.BasicFluidCellGuiHandler;
|
||||
import appeng.forge.data.AE2DataGenerators;
|
||||
import appeng.hooks.ToolItemHook;
|
||||
import appeng.items.tools.NetworkToolItem;
|
||||
import appeng.me.cache.*;
|
||||
import appeng.mixins.CriteriaRegisterMixin;
|
||||
import appeng.hooks.RegisterDimensionTypeCallback;
|
||||
import appeng.recipes.handlers.*;
|
||||
import appeng.hooks.ToolItemHook;
|
||||
import appeng.items.parts.FacadeItem;
|
||||
import appeng.items.tools.NetworkToolItem;
|
||||
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.mixins.CriteriaRegisterMixin;
|
||||
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;
|
||||
import appeng.recipes.handlers.InscriberRecipeSerializer;
|
||||
import appeng.recipes.handlers.QuartzKnifeRecipeSerializer;
|
||||
import appeng.server.AECommand;
|
||||
import appeng.spatial.SpatialDimensionManager;
|
||||
import appeng.spatial.StorageCellBiome;
|
||||
import appeng.spatial.StorageChunkGenerator;
|
||||
import appeng.tile.AEBaseBlockEntity;
|
||||
import appeng.worldgen.ChargedQuartzOreConfig;
|
||||
import appeng.worldgen.ChargedQuartzOreFeature;
|
||||
import appeng.worldgen.meteorite.MeteoriteStructure;
|
||||
@@ -47,6 +107,25 @@ import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
|
||||
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BannerBlockEntity;
|
||||
import net.minecraft.block.entity.BeaconBlockEntity;
|
||||
import net.minecraft.block.entity.BrewingStandBlockEntity;
|
||||
import net.minecraft.block.entity.ChestBlockEntity;
|
||||
import net.minecraft.block.entity.CommandBlockBlockEntity;
|
||||
import net.minecraft.block.entity.ComparatorBlockEntity;
|
||||
import net.minecraft.block.entity.DaylightDetectorBlockEntity;
|
||||
import net.minecraft.block.entity.DispenserBlockEntity;
|
||||
import net.minecraft.block.entity.DropperBlockEntity;
|
||||
import net.minecraft.block.entity.EnchantingTableBlockEntity;
|
||||
import net.minecraft.block.entity.EndPortalBlockEntity;
|
||||
import net.minecraft.block.entity.EnderChestBlockEntity;
|
||||
import net.minecraft.block.entity.FurnaceBlockEntity;
|
||||
import net.minecraft.block.entity.HopperBlockEntity;
|
||||
import net.minecraft.block.entity.MobSpawnerBlockEntity;
|
||||
import net.minecraft.block.entity.PistonBlockEntity;
|
||||
import net.minecraft.block.entity.ShulkerBoxBlockEntity;
|
||||
import net.minecraft.block.entity.SignBlockEntity;
|
||||
import net.minecraft.block.entity.SkullBlockEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -55,6 +134,7 @@ import net.minecraft.recipe.Recipe;
|
||||
import net.minecraft.recipe.RecipeType;
|
||||
import net.minecraft.screen.ScreenHandlerType;
|
||||
import net.minecraft.tag.BlockTags;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.World;
|
||||
@@ -136,6 +216,177 @@ public abstract class AppEngBase implements AppEng {
|
||||
registries.cell().addCellGuiHandler(new BasicFluidCellGuiHandler());
|
||||
|
||||
registries.matterCannon().registerAmmoItem(api.definitions().materials().matterBall().item(), 32);
|
||||
|
||||
// TODO: Do not use the internal API
|
||||
ApiDefinitions definitions = Api.INSTANCE.definitions();
|
||||
final IParts parts = definitions.parts();
|
||||
final IBlocks blocks = definitions.blocks();
|
||||
final IItems items = definitions.items();
|
||||
|
||||
// Block and part interface have different translation keys, but support the
|
||||
// same upgrades
|
||||
String interfaceGroup = parts.iface().asItem().getTranslationKey();
|
||||
String itemIoBusGroup = GuiText.IOBuses.getTranslationKey();
|
||||
String fluidIoBusGroup = GuiText.IOBusesFluids.getTranslationKey();
|
||||
String storageCellGroup = GuiText.IOBusesFluids.getTranslationKey();
|
||||
|
||||
// default settings..
|
||||
((P2PTunnelRegistry) registries.p2pTunnel()).configure();
|
||||
|
||||
// Interface
|
||||
Upgrades.CRAFTING.registerItem(parts.iface(), 1, interfaceGroup);
|
||||
Upgrades.CRAFTING.registerItem(blocks.iface(), 1, interfaceGroup);
|
||||
|
||||
// IO Port!
|
||||
Upgrades.SPEED.registerItem(blocks.iOPort(), 3);
|
||||
Upgrades.REDSTONE.registerItem(blocks.iOPort(), 1);
|
||||
|
||||
// Level Emitter!
|
||||
Upgrades.FUZZY.registerItem(parts.levelEmitter(), 1);
|
||||
Upgrades.CRAFTING.registerItem(parts.levelEmitter(), 1);
|
||||
|
||||
// Import Bus
|
||||
Upgrades.FUZZY.registerItem(parts.importBus(), 1, itemIoBusGroup);
|
||||
Upgrades.REDSTONE.registerItem(parts.importBus(), 1, itemIoBusGroup);
|
||||
Upgrades.CAPACITY.registerItem(parts.importBus(), 2, itemIoBusGroup);
|
||||
Upgrades.SPEED.registerItem(parts.importBus(), 4, itemIoBusGroup);
|
||||
|
||||
// Fluid Import Bus
|
||||
Upgrades.CAPACITY.registerItem(parts.fluidImportBus(), 2, fluidIoBusGroup);
|
||||
Upgrades.REDSTONE.registerItem(parts.fluidImportBus(), 1, fluidIoBusGroup);
|
||||
Upgrades.SPEED.registerItem(parts.fluidImportBus(), 4, fluidIoBusGroup);
|
||||
|
||||
// Export Bus
|
||||
Upgrades.FUZZY.registerItem(parts.exportBus(), 1, itemIoBusGroup);
|
||||
Upgrades.REDSTONE.registerItem(parts.exportBus(), 1, itemIoBusGroup);
|
||||
Upgrades.CAPACITY.registerItem(parts.exportBus(), 2, itemIoBusGroup);
|
||||
Upgrades.SPEED.registerItem(parts.exportBus(), 4, itemIoBusGroup);
|
||||
Upgrades.CRAFTING.registerItem(parts.exportBus(), 1, itemIoBusGroup);
|
||||
|
||||
// Fluid Export Bus
|
||||
Upgrades.CAPACITY.registerItem(parts.fluidExportBus(), 2, fluidIoBusGroup);
|
||||
Upgrades.REDSTONE.registerItem(parts.fluidExportBus(), 1, fluidIoBusGroup);
|
||||
Upgrades.SPEED.registerItem(parts.fluidExportBus(), 4, fluidIoBusGroup);
|
||||
|
||||
// Storage Cells
|
||||
Upgrades.FUZZY.registerItem(items.cell1k(), 1, storageCellGroup);
|
||||
Upgrades.INVERTER.registerItem(items.cell1k(), 1, storageCellGroup);
|
||||
|
||||
Upgrades.FUZZY.registerItem(items.cell4k(), 1, storageCellGroup);
|
||||
Upgrades.INVERTER.registerItem(items.cell4k(), 1, storageCellGroup);
|
||||
|
||||
Upgrades.FUZZY.registerItem(items.cell16k(), 1, storageCellGroup);
|
||||
Upgrades.INVERTER.registerItem(items.cell16k(), 1, storageCellGroup);
|
||||
|
||||
Upgrades.FUZZY.registerItem(items.cell64k(), 1, storageCellGroup);
|
||||
Upgrades.INVERTER.registerItem(items.cell64k(), 1, storageCellGroup);
|
||||
|
||||
Upgrades.FUZZY.registerItem(items.portableCell(), 1, storageCellGroup);
|
||||
Upgrades.INVERTER.registerItem(items.portableCell(), 1, storageCellGroup);
|
||||
|
||||
Upgrades.FUZZY.registerItem(items.viewCell(), 1);
|
||||
Upgrades.INVERTER.registerItem(items.viewCell(), 1);
|
||||
|
||||
// Storage Bus
|
||||
Upgrades.FUZZY.registerItem(parts.storageBus(), 1);
|
||||
Upgrades.INVERTER.registerItem(parts.storageBus(), 1);
|
||||
Upgrades.CAPACITY.registerItem(parts.storageBus(), 5);
|
||||
|
||||
// Storage Bus Fluids
|
||||
Upgrades.INVERTER.registerItem(parts.fluidStorageBus(), 1);
|
||||
Upgrades.CAPACITY.registerItem(parts.fluidStorageBus(), 5);
|
||||
|
||||
// Formation Plane
|
||||
Upgrades.FUZZY.registerItem(parts.formationPlane(), 1);
|
||||
Upgrades.INVERTER.registerItem(parts.formationPlane(), 1);
|
||||
Upgrades.CAPACITY.registerItem(parts.formationPlane(), 5);
|
||||
|
||||
// Matter Cannon
|
||||
Upgrades.FUZZY.registerItem(items.massCannon(), 1);
|
||||
Upgrades.INVERTER.registerItem(items.massCannon(), 1);
|
||||
Upgrades.SPEED.registerItem(items.massCannon(), 4);
|
||||
|
||||
// Molecular Assembler
|
||||
Upgrades.SPEED.registerItem(blocks.molecularAssembler(), 5);
|
||||
|
||||
// Inscriber
|
||||
Upgrades.SPEED.registerItem(blocks.inscriber(), 3);
|
||||
|
||||
// Wireless Terminal Handler
|
||||
items.wirelessTerminal().maybeItem()
|
||||
.ifPresent(terminal -> registries.wireless().registerWirelessHandler((IWirelessTermHandler) terminal));
|
||||
|
||||
// Charge Rates
|
||||
items.chargedStaff().maybeItem()
|
||||
.ifPresent(chargedStaff -> registries.charger().addChargeRate(chargedStaff, 320d));
|
||||
items.portableCell().maybeItem()
|
||||
.ifPresent(chargedStaff -> registries.charger().addChargeRate(chargedStaff, 800d));
|
||||
items.colorApplicator().maybeItem()
|
||||
.ifPresent(colorApplicator -> registries.charger().addChargeRate(colorApplicator, 800d));
|
||||
items.wirelessTerminal().maybeItem().ifPresent(terminal -> registries.charger().addChargeRate(terminal, 8000d));
|
||||
items.entropyManipulator().maybeItem()
|
||||
.ifPresent(entropyManipulator -> registries.charger().addChargeRate(entropyManipulator, 8000d));
|
||||
items.massCannon().maybeItem().ifPresent(massCannon -> registries.charger().addChargeRate(massCannon, 8000d));
|
||||
blocks.energyCell().maybeItem().ifPresent(cell -> registries.charger().addChargeRate(cell, 8000d));
|
||||
blocks.energyCellDense().maybeItem().ifPresent(cell -> registries.charger().addChargeRate(cell, 16000d));
|
||||
|
||||
// FIXME // add villager trading to black smiths for a few basic materials
|
||||
// FIXME if( AEConfig.instance().isFeatureEnabled( AEFeature.VILLAGER_TRADING ) )
|
||||
// FIXME {
|
||||
// FIXME // TODO: VILLAGER TRADING
|
||||
// FIXME // VillagerRegistry.instance().getRegisteredVillagers().registerVillageTradeHandler( 3, new AETrading() );
|
||||
// FIXME }
|
||||
|
||||
final IMovableRegistry mr = registries.movable();
|
||||
|
||||
/*
|
||||
* You can't move bed rock.
|
||||
*/
|
||||
mr.blacklistBlock(net.minecraft.block.Blocks.BEDROCK);
|
||||
|
||||
/*
|
||||
* White List Vanilla...
|
||||
*/
|
||||
mr.whiteListBlockEntity(BannerBlockEntity.class);
|
||||
mr.whiteListBlockEntity(BeaconBlockEntity.class);
|
||||
mr.whiteListBlockEntity(BrewingStandBlockEntity.class);
|
||||
mr.whiteListBlockEntity(ChestBlockEntity.class);
|
||||
mr.whiteListBlockEntity(CommandBlockBlockEntity.class);
|
||||
mr.whiteListBlockEntity(ComparatorBlockEntity.class);
|
||||
mr.whiteListBlockEntity(DaylightDetectorBlockEntity.class);
|
||||
mr.whiteListBlockEntity(DispenserBlockEntity.class);
|
||||
mr.whiteListBlockEntity(DropperBlockEntity.class);
|
||||
mr.whiteListBlockEntity(EnchantingTableBlockEntity.class);
|
||||
mr.whiteListBlockEntity(EnderChestBlockEntity.class);
|
||||
mr.whiteListBlockEntity(EndPortalBlockEntity.class);
|
||||
mr.whiteListBlockEntity(FurnaceBlockEntity.class);
|
||||
mr.whiteListBlockEntity(HopperBlockEntity.class);
|
||||
mr.whiteListBlockEntity(MobSpawnerBlockEntity.class);
|
||||
mr.whiteListBlockEntity(PistonBlockEntity.class);
|
||||
mr.whiteListBlockEntity(ShulkerBoxBlockEntity.class);
|
||||
mr.whiteListBlockEntity(SignBlockEntity.class);
|
||||
mr.whiteListBlockEntity(SkullBlockEntity.class);
|
||||
|
||||
/*
|
||||
* Whitelist AE2
|
||||
*/
|
||||
mr.whiteListBlockEntity(AEBaseBlockEntity.class);
|
||||
|
||||
/*
|
||||
* world gen
|
||||
*/
|
||||
for (final IWorldGen.WorldGenType type : IWorldGen.WorldGenType.values()) {
|
||||
// FIXME: registries.worldgen().disableWorldGenForProviderID( type,
|
||||
// StorageWorldProvider.class );
|
||||
|
||||
registries.worldgen().disableWorldGenForDimension(type, DimensionType.THE_NETHER_REGISTRY_KEY.getValue());
|
||||
}
|
||||
|
||||
// whitelist from config
|
||||
for (final String dimension : AEConfig.instance().getMeteoriteDimensionWhitelist()) {
|
||||
registries.worldgen().enableWorldGenForDimension(IWorldGen.WorldGenType.METEORITES,
|
||||
new Identifier(dimension));
|
||||
}
|
||||
}
|
||||
|
||||
protected void registerParticleTypes() {
|
||||
@@ -167,10 +418,9 @@ public abstract class AppEngBase implements AppEng {
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("quartz_knife"), QuartzKnifeRecipeSerializer.INSTANCE);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("grinder"), GrinderRecipeSerializer.INSTANCE);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("inscriber"), InscriberRecipeSerializer.INSTANCE);
|
||||
|
||||
// FIXME FABRIC FacadeItem facadeItem = (FacadeItem) Api.INSTANCE.definitions().items().facade().item();
|
||||
// FIXME FABRIC r.registerAll(DisassembleRecipe.SERIALIZER,
|
||||
// FIXME FABRIC FacadeRecipe.getSerializer(facadeItem));
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("disassemble"), DisassembleRecipe.SERIALIZER);
|
||||
FacadeItem facadeItem = (FacadeItem) Api.INSTANCE.definitions().items().facade().item();
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("facade"), FacadeRecipe.getSerializer(facadeItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user