Skip to content

Commit d28e473

Browse files
committed
Remapping Smelting Recipes
1 parent ec7af3c commit d28e473

File tree

8 files changed

+77
-15
lines changed

8 files changed

+77
-15
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ dependencies {
6161
}
6262

6363
// for config api
64-
compile "tk.valoeghese:ZoesteriaConfig:1.3.2"
64+
compile "tk.valoeghese:ZoesteriaConfig:1.3.4"
6565

6666
modImplementation "com.github.minecraft-cursed-legacy:cursed-fabric-loader:${project.loader_version}"
6767
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ org.gradle.jvmargs=-Xmx1G
66
loader_version=8f014a3
77

88
# Mod Properties
9-
mod_version = 0.6.1
9+
mod_version = 0.6.2
1010
maven_group = io.github.minecraftcursedlegacy.api
1111
archives_base_name = cursed-legacy-api

src/main/java/io/github/minecraftcursedlegacy/impl/registry/ItemTypeRegistry.java

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
package io.github.minecraftcursedlegacy.impl.registry;
22

3+
import java.util.HashMap;
34
import java.util.List;
5+
import java.util.Map;
46
import java.util.Map.Entry;
57
import java.util.function.IntFunction;
68

9+
import io.github.minecraftcursedlegacy.accessor.AccessorPlaceableTileItem;
10+
import io.github.minecraftcursedlegacy.accessor.AccessorRecipeRegistry;
11+
import io.github.minecraftcursedlegacy.accessor.AccessorShapedRecipe;
12+
import io.github.minecraftcursedlegacy.accessor.AccessorShapelessRecipe;
13+
import io.github.minecraftcursedlegacy.accessor.AccessorTileItem;
14+
import io.github.minecraftcursedlegacy.api.registry.Id;
15+
import io.github.minecraftcursedlegacy.api.registry.Registry;
16+
import io.github.minecraftcursedlegacy.impl.client.AtlasMapper;
717
import net.minecraft.item.ItemInstance;
818
import net.minecraft.item.ItemType;
919
import net.minecraft.item.PlaceableTileItem;
@@ -12,18 +22,10 @@
1222
import net.minecraft.recipe.RecipeRegistry;
1323
import net.minecraft.recipe.ShapedRecipe;
1424
import net.minecraft.recipe.ShapelessRecipe;
25+
import net.minecraft.recipe.SmeltingRecipeRegistry;
1526
import net.minecraft.tile.Tile;
1627
import net.minecraft.util.io.CompoundTag;
1728

18-
import io.github.minecraftcursedlegacy.accessor.AccessorPlaceableTileItem;
19-
import io.github.minecraftcursedlegacy.accessor.AccessorRecipeRegistry;
20-
import io.github.minecraftcursedlegacy.accessor.AccessorShapedRecipe;
21-
import io.github.minecraftcursedlegacy.accessor.AccessorShapelessRecipe;
22-
import io.github.minecraftcursedlegacy.accessor.AccessorTileItem;
23-
import io.github.minecraftcursedlegacy.api.registry.Id;
24-
import io.github.minecraftcursedlegacy.api.registry.Registry;
25-
import io.github.minecraftcursedlegacy.impl.client.AtlasMapper;
26-
2729
class ItemTypeRegistry extends Registry<ItemType> {
2830
ItemTypeRegistry(Id registryName) {
2931
super(ItemType.class, registryName, null);
@@ -88,10 +90,11 @@ protected void onRemap(ItemType remappedValue, int newSerialisedId) {
8890
((IdSetter) remappedValue).setId(newSerialisedId);
8991
}
9092

93+
@SuppressWarnings("unchecked")
9194
@Override
9295
protected void postRemap() {
9396
// Remap Recipes
94-
RegistryRemapper.LOGGER.info("Remapping recipes.");
97+
RegistryRemapper.LOGGER.info("Remapping Crafting Recipes.");
9598

9699
for (Recipe recipe : ((AccessorRecipeRegistry) RecipeRegistry.getInstance()).getRecipes()) {
97100
if (recipe instanceof ShapedRecipe) {
@@ -150,8 +153,29 @@ protected void postRemap() {
150153
}
151154
}
152155

156+
RegistryRemapper.LOGGER.info("Remapping Smelting Recipes.");
157+
158+
SmeltingRecipeRegistry smelting = SmeltingRecipeRegistry.getInstance();
159+
Map<Integer, ItemInstance> newRecipes = new HashMap<>();
160+
161+
smelting.getRecipes().forEach((oldInputId, output) -> {
162+
int newInputId = this.oldItemTypes[(Integer) oldInputId].id;
163+
164+
ItemInstance result = (ItemInstance) output;
165+
int newResultId = this.oldItemTypes[result.itemId].id;
166+
167+
// only remap if necessary
168+
if (result.itemId != newResultId) {
169+
result.itemId = newResultId;
170+
}
171+
172+
newRecipes.put(newInputId, result);
173+
});
174+
175+
((SmeltingRecipeSetter) smelting).setRecipes(newRecipes);
176+
153177
RegistryRemapper.LOGGER.info("Remapping custom texture atlases.");
154-
AtlasMapper.onRegistryRemap(oldItemTypes);
178+
AtlasMapper.onRegistryRemap(this.oldItemTypes);
155179
}
156180

157181
@Override
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.github.minecraftcursedlegacy.impl.registry;
2+
3+
import java.util.Map;
4+
5+
public interface SmeltingRecipeSetter {
6+
void setRecipes(Map recipes);
7+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.github.minecraftcursedlegacy.mixin;
2+
3+
import java.util.Map;
4+
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.Shadow;
7+
8+
import io.github.minecraftcursedlegacy.impl.registry.SmeltingRecipeSetter;
9+
import net.minecraft.recipe.SmeltingRecipeRegistry;
10+
11+
@Mixin(SmeltingRecipeRegistry.class)
12+
public abstract class MixinSmeltingRecipeRegistry implements SmeltingRecipeSetter {
13+
@Shadow
14+
private Map recipes;
15+
16+
@Override
17+
public void setRecipes(Map recipes) {
18+
this.recipes = recipes;
19+
}
20+
}

src/main/resources/api.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"MixinOverworldLevelSource",
1313
"MixinPlaceableTileItem",
1414
"MixinShapedRecipe",
15+
"MixinSmeltingRecipeRegistry",
1516
"MixinTile",
1617
"MixinTileItem",
1718
"MixinTitleScreen"

src/test/java/io/github/minecraftcursedlegacy/test/BasicTile.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@
44
import net.minecraft.tile.material.Material;
55

66
public class BasicTile extends Tile {
7-
protected BasicTile(int i) {
7+
protected BasicTile(int i, boolean fullOpaque) {
88
super(i, 69, Material.DIRT);
9+
this.fop = fullOpaque;
10+
}
11+
12+
private final boolean fop;
13+
14+
public boolean isFullOpaque() {
15+
return this.fop;
916
}
1017
}

src/test/java/io/github/minecraftcursedlegacy/test/RegistryTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.fabricmc.api.ModInitializer;
99
import net.minecraft.item.ItemInstance;
1010
import net.minecraft.item.ItemType;
11+
import net.minecraft.recipe.SmeltingRecipeRegistry;
1112
import net.minecraft.tile.Tile;
1213

1314
public class RegistryTest implements ModInitializer {
@@ -17,12 +18,14 @@ public void onInitialize() {
1718
item = Registries.ITEM_TYPE.register(new Id("modid:item"),
1819
i -> new BasicItem(i).setTexturePosition(5, 0).setName("exampleItem"));
1920
tile = Registries.TILE.register(new Id("modid:tile"),
20-
i -> new BasicTile(i).setName("exampleBlock"));
21+
i -> new BasicTile(i, false).setName("exampleBlock"));
2122
tileItem = TileItems.registerTileItem(new Id("modid:tile"), tile);
2223

2324
Recipes.addShapelessRecipe(new ItemInstance(item, 2), Tile.DIRT, Tile.SAND);
2425
Recipes.addShapedRecipe(new ItemInstance(tile), "##", '#', Tile.DIRT);
2526

27+
SmeltingRecipeRegistry.getInstance().addSmeltingRecipe(item.id, new ItemInstance(tile));
28+
2629
Translations.addTileTranslation(tile, "Example Block");
2730
Translations.addItemTranslation(item, "Example Item");
2831
}

0 commit comments

Comments
 (0)