Skip to content

Commit 319b647

Browse files
authored
Fix recycling recipes. (#360)
1 parent e7f35ec commit 319b647

6 files changed

Lines changed: 83 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# 2.7.2
2+
- Add BQu mixin [#359](https://github.com/GTModpackTeam/GTExpert-Core/pull/359)
3+
- Fix recycling recipes [#360](https://github.com/GTModpackTeam/GTExpert-Core/pull/360)
4+
5+
* * *
6+
17
# 2.7.1
28
- Fix server boot crash [#354](https://github.com/GTModpackTeam/GTExpert-Core/pull/354)
39

src/main/java/com/github/gtexpert/core/core/GTECoreModule.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import gregtech.api.block.VariantItemBlock;
2323
import gregtech.api.recipes.RecipeMaps;
24-
import gregtech.loaders.recipe.RecyclingRecipes;
2524

2625
import com.github.gtexpert.core.api.GTEValues;
2726
import com.github.gtexpert.core.api.modules.GTEModule;
@@ -110,6 +109,5 @@ public void registerRecipesLowest(RegistryEvent.Register<IRecipe> event) {
110109
GTERecipe.init();
111110
CEUOverrideRecipe.init();
112111
GTEVanillaOverrideRecipes.init();
113-
RecyclingRecipes.init();
114112
}
115113
}

src/main/java/com/github/gtexpert/core/integration/ae/AEModule.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package com.github.gtexpert.core.integration.ae;
22

3+
import java.util.Collections;
4+
import java.util.List;
5+
36
import net.minecraft.item.crafting.IRecipe;
47
import net.minecraftforge.event.RegistryEvent;
8+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
9+
10+
import org.jetbrains.annotations.NotNull;
11+
12+
import gregtech.api.event.MaterialInfoEvent;
513

614
import com.github.gtexpert.core.api.GTEValues;
715
import com.github.gtexpert.core.api.modules.GTEModule;
@@ -23,9 +31,19 @@
2331
description = "Applied Energistics 2 Integration Module")
2432
public class AEModule extends GTEIntegrationSubmodule {
2533

34+
@NotNull
2635
@Override
27-
public void registerRecipesNormal(RegistryEvent.Register<IRecipe> event) {
36+
public List<Class<?>> getEventBusSubscribers() {
37+
return Collections.singletonList(AEModule.class);
38+
}
39+
40+
@SubscribeEvent
41+
public static void onMaterialInfo(MaterialInfoEvent event) {
2842
AEMaterialInfoLoader.init();
43+
}
44+
45+
@Override
46+
public void registerRecipesNormal(RegistryEvent.Register<IRecipe> event) {
2947
AEOreDictionaryLoader.init();
3048
}
3149

src/main/java/com/github/gtexpert/core/integration/deda/DEDAModule.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
package com.github.gtexpert.core.integration.deda;
22

3+
import java.util.Collections;
4+
import java.util.List;
5+
36
import net.minecraft.block.Block;
47
import net.minecraft.item.crafting.IRecipe;
58
import net.minecraftforge.event.RegistryEvent;
69
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
10+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
11+
12+
import org.jetbrains.annotations.NotNull;
13+
14+
import gregtech.api.event.MaterialInfoEvent;
715

816
import com.github.gtexpert.core.api.GTEValues;
917
import com.github.gtexpert.core.api.modules.GTEModule;
@@ -23,6 +31,17 @@
2331
description = "Draconic Evolution & Draconic Additions Integration Module")
2432
public class DEDAModule extends GTEIntegrationSubmodule {
2533

34+
@NotNull
35+
@Override
36+
public List<Class<?>> getEventBusSubscribers() {
37+
return Collections.singletonList(DEDAModule.class);
38+
}
39+
40+
@SubscribeEvent
41+
public static void onMaterialInfo(MaterialInfoEvent event) {
42+
DEDAMaterialInfoLoader.init();
43+
}
44+
2645
@Override
2746
public void registerBlocks(RegistryEvent.Register<Block> event) {
2847
DEDAMetaTileEntities.init();
@@ -33,11 +52,6 @@ public void postInit(FMLPostInitializationEvent event) {
3352
DraconicMaterialsRecipe.remove();
3453
}
3554

36-
@Override
37-
public void registerRecipesNormal(RegistryEvent.Register<IRecipe> event) {
38-
DEDAMaterialInfoLoader.init();
39-
}
40-
4155
@Override
4256
public void registerRecipesLowest(RegistryEvent.Register<IRecipe> event) {
4357
DEDAOreDictionaryLoader.init();

src/main/java/com/github/gtexpert/core/integration/eio/EnderIOModule.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static gregtech.api.GTValues.*;
44

5+
import java.util.Collections;
6+
import java.util.List;
57
import java.util.function.Consumer;
68

79
import net.minecraft.block.Block;
@@ -12,9 +14,13 @@
1214
import net.minecraft.util.ResourceLocation;
1315
import net.minecraftforge.event.RegistryEvent;
1416
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
17+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
18+
19+
import org.jetbrains.annotations.NotNull;
1520

1621
import com.enderio.core.common.util.EntityUtil;
1722

23+
import gregtech.api.event.MaterialInfoEvent;
1824
import gregtech.api.recipes.RecipeBuilder;
1925
import gregtech.api.recipes.builders.SimpleRecipeBuilder;
2026
import gregtech.api.recipes.ingredients.GTRecipeItemInput;
@@ -43,6 +49,17 @@
4349
description = "Ender IO Integration Module")
4450
public class EnderIOModule extends GTEIntegrationSubmodule {
4551

52+
@NotNull
53+
@Override
54+
public List<Class<?>> getEventBusSubscribers() {
55+
return Collections.singletonList(EnderIOModule.class);
56+
}
57+
58+
@SubscribeEvent
59+
public static void onMaterialInfo(MaterialInfoEvent event) {
60+
EIOMaterialInfoLoader.init();
61+
}
62+
4663
@Override
4764
public void registerBlocks(RegistryEvent.Register<Block> event) {
4865
EIOMetaTileEntities.init();
@@ -55,7 +72,6 @@ public void postInit(FMLPostInitializationEvent event) {
5572

5673
@Override
5774
public void registerRecipesNormal(RegistryEvent.Register<IRecipe> event) {
58-
EIOMaterialInfoLoader.init();
5975
EIOOreDictionaryLoader.init();
6076
}
6177

src/main/java/com/github/gtexpert/core/modules/GTEModuleManager.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import net.minecraft.block.Block;
88
import net.minecraft.item.Item;
9+
import net.minecraft.item.ItemStack;
910
import net.minecraft.item.crafting.IRecipe;
1011
import net.minecraft.util.ResourceLocation;
1112
import net.minecraftforge.common.MinecraftForge;
@@ -22,6 +23,11 @@
2223
import com.google.common.base.Preconditions;
2324
import com.google.common.collect.ImmutableList;
2425

26+
import gregtech.api.unification.OreDictUnifier;
27+
import gregtech.api.unification.stack.ItemAndMetadata;
28+
import gregtech.api.unification.stack.ItemMaterialInfo;
29+
import gregtech.loaders.recipe.RecyclingRecipes;
30+
2531
import com.github.gtexpert.core.api.GTEValues;
2632
import com.github.gtexpert.core.api.modules.*;
2733

@@ -262,10 +268,26 @@ public void registerRecipesLow(RegistryEvent.Register<IRecipe> event) {
262268
}
263269

264270
public void registerRecipesLowest(RegistryEvent.Register<IRecipe> event) {
271+
// Take a snapshot of all item material infos before GTE registers its LOWEST recipes.
272+
// Any new entries added by .withRecycling() during buildAndRegister() will need
273+
// recycling recipes generated, since GregTech's RecyclingRecipes.init() has already run.
274+
Set<ItemAndMetadata> existingInfos = new HashSet<>();
275+
for (Map.Entry<ItemStack, ItemMaterialInfo> entry : OreDictUnifier.getAllItemInfos()) {
276+
existingInfos.add(new ItemAndMetadata(entry.getKey()));
277+
}
278+
265279
for (IGTEModule module : loadedModules) {
266280
currentContainer = containers.get(getContainerID(module));
267281
module.registerRecipesLowest(event);
268282
}
283+
284+
// Generate recycling recipes for items newly registered via .withRecycling()
285+
for (Map.Entry<ItemStack, ItemMaterialInfo> entry : OreDictUnifier.getAllItemInfos()) {
286+
if (!existingInfos.contains(new ItemAndMetadata(entry.getKey()))) {
287+
RecyclingRecipes.registerRecyclingRecipes(entry.getKey(),
288+
new ArrayList<>(entry.getValue().getMaterials()), false, null);
289+
}
290+
}
269291
}
270292

271293
private void configureModules(Map<String, List<IGTEModule>> modules) {

0 commit comments

Comments
 (0)