diff --git a/src/main/java/appeng/core/AEConfig.java b/src/main/java/appeng/core/AEConfig.java index 65e55b1c8..d09d0f9e8 100644 --- a/src/main/java/appeng/core/AEConfig.java +++ b/src/main/java/appeng/core/AEConfig.java @@ -215,6 +215,7 @@ public final class AEConfig extends Configuration implements IConfigurableObject this.clientSync(); + this.addCustomCategoryComment( "features", "Warning: Disabling a feature may disable other features depending on it." ); for( final AEFeature feature : AEFeature.values() ) { if( feature.isVisible() ) diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index a26537faf..f5cd8600a 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -265,11 +265,13 @@ public final class ApiBlocks implements IBlocks .build(); this.matrixFrame = registry.block( "matrix_frame", BlockMatrixFrame::new ).features( AEFeature.SPATIAL_IO ).build(); - FeatureFactory deco = registry.features( AEFeature.DECORATIVE_QUARTZ_BLOCKS ); + FeatureFactory deco = registry.features( AEFeature.DECORATIVE_BLOCKS ); this.quartzBlock = deco.block( "quartz_block", BlockQuartz::new ).build(); this.quartzPillar = deco.block( "quartz_pillar", BlockQuartzPillar::new ).build(); this.chiseledQuartzBlock = deco.block( "chiseled_quartz_block", BlockChiseledQuartz::new ).build(); - this.quartzGlass = deco.block( "quartz_glass", BlockQuartzGlass::new ) + + this.quartzGlass = registry.features( AEFeature.QUARTZ_GLASS ) + .block( "quartz_glass", BlockQuartzGlass::new ) .useCustomItemModel() .rendering( new BlockRenderingCustomizer() { @@ -282,7 +284,7 @@ public final class ApiBlocks implements IBlocks } ) .build(); this.quartzVibrantGlass = deco.block( "quartz_vibrant_glass", BlockQuartzLamp::new ) - .addFeatures( AEFeature.DECORATIVE_LIGHTS ) + .addFeatures( AEFeature.DECORATIVE_LIGHTS, AEFeature.QUARTZ_GLASS ) .useCustomItemModel() .build(); this.quartzFixture = registry.block( "quartz_fixture", BlockQuartzFixture::new ) @@ -290,19 +292,28 @@ public final class ApiBlocks implements IBlocks .useCustomItemModel() .build(); - this.fluixBlock = deco.block( "fluix_block", BlockFluix::new ).build(); - this.skyStoneBlock = deco.block( "sky_stone_block", () -> new BlockSkyStone( SkystoneType.STONE ) ).build(); - this.smoothSkyStoneBlock = deco.block( "smooth_sky_stone_block", () -> new BlockSkyStone( SkystoneType.BLOCK ) ).build(); - this.skyStoneBrick = deco.block( "sky_stone_brick", () -> new BlockSkyStone( SkystoneType.BRICK ) ).build(); - this.skyStoneSmallBrick = deco.block( "sky_stone_small_brick", () -> new BlockSkyStone( SkystoneType.SMALL_BRICK ) ).build(); + this.fluixBlock = registry.features( AEFeature.FLUIX ).block( "fluix_block", BlockFluix::new ).build(); + + this.skyStoneBlock = registry.features( AEFeature.SKY_STONE ) + .block( "sky_stone_block", () -> new BlockSkyStone( SkystoneType.STONE ) ) + .build(); + this.smoothSkyStoneBlock = registry.features( AEFeature.SKY_STONE ) + .block( "smooth_sky_stone_block", () -> new BlockSkyStone( SkystoneType.BLOCK ) ) + .build(); + this.skyStoneBrick = deco.block( "sky_stone_brick", () -> new BlockSkyStone( SkystoneType.BRICK ) ) + .addFeatures( AEFeature.SKY_STONE ) + .build(); + this.skyStoneSmallBrick = deco.block( "sky_stone_small_brick", () -> new BlockSkyStone( SkystoneType.SMALL_BRICK ) ) + .addFeatures( AEFeature.SKY_STONE ) + .build(); this.skyStoneChest = registry.block( "sky_stone_chest", () -> new BlockSkyChest( SkyChestType.STONE ) ) - .features( AEFeature.SKY_STONE_CHESTS ) + .features( AEFeature.SKY_STONE, AEFeature.SKY_STONE_CHESTS ) .tileEntity( new TileEntityDefinition( TileSkyChest.class, "sky_stone_chest" ) ) .rendering( new SkyChestRenderingCustomizer( SkyChestType.STONE ) ) .build(); this.smoothSkyStoneChest = registry.block( "smooth_sky_stone_chest", () -> new BlockSkyChest( SkyChestType.BLOCK ) ) - .features( AEFeature.SKY_STONE_CHESTS ) + .features( AEFeature.SKY_STONE, AEFeature.SKY_STONE_CHESTS ) .tileEntity( new TileEntityDefinition( TileSkyChest.class, "sky_stone_chest" ) ) .rendering( new SkyChestRenderingCustomizer( SkyChestType.BLOCK ) ) .build(); @@ -571,7 +582,7 @@ public final class ApiBlocks implements IBlocks Block block = blockDef.maybeBlock().get(); IBlockDefinition slabDef = registry.block( slabId, () -> new BlockSlabCommon.Half( block ) ) - .features( AEFeature.DECORATIVE_QUARTZ_BLOCKS ) + .features( AEFeature.DECORATIVE_BLOCKS ) .disableItem() .build(); @@ -584,7 +595,7 @@ public final class ApiBlocks implements IBlocks // Reigster the double slab variant as well IBlockDefinition doubleSlabDef = registry.block( doubleSlabId, () -> new BlockSlabCommon.Double( slabBlock, block ) ) - .features( AEFeature.DECORATIVE_QUARTZ_BLOCKS ) + .features( AEFeature.DECORATIVE_BLOCKS ) .disableItem() .build(); @@ -594,7 +605,7 @@ public final class ApiBlocks implements IBlocks // Make the slab item IItemDefinition itemDef = registry.item( slabId, () -> new ItemSlab( slabBlock, slabBlock, doubleSlabBlock ) ) - .features( AEFeature.DECORATIVE_QUARTZ_BLOCKS ) + .features( AEFeature.DECORATIVE_BLOCKS ) .build(); Verify.verify( itemDef.maybeItem().isPresent() ); @@ -606,7 +617,7 @@ public final class ApiBlocks implements IBlocks private static IBlockDefinition makeStairs( String registryName, FeatureFactory registry, IBlockDefinition block ) { return registry.block( registryName, () -> new BlockStairCommon( block.maybeBlock().get(), block.identifier() ) ) - .features( AEFeature.DECORATIVE_QUARTZ_BLOCKS ) + .features( AEFeature.DECORATIVE_BLOCKS ) .rendering( new BlockRenderingCustomizer() { @Override diff --git a/src/main/java/appeng/core/features/AEFeature.java b/src/main/java/appeng/core/features/AEFeature.java index 935cd853d..f7e1e707c 100644 --- a/src/main/java/appeng/core/features/AEFeature.java +++ b/src/main/java/appeng/core/features/AEFeature.java @@ -36,20 +36,22 @@ public enum AEFeature CERTUS_QUARTZ_WORLD_GEN( "CertusQuartzWorldGen", Constants.CATEGORY_WORLD ), METEORITE_WORLD_GEN( "MeteoriteWorldGen", Constants.CATEGORY_WORLD ), DECORATIVE_LIGHTS( "DecorativeLights", Constants.CATEGORY_WORLD ), - DECORATIVE_QUARTZ_BLOCKS( "DecorativeQuartzBlocks", Constants.CATEGORY_WORLD ), + DECORATIVE_BLOCKS( "DecorativeBlocks", Constants.CATEGORY_WORLD, "Blocks that are not used in any essential recipes, also slabs and stairs." ), SKY_STONE_CHESTS( "SkyStoneChests", Constants.CATEGORY_WORLD ), SPAWN_PRESSES_IN_METEORITES( "SpawnPressesInMeteorites", Constants.CATEGORY_WORLD ), - GRIND_STONE( "GrindStone", Constants.CATEGORY_WORLD ), FLOUR( "Flour", Constants.CATEGORY_WORLD ), - INSCRIBER( "Inscriber", Constants.CATEGORY_WORLD ), - CHARGER( "Charger", Constants.CATEGORY_WORLD ), - CRYSTAL_GROWTH_ACCELERATOR( "CrystalGrowthAccelerator", Constants.CATEGORY_WORLD ), CHEST_LOOT( "ChestLoot", Constants.CATEGORY_WORLD ), VILLAGER_TRADING( "VillagerTrading", Constants.CATEGORY_WORLD ), TINY_TNT( "TinyTNT", Constants.CATEGORY_WORLD ), CERTUS_ORE( "CertusOre", Constants.CATEGORY_WORLD ), CHARGED_CERTUS_ORE( "ChargedCertusOre", Constants.CATEGORY_WORLD ), + GRIND_STONE( "GrindStone", Constants.CATEGORY_MACHINES ), + INSCRIBER( "Inscriber", Constants.CATEGORY_MACHINES ), + CHARGER( "Charger", Constants.CATEGORY_MACHINES ), + CRYSTAL_GROWTH_ACCELERATOR( "CrystalGrowthAccelerator", Constants.CATEGORY_MACHINES ), + POWER_GEN( "VibrationChamber", Constants.CATEGORY_MACHINES ), + POWERED_TOOLS( "PoweredTools", Constants.CATEGORY_TOOLS_CLASSIFICATIONS ), CERTUS_QUARTZ_TOOLS( "CertusQuartzTools", Constants.CATEGORY_TOOLS_CLASSIFICATIONS ), NETHER_QUARTZ_TOOLS( "NetherQuartzTools", Constants.CATEGORY_TOOLS_CLASSIFICATIONS ), @@ -68,7 +70,6 @@ public enum AEFeature COLOR_APPLICATOR( "ColorApplicator", Constants.CATEGORY_TOOLS ), METEORITE_COMPASS( "MeteoriteCompass", Constants.CATEGORY_TOOLS ), - POWER_GEN( "PowerGen", Constants.CATEGORY_NETWORK_FEATURES ), SECURITY( "Security", Constants.CATEGORY_NETWORK_FEATURES ), SPATIAL_IO( "SpatialIO", Constants.CATEGORY_NETWORK_FEATURES ), QUANTUM_NETWORK_BRIDGE( "QuantumNetworkBridge", Constants.CATEGORY_NETWORK_FEATURES ), @@ -114,12 +115,11 @@ public enum AEFeature GLASS_CABLES( "GlassCables", Constants.CATEGORY_CABLES ), COVERED_CABLES( "CoveredCables", Constants.CATEGORY_CABLES ), SMART_CABLES( "SmartCables", Constants.CATEGORY_CABLES ), + DENSE_CABLES( "DenseCables", Constants.CATEGORY_CABLES ), ENERGY_CELLS( "EnergyCells", Constants.CATEGORY_ENERGY ), ENERGY_ACCEPTOR( "EnergyAcceptor", Constants.CATEGORY_ENERGY ), - - DENSE_ENERGY_CELLS( "DenseEnergyCells", Constants.CATEGORY_HIGHER_CAPACITY ), - DENSE_CABLES( "DenseCables", Constants.CATEGORY_HIGHER_CAPACITY ), + DENSE_ENERGY_CELLS( "DenseEnergyCells", Constants.CATEGORY_ENERGY ), P2P_TUNNEL_ME( "P2PTunnelME", Constants.CATEGORY_P2P_TUNNELS ), P2P_TUNNEL_ITEMS( "P2PTunnelItems", Constants.CATEGORY_P2P_TUNNELS ), @@ -169,9 +169,6 @@ public enum AEFeature ADVANCED_CARDS( "AdvancedCards", Constants.CATEGORY_UPGRADES ), VIEW_CELL( "ViewCell", Constants.CATEGORY_UPGRADES ), - PROCESSORS( "Processors", Constants.CATEGORY_MATERIALS ), - PRINTED_CIRCUITS( "PrintedCircuits", Constants.CATEGORY_MATERIALS ), - PRESSES( "Presses", Constants.CATEGORY_MATERIALS ), CRYSTAL_SEEDS( "CrystalSeeds", Constants.CATEGORY_MATERIALS ), PURE_CRYSTALS( "PureCrystals", Constants.CATEGORY_MATERIALS ), CERTUS( "Certus", Constants.CATEGORY_MATERIALS ), @@ -179,8 +176,14 @@ public enum AEFeature SILICON( "Silicon", Constants.CATEGORY_MATERIALS ), DUSTS( "Dusts", Constants.CATEGORY_MATERIALS ), NUGGETS( "Nuggets", Constants.CATEGORY_MATERIALS ), - MATTER_BALL( "MatterBall", Constants.CATEGORY_MATERIALS ), - CORES( "Cores", Constants.CATEGORY_MATERIALS ), + QUARTZ_GLASS( "QuartzGlass", Constants.CATEGORY_MATERIALS ), + SKY_STONE( "SkyStone", Constants.CATEGORY_MATERIALS ), + + PROCESSORS( "Processors", Constants.CATEGORY_COMPONENTS ), + PRINTED_CIRCUITS( "PrintedCircuits", Constants.CATEGORY_COMPONENTS ), + PRESSES( "Presses", Constants.CATEGORY_COMPONENTS ), + MATTER_BALL( "MatterBall", Constants.CATEGORY_COMPONENTS ), + CORES( "Cores", Constants.CATEGORY_COMPONENTS ), CHUNK_LOGGER_TRACE( "ChunkLoggerTrace", Constants.CATEGORY_COMMANDS, false ); @@ -249,6 +252,7 @@ public enum AEFeature private static final String CATEGORY_MISC = "Misc"; private static final String CATEGORY_CRAFTING = "Crafting"; private static final String CATEGORY_WORLD = "World"; + private static final String CATEGORY_MACHINES = "Machines"; private static final String CATEGORY_TOOLS = "Tools"; private static final String CATEGORY_TOOLS_CLASSIFICATIONS = "ToolsClassifications"; private static final String CATEGORY_NETWORK_BUSES = "NetworkBuses"; @@ -257,7 +261,6 @@ public enum AEFeature private static final String CATEGORY_CRAFTING_FEATURES = "CraftingFeatures"; private static final String CATEGORY_STORAGE = "Storage"; private static final String CATEGORY_CABLES = "Cables"; - private static final String CATEGORY_HIGHER_CAPACITY = "HigherCapacity"; private static final String CATEGORY_NETWORK_FEATURES = "NetworkFeatures"; private static final String CATEGORY_COMMANDS = "Commands"; private static final String CATEGORY_RENDERING = "Rendering"; @@ -267,5 +270,6 @@ public enum AEFeature private static final String CATEGORY_ENERGY = "Energy"; private static final String CATEGORY_UPGRADES = "Upgrades"; private static final String CATEGORY_MATERIALS = "Materials"; + private static final String CATEGORY_COMPONENTS = "CraftingComponents"; } }