Add data generation. (#4399)

Recipe and other Data Generators
This commit is contained in:
Eutro
2020-06-02 22:13:49 +01:00
committed by GitHub
parent 1056629545
commit 58afa6539f
139 changed files with 2702 additions and 962 deletions
+7
View File
@@ -223,12 +223,19 @@ sourceSets {
include 'appeng/block/grindstone/**' include 'appeng/block/grindstone/**'
include 'appeng/tile/grindstone/**' include 'appeng/tile/grindstone/**'
include 'appeng/container/implementations/ContainerGrinder.java' include 'appeng/container/implementations/ContainerGrinder.java'
include 'appeng/recipes/conditions/**'
include 'appeng/recipes/game/DisassembleRecipe.java'
include 'appeng/recipes/ingredients/**'
include 'appeng/forge/data/**'
include 'appeng/client/render/tesr/CrankTESR.java' include 'appeng/client/render/tesr/CrankTESR.java'
include 'appeng/client/render/FacingToRotation.java' include 'appeng/client/render/FacingToRotation.java'
include 'appeng/client/gui/implementations/GuiGrinder.java' include 'appeng/client/gui/implementations/GuiGrinder.java'
} }
compileClasspath += sourceSets.api.output compileClasspath += sourceSets.api.output
runtimeClasspath += sourceSets.api.output runtimeClasspath += sourceSets.api.output
resources {
srcDir 'src/generated/resources'
}
} }
test { test {
compileClasspath += sourceSets.api.output compileClasspath += sourceSets.api.output
@@ -25,9 +25,11 @@ package appeng.api.definitions;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import appeng.api.features.AEFeature;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -60,7 +62,7 @@ public interface IItemDefinition extends IComparableDefinition
ItemStack stack( int stackSize ); ItemStack stack( int stackSize );
/** /**
* @return <tt>true</tt> if definition is enabled * @return an immutable set of the features of this item
*/ */
boolean isEnabled(); Set<AEFeature> features();
} }
@@ -16,7 +16,7 @@
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>. * along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/ */
package appeng.core.features; package appeng.api.features;
public enum AEFeature public enum AEFeature
@@ -39,18 +39,6 @@ import appeng.api.recipes.ISubItemResolver;
*/ */
public interface IRecipeHandlerRegistry public interface IRecipeHandlerRegistry
{ {
/**
* Add a new Recipe Handler to the parser.
*
* MUST BE CALLED IN PRE-INIT
*
* @param name name of crafthandler
* @param handler class of crafthandler
*/
@Deprecated
void addNewCraftHandler( String name, Class<? extends ICraftHandler> handler );
/** /**
* Add a new resolver to the parser. * Add a new resolver to the parser.
* *
@@ -60,21 +48,6 @@ public interface IRecipeHandlerRegistry
*/ */
void addNewSubItemResolver( ISubItemResolver sir ); void addNewSubItemResolver( ISubItemResolver sir );
/**
* @param name name of crafting handler
*
* @return A recipe handler by name, returns null on failure.
*/
@Nullable
@Deprecated
ICraftHandler getCraftHandlerFor( String name );
/**
* @return a new recipe handler, which can be used to parse, and read recipe files.
*/
@Deprecated
IRecipeHandler createNewRecipehandler();
/** /**
* resolve sub items by name. * resolve sub items by name.
* *
@@ -0,0 +1,48 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
],
"name": "appliedenergistics2:charged_quartz_ore"
},
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "minecraft:lapis_lazuli"
}
]
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:chiseled_quartz_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:chiseled_quartz_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:chiseled_quartz_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:fluix_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:fluix_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:fluix_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,3 @@
{
"type": "minecraft:block"
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_fixture"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_glass"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,48 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
],
"name": "appliedenergistics2:quartz_ore"
},
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "minecraft:quartz"
}
]
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_pillar"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_pillar_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_pillar_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:quartz_vibrant_glass"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_brick"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_brick_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_brick_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_chest"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_small_brick"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_small_brick_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_small_brick_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:sky_stone_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:smooth_sky_stone_block"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:smooth_sky_stone_chest"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:smooth_sky_stone_slab"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "main",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "appliedenergistics2:smooth_sky_stone_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:chiseled_quartz_block"
},
"result": "appliedenergistics2:chiseled_quartz_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"FLUIX",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:fluix_block"
},
"result": "appliedenergistics2:fluix_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:quartz_block"
},
"result": "appliedenergistics2:quartz_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:quartz_pillar"
},
"result": "appliedenergistics2:quartz_pillar_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:sky_stone_block"
},
"result": "appliedenergistics2:sky_stone_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:sky_stone_brick"
},
"result": "appliedenergistics2:sky_stone_brick_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:sky_stone_small_brick"
},
"result": "appliedenergistics2:sky_stone_small_brick_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:smooth_sky_stone_block"
},
"result": "appliedenergistics2:smooth_sky_stone_slab",
"count": 2
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:chiseled_quartz_block"
}
},
"result": {
"item": "appliedenergistics2:chiseled_quartz_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"FLUIX",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:fluix_block"
}
},
"result": {
"item": "appliedenergistics2:fluix_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:quartz_block"
}
},
"result": {
"item": "appliedenergistics2:quartz_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:quartz_pillar"
}
},
"result": {
"item": "appliedenergistics2:quartz_pillar_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:sky_stone_block"
}
},
"result": {
"item": "appliedenergistics2:sky_stone_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:sky_stone_brick"
}
},
"result": {
"item": "appliedenergistics2:sky_stone_brick_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:sky_stone_small_brick"
}
},
"result": {
"item": "appliedenergistics2:sky_stone_small_brick_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,31 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:smooth_sky_stone_block"
}
},
"result": {
"item": "appliedenergistics2:smooth_sky_stone_slab",
"count": 6
}
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:chiseled_quartz_block"
},
"result": "appliedenergistics2:chiseled_quartz_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"FLUIX",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:fluix_block"
},
"result": "appliedenergistics2:fluix_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:quartz_block"
},
"result": "appliedenergistics2:quartz_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:quartz_pillar"
},
"result": "appliedenergistics2:quartz_pillar_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:sky_stone_block"
},
"result": "appliedenergistics2:sky_stone_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:sky_stone_brick"
},
"result": "appliedenergistics2:sky_stone_brick_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:sky_stone_small_brick"
},
"result": "appliedenergistics2:sky_stone_small_brick_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,24 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "appliedenergistics2:smooth_sky_stone_block"
},
"result": "appliedenergistics2:smooth_sky_stone_stairs",
"count": 1
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:chiseled_quartz_block"
}
},
"result": {
"item": "appliedenergistics2:chiseled_quartz_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"FLUIX",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:fluix_block"
}
},
"result": {
"item": "appliedenergistics2:fluix_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:quartz_block"
}
},
"result": {
"item": "appliedenergistics2:quartz_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"CERTUS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:quartz_pillar"
}
},
"result": {
"item": "appliedenergistics2:quartz_pillar_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:sky_stone_block"
}
},
"result": {
"item": "appliedenergistics2:sky_stone_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:sky_stone_brick"
}
},
"result": {
"item": "appliedenergistics2:sky_stone_brick_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"DECORATIVE_BLOCKS",
"SKY_STONE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:sky_stone_small_brick"
}
},
"result": {
"item": "appliedenergistics2:sky_stone_small_brick_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,33 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"SKY_STONE",
"DECORATIVE_BLOCKS"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "appliedenergistics2:smooth_sky_stone_block"
}
},
"result": {
"item": "appliedenergistics2:smooth_sky_stone_stairs",
"count": 4
}
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"NETHER_QUARTZ_TOOLS",
"QUARTZ_AXE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"XX ",
"X/ ",
" / "
],
"key": {
"/": {
"tag": "forge:rods/wooden"
},
"X": {
"tag": "forge:gems/quartz"
}
},
"result": {
"item": "appliedenergistics2:nether_quartz_axe"
}
}
}
]
}
@@ -0,0 +1,38 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"NETHER_QUARTZ_TOOLS",
"QUARTZ_KNIFE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
" /",
"I/ ",
"XX "
],
"key": {
"/": {
"tag": "forge:rods/wooden"
},
"I": {
"tag": "forge:ingots/iron"
},
"X": {
"tag": "forge:gems/quartz"
}
},
"result": {
"item": "appliedenergistics2:nether_quartz_cutting_knife"
}
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"NETHER_QUARTZ_TOOLS",
"QUARTZ_HOE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"XX ",
" / ",
" / "
],
"key": {
"/": {
"tag": "forge:rods/wooden"
},
"X": {
"tag": "forge:gems/quartz"
}
},
"result": {
"item": "appliedenergistics2:nether_quartz_hoe"
}
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"NETHER_QUARTZ_TOOLS",
"QUARTZ_PICKAXE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"XXX",
" / ",
" / "
],
"key": {
"/": {
"tag": "forge:rods/wooden"
},
"X": {
"tag": "forge:gems/quartz"
}
},
"result": {
"item": "appliedenergistics2:nether_quartz_pickaxe"
}
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"NETHER_QUARTZ_TOOLS",
"QUARTZ_SPADE"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
" X ",
" / ",
" / "
],
"key": {
"/": {
"tag": "forge:rods/wooden"
},
"X": {
"tag": "forge:gems/quartz"
}
},
"result": {
"item": "appliedenergistics2:nether_quartz_spade"
}
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"NETHER_QUARTZ_TOOLS",
"QUARTZ_SWORD"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
" X ",
" X ",
" / "
],
"key": {
"/": {
"tag": "forge:rods/wooden"
},
"X": {
"tag": "forge:gems/quartz"
}
},
"result": {
"item": "appliedenergistics2:nether_quartz_sword"
}
}
}
]
}
@@ -0,0 +1,32 @@
{
"type": "forge:conditional",
"recipes": [
{
"conditions": [
{
"features": [
"NETHER_QUARTZ_TOOLS",
"QUARTZ_WRENCH"
],
"type": "appliedenergistics2:feature"
}
],
"recipe": {
"type": "minecraft:crafting_shaped",
"pattern": [
"X X",
" X ",
"X X"
],
"key": {
"X": {
"tag": "forge:gems/quartz"
}
},
"result": {
"item": "appliedenergistics2:nether_quartz_wrench"
}
}
}
]
}
@@ -22,10 +22,9 @@ package appeng.block.crafting;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import appeng.api.AEApi;
import appeng.block.AEBaseBlockItem; import appeng.block.AEBaseBlockItem;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
public class ItemCraftingStorage extends AEBaseBlockItem public class ItemCraftingStorage extends AEBaseBlockItem
@@ -28,14 +28,10 @@ import java.util.function.Supplier;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import appeng.bootstrap.components.ITileEntityRegistrationComponent;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.renderer.model.ModelResourceLocation;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@@ -45,16 +41,12 @@ import appeng.block.AEBaseBlockItem;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.bootstrap.components.IBlockRegistrationComponent; import appeng.bootstrap.components.IBlockRegistrationComponent;
import appeng.bootstrap.components.IItemRegistrationComponent; import appeng.bootstrap.components.IItemRegistrationComponent;
import appeng.bootstrap.components.IPreInitComponent;
import appeng.bootstrap.definitions.TileEntityDefinition; import appeng.bootstrap.definitions.TileEntityDefinition;
import appeng.core.AppEng; import appeng.core.AppEng;
import appeng.core.CreativeTab; import appeng.core.CreativeTab;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.features.ActivityState;
import appeng.core.features.BlockDefinition; import appeng.core.features.BlockDefinition;
import appeng.core.features.BlockStackSrc;
import appeng.core.features.TileDefinition; import appeng.core.features.TileDefinition;
import appeng.tile.AEBaseTile;
import appeng.util.Platform; import appeng.util.Platform;
@@ -200,11 +192,11 @@ class BlockDefinitionBuilder implements IBlockBuilder
if( block instanceof AEBaseTileBlock ) if( block instanceof AEBaseTileBlock )
{ {
return (T) new TileDefinition( this.registryName, (AEBaseTileBlock) block, item ); return (T) new TileDefinition( this.registryName, (AEBaseTileBlock) block, item, features );
} }
else else
{ {
return (T) new BlockDefinition( this.registryName, block, item ); return (T) new BlockDefinition( this.registryName, block, item, features );
} }
} }
@@ -45,7 +45,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
import appeng.api.definitions.IItemDefinition; import appeng.api.definitions.IItemDefinition;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
import appeng.api.util.AEColoredItemDefinition; import appeng.api.util.AEColoredItemDefinition;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.features.ActivityState; import appeng.core.features.ActivityState;
import appeng.core.features.ColoredItemDefinition; import appeng.core.features.ColoredItemDefinition;
import appeng.core.features.ItemStackSrc; import appeng.core.features.ItemStackSrc;
@@ -113,7 +113,7 @@ public class FeatureFactory
{ {
for( final AEColor color : AEColor.VALID_COLORS ) for( final AEColor color : AEColor.VALID_COLORS )
{ {
final ActivityState state = ActivityState.from( target.isEnabled() ); final ActivityState state = ActivityState.from( true );
definition.add( color, new ItemStackSrc( targetItem, state ) ); definition.add( color, new ItemStackSrc( targetItem, state ) );
} }
@@ -20,16 +20,14 @@ package appeng.bootstrap;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.Function;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import appeng.api.definitions.IBlockDefinition; import appeng.api.definitions.IBlockDefinition;
import appeng.bootstrap.definitions.TileEntityDefinition; import appeng.bootstrap.definitions.TileEntityDefinition;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
public interface IBlockBuilder public interface IBlockBuilder
@@ -26,7 +26,7 @@ import net.minecraft.dispenser.IDispenseItemBehavior;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.features.ItemDefinition; import appeng.core.features.ItemDefinition;
@@ -30,15 +30,12 @@ import net.minecraft.block.DispenserBlock;
import net.minecraft.dispenser.IDispenseItemBehavior; import net.minecraft.dispenser.IDispenseItemBehavior;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import appeng.bootstrap.components.IItemRegistrationComponent; import appeng.bootstrap.components.IItemRegistrationComponent;
import appeng.bootstrap.components.IPostInitComponent; import appeng.bootstrap.components.IPostInitComponent;
import appeng.core.AEConfig;
import appeng.core.AppEng; import appeng.core.AppEng;
import appeng.core.CreativeTab; import appeng.core.CreativeTab;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.features.ItemDefinition; import appeng.core.features.ItemDefinition;
import appeng.util.Platform; import appeng.util.Platform;
@@ -134,7 +131,7 @@ class ItemDefinitionBuilder implements IItemBuilder
Item item = this.itemSupplier.get(); Item item = this.itemSupplier.get();
item.setRegistryName( AppEng.MOD_ID, this.registryName ); item.setRegistryName( AppEng.MOD_ID, this.registryName );
ItemDefinition definition = new ItemDefinition( this.registryName, item ); ItemDefinition definition = new ItemDefinition( this.registryName, item, features );
// Register all extra handlers // Register all extra handlers
this.boostrapComponents.forEach( component -> this.factory.addBootstrapComponent( component.apply( item ) ) ); this.boostrapComponents.forEach( component -> this.factory.addBootstrapComponent( component.apply( item ) ) );
@@ -5,7 +5,7 @@ import appeng.bootstrap.components.IClientSetupComponent;
import appeng.bootstrap.components.ITileEntityRegistrationComponent; import appeng.bootstrap.components.ITileEntityRegistrationComponent;
import appeng.bootstrap.definitions.TileEntityDefinition; import appeng.bootstrap.definitions.TileEntityDefinition;
import appeng.core.AppEng; import appeng.core.AppEng;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.features.ActivityState; import appeng.core.features.ActivityState;
import appeng.core.features.BlockStackSrc; import appeng.core.features.BlockStackSrc;
import appeng.tile.AEBaseTile; import appeng.tile.AEBaseTile;
+1 -1
View File
@@ -22,7 +22,7 @@ package appeng.core;
import appeng.api.config.*; import appeng.api.config.*;
import appeng.api.util.IConfigManager; import appeng.api.util.IConfigManager;
import appeng.api.util.IConfigurableObject; import appeng.api.util.IConfigurableObject;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.settings.TickRates; import appeng.core.settings.TickRates;
import appeng.util.ConfigManager; import appeng.util.ConfigManager;
import appeng.util.IConfigManagerHost; import appeng.util.IConfigManagerHost;
+1 -1
View File
@@ -29,7 +29,7 @@ import org.apache.logging.log4j.message.ParameterizedMessage;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
public final class AELog public final class AELog
+3 -8
View File
@@ -21,26 +21,21 @@ package appeng.core;
import java.io.File; import java.io.File;
import appeng.bootstrap.components.IBlockRegistrationComponent;
import appeng.bootstrap.components.IClientSetupComponent; import appeng.bootstrap.components.IClientSetupComponent;
import appeng.client.ClientHelper; import appeng.client.ClientHelper;
import appeng.client.render.model.GlassModelLoader; import appeng.client.render.model.GlassModelLoader;
import appeng.core.features.AEFeature;
import appeng.server.ServerHelper; import appeng.server.ServerHelper;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.ContainerType;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.particles.ParticleType; import net.minecraft.particles.ParticleType;
import net.minecraft.stats.StatType;
import net.minecraft.tileentity.TileEntityType; import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
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;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.CrashReportExtender; import net.minecraftforge.fml.CrashReportExtender;
import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.DistExecutor;
@@ -54,8 +49,7 @@ import appeng.services.export.ExportConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.loading.FMLEnvironment;
import net.minecraftforge.registries.IForgeRegistry;
@Mod(AppEng.MOD_ID) @Mod(AppEng.MOD_ID)
public final class AppEng public final class AppEng
@@ -109,6 +103,7 @@ public final class AppEng
modEventBus.addGenericListener(ParticleType.class, registration::registerParticleTypes); modEventBus.addGenericListener(ParticleType.class, registration::registerParticleTypes);
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.addListener(registration::registerParticleFactories); modEventBus.addListener(registration::registerParticleFactories);
modEventBus.addListener(registration::registerTextures); modEventBus.addListener(registration::registerTextures);
+24 -29
View File
@@ -31,6 +31,9 @@ import appeng.client.render.tesr.SkyChestTESR;
import appeng.container.implementations.ContainerGrinder; import appeng.container.implementations.ContainerGrinder;
import appeng.container.implementations.ContainerSkyChest; import appeng.container.implementations.ContainerSkyChest;
import appeng.core.stats.AeStats; import appeng.core.stats.AeStats;
import appeng.recipes.conditions.FeaturesEnabled;
import appeng.recipes.game.DisassembleRecipe;
import appeng.recipes.ingredients.PartIngredientSerializer;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScreenManager; import net.minecraft.client.gui.ScreenManager;
@@ -39,6 +42,7 @@ import net.minecraft.client.renderer.model.ModelResourceLocation;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.ContainerType;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.particles.ParticleType; import net.minecraft.particles.ParticleType;
import net.minecraft.tileentity.TileEntityType; import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -48,9 +52,11 @@ import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; import net.minecraftforge.client.event.ParticleFactoryRegisterEvent;
import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.common.extensions.IForgeContainerType; import net.minecraftforge.common.extensions.IForgeContainerType;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.GenericEvent; import net.minecraftforge.eventbus.api.GenericEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.fml.loading.FMLEnvironment;
import net.minecraftforge.registries.ForgeRegistryEntry; import net.minecraftforge.registries.ForgeRegistryEntry;
@@ -252,35 +258,24 @@ final class Registration
}); });
} }
// @SubscribeEvent public void registerRecipeSerializers( RegistryEvent.Register<IRecipeSerializer<?>> event )
// public void registerRecipes( RegistryEvent.Register<IRecipe> event ) {
// { IForgeRegistry<IRecipeSerializer<?>> r = event.getRegistry();
// final IForgeRegistry<IRecipe> registry = event.getRegistry();
// final ApiDefinitions definitions = Api.INSTANCE.definitions();
// final Api api = Api.INSTANCE;
// final ApiDefinitions definitions = api.definitions(); r.registerAll(
// final Dist dist = FMLCommonHandler.instance().getEffectiveSide(); DisassembleRecipe.SERIALIZER
// // FacadeRecipe.getSerializer( (ItemFacade) definitions.items().facade().item() ) FIXME reimplement facades
// if( AEConfig.instance().isFeatureEnabled( AEFeature.ENABLE_DISASSEMBLY_CRAFTING ) ) // this.factories.put( new ResourceLocation( AppEng.MOD_ID, "inscriber" ), new InscriberHandler() ); FIXME re-implement machine recipes
// { // this.factories.put( new ResourceLocation( AppEng.MOD_ID, "smelt" ), new SmeltingHandler() );
// DisassembleRecipe r = new DisassembleRecipe(); // this.factories.put( new ResourceLocation( AppEng.MOD_ID, "grinder" ), new GrinderHandler() );
// registry.register( r.setRegistryName( AppEng.MOD_ID.toLowerCase(), "disassemble" ) ); );
// }
// CraftingHelper.register( FeaturesEnabled.Serializer.INSTANCE );
// if( AEConfig.instance().isFeatureEnabled( AEFeature.ENABLE_FACADE_CRAFTING ) )
// { CraftingHelper.register( new ResourceLocation( AppEng.MOD_ID, "part" ), PartIngredientSerializer.INSTANCE );
// definitions.items().facade().maybeItem().ifPresent( facadeItem -> }
// {
// FacadeRecipe f = new FacadeRecipe( (ItemFacade) facadeItem );
// registry.register( f.setRegistryName( AppEng.MOD_ID.toLowerCase(), "facade" ) );
// } );
// }
//
// definitions.getRegistry().getBootstrapComponents( IRecipeRegistrationComponent.class ).forEachRemaining( b -> b.recipeRegistration( side, registry ) );
//
// final AERecipeLoader ldr = new AERecipeLoader();
// ldr.loadProcessingRecipes();
// }
public void registerEntities( RegistryEvent.Register<EntityType<?>> event ) public void registerEntities( RegistryEvent.Register<EntityType<?>> event )
@@ -31,14 +31,17 @@ import appeng.bootstrap.*;
import appeng.bootstrap.definitions.TileEntityDefinition; import appeng.bootstrap.definitions.TileEntityDefinition;
import appeng.client.render.tesr.CrankTESR; import appeng.client.render.tesr.CrankTESR;
import appeng.client.render.tesr.SkyChestTESR; import appeng.client.render.tesr.SkyChestTESR;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.features.registries.PartModels; import appeng.core.features.registries.PartModels;
import appeng.decorative.AEDecorativeBlock; import appeng.decorative.AEDecorativeBlock;
import appeng.decorative.solid.*; import appeng.decorative.solid.*;
import appeng.tile.grindstone.TileCrank; import appeng.tile.grindstone.TileCrank;
import appeng.tile.grindstone.TileGrinder; import appeng.tile.grindstone.TileGrinder;
import appeng.tile.storage.TileSkyChest; import appeng.tile.storage.TileSkyChest;
import net.minecraft.block.*; import net.minecraft.block.Block;
import net.minecraft.block.SlabBlock;
import net.minecraft.block.SoundType;
import net.minecraft.block.StairsBlock;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
@@ -23,7 +23,7 @@ import appeng.api.definitions.IItemDefinition;
import appeng.api.definitions.IItems; import appeng.api.definitions.IItems;
import appeng.api.util.AEColoredItemDefinition; import appeng.api.util.AEColoredItemDefinition;
import appeng.bootstrap.FeatureFactory; import appeng.bootstrap.FeatureFactory;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.items.tools.quartz.*; import appeng.items.tools.quartz.*;
@@ -19,8 +19,9 @@
package appeng.core.features; package appeng.core.features;
import java.util.Optional; import java.util.Set;
import appeng.api.features.AEFeature;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@@ -30,7 +31,6 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import appeng.api.definitions.IBlockDefinition; import appeng.api.definitions.IBlockDefinition;
import net.minecraftforge.fml.RegistryObject;
public class BlockDefinition extends ItemDefinition implements IBlockDefinition public class BlockDefinition extends ItemDefinition implements IBlockDefinition
@@ -39,9 +39,9 @@ public class BlockDefinition extends ItemDefinition implements IBlockDefinition
private final BlockItem blockItem; private final BlockItem blockItem;
public BlockDefinition( String registryName, Block block, BlockItem item ) public BlockDefinition( String registryName, Block block, BlockItem item, Set<AEFeature> features )
{ {
super( registryName, item ); super( registryName, item, features );
this.block = block; this.block = block;
this.blockItem = item; this.blockItem = item;
} }
@@ -19,10 +19,13 @@
package appeng.core.features; package appeng.core.features;
import java.util.Collections;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import appeng.api.features.AEFeature;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -71,9 +74,9 @@ public final class DamagedItemDefinition implements IItemDefinition
} }
@Override @Override
public boolean isEnabled() public Set<AEFeature> features()
{ {
return this.source.isPresent(); return Collections.emptySet();
} }
@Override @Override
@@ -84,7 +87,7 @@ public final class DamagedItemDefinition implements IItemDefinition
return false; return false;
} }
return this.isEnabled() && comparableStack.getItem() == this.source.get().getItem(); return comparableStack.getItem() == this.source.get().getItem();
} }
} }
@@ -19,13 +19,15 @@
package appeng.core.features; package appeng.core.features;
import java.util.Optional; import java.util.Set;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import appeng.api.features.AEFeature;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -37,12 +39,14 @@ public class ItemDefinition implements IItemDefinition
{ {
private final String identifier; private final String identifier;
private final Item item; private final Item item;
private final Set<AEFeature> features;
public ItemDefinition( String registryName, Item item ) public ItemDefinition( String registryName, Item item, Set<AEFeature> features )
{ {
Preconditions.checkArgument( !Strings.isNullOrEmpty( registryName ), "registryName" ); Preconditions.checkArgument( !Strings.isNullOrEmpty( registryName ), "registryName" );
this.identifier = registryName; this.identifier = registryName;
this.item = item; this.item = item;
this.features = ImmutableSet.copyOf(features);
} }
@Nonnull @Nonnull
@@ -65,10 +69,9 @@ public class ItemDefinition implements IItemDefinition
} }
@Override @Override
public boolean isEnabled() public Set<AEFeature> features()
{ {
// FIXME sadly we can only set this after registration return features;
return true;
} }
@Override @Override
@@ -20,9 +20,11 @@ package appeng.core.features;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import appeng.api.features.AEFeature;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@@ -35,9 +37,9 @@ public final class TileDefinition extends BlockDefinition implements ITileDefini
private final Optional<AEBaseTileBlock> block; private final Optional<AEBaseTileBlock> block;
public TileDefinition( @Nonnull String registryName, AEBaseTileBlock block, BlockItem item ) public TileDefinition( @Nonnull String registryName, AEBaseTileBlock block, BlockItem item, Set<AEFeature> features )
{ {
super( registryName, block, item ); super( registryName, block, item, features );
this.block = Optional.ofNullable( block ); this.block = Optional.ofNullable( block );
} }
@@ -26,7 +26,6 @@ import net.minecraft.item.Items;
import appeng.api.features.IMatterCannonAmmoRegistry; import appeng.api.features.IMatterCannonAmmoRegistry;
import appeng.recipes.ores.IOreListener; import appeng.recipes.ores.IOreListener;
import appeng.recipes.ores.OreDictionaryHandler;
public class MatterCannonAmmoRegistry implements IOreListener, IMatterCannonAmmoRegistry public class MatterCannonAmmoRegistry implements IOreListener, IMatterCannonAmmoRegistry
@@ -32,7 +32,6 @@ import appeng.api.recipes.ICraftHandler;
import appeng.api.recipes.IRecipeHandler; import appeng.api.recipes.IRecipeHandler;
import appeng.api.recipes.ISubItemResolver; import appeng.api.recipes.ISubItemResolver;
import appeng.core.AELog; import appeng.core.AELog;
import appeng.recipes.RecipeHandler;
/** /**
@@ -43,51 +42,14 @@ import appeng.recipes.RecipeHandler;
*/ */
public class RecipeHandlerRegistry implements IRecipeHandlerRegistry public class RecipeHandlerRegistry implements IRecipeHandlerRegistry
{ {
private final Map<String, Class<? extends ICraftHandler>> handlers = new HashMap<>( 20 );
private final Collection<ISubItemResolver> resolvers = new ArrayList<>(); private final Collection<ISubItemResolver> resolvers = new ArrayList<>();
@Override
public void addNewCraftHandler( final String name, final Class<? extends ICraftHandler> handler )
{
this.handlers.put( name.toLowerCase( Locale.ENGLISH ), handler );
}
@Override @Override
public void addNewSubItemResolver( final ISubItemResolver sir ) public void addNewSubItemResolver( final ISubItemResolver sir )
{ {
this.resolvers.add( sir ); this.resolvers.add( sir );
} }
@Nullable
@Override
public ICraftHandler getCraftHandlerFor( final String name )
{
final Class<? extends ICraftHandler> clz = this.handlers.get( name );
if( clz == null )
{
return null;
}
try
{
return clz.newInstance();
}
catch( final Throwable e )
{
AELog.error( "Error Caused when trying to construct " + clz.getName() );
AELog.debug( e );
this.handlers.put( name, null ); // clear it..
return null;
}
}
@Override
public IRecipeHandler createNewRecipehandler()
{
return new RecipeHandler();
}
@Nullable @Nullable
@Override @Override
public Object resolveItem( final String nameSpace, final String itemName ) public Object resolveItem( final String nameSpace, final String itemName )
@@ -42,7 +42,6 @@ import appeng.api.features.IInscriberRecipeBuilder;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.AELog; import appeng.core.AELog;
import appeng.recipes.ores.IOreListener; import appeng.recipes.ores.IOreListener;
import appeng.recipes.ores.OreDictionaryHandler;
import appeng.util.Platform; import appeng.util.Platform;
@@ -19,8 +19,6 @@
package appeng.core.sync; package appeng.core.sync;
import org.apache.commons.lang3.tuple.Pair;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.IPacket; import net.minecraft.network.IPacket;
import net.minecraft.network.PacketBuffer; import net.minecraft.network.PacketBuffer;
@@ -28,7 +26,7 @@ import net.minecraftforge.fml.network.NetworkDirection;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.AELog; import appeng.core.AELog;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.sync.network.INetworkInfo; import appeng.core.sync.network.INetworkInfo;
@@ -32,13 +32,12 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import appeng.api.AEApi;
import appeng.api.definitions.IMaterials; import appeng.api.definitions.IMaterials;
import appeng.client.EffectType; import appeng.client.EffectType;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.Api; import appeng.core.Api;
import appeng.core.AppEng; import appeng.core.AppEng;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.util.Platform; import appeng.util.Platform;
@@ -34,7 +34,7 @@ import appeng.api.implementations.tiles.ICrystalGrowthAccelerator;
import appeng.client.EffectType; import appeng.client.EffectType;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.AppEng; import appeng.core.AppEng;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.util.Platform; import appeng.util.Platform;
@@ -30,11 +30,10 @@ import net.minecraft.util.DamageSource;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import appeng.api.AEApi;
import appeng.api.definitions.IMaterials; import appeng.api.definitions.IMaterials;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.Api; import appeng.core.Api;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.helpers.Reflected; import appeng.helpers.Reflected;
import appeng.util.Platform; import appeng.util.Platform;
@@ -42,11 +42,10 @@ import net.minecraft.world.Explosion.Mode;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData; import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData;
import appeng.api.AEApi;
import appeng.core.AEConfig; import appeng.core.AEConfig;
import appeng.core.Api; import appeng.core.Api;
import appeng.core.AppEng; import appeng.core.AppEng;
import appeng.core.features.AEFeature; import appeng.api.features.AEFeature;
import appeng.core.sync.packets.PacketMockExplosion; import appeng.core.sync.packets.PacketMockExplosion;
import appeng.helpers.Reflected; import appeng.helpers.Reflected;
import appeng.util.Platform; import appeng.util.Platform;

Some files were not shown because too many files have changed in this diff Show More