Skip to content

Commit

Permalink
Merge pull request #109 from Jiingy/1.20
Browse files Browse the repository at this point in the history
Fixed major crash issues
  • Loading branch information
Jiingy authored Jun 10, 2023
2 parents 897ffab + 3489d2f commit dd1f69c
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 34 deletions.
15 changes: 9 additions & 6 deletions src/main/java/jingy/jineric/base/plugins/EarlyRiser.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package jingy.jineric.base.plugins;

import com.chocohead.mm.api.ClassTinkerers;
import net.fabricmc.api.EnvType;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.MappingResolver;
import net.minecraft.item.ItemStack;
Expand All @@ -10,15 +11,17 @@ public class EarlyRiser implements Runnable {

@Override
public void run() {
boolean isClient = FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT;
MappingResolver remapper = FabricLoader.getInstance().getMappingResolver();
String recipeBookCategory = remapper.mapClassName("intermediary", "net.minecraft.class_5421");
ClassTinkerers.enumBuilder(recipeBookCategory).addEnum("JINERIC_REFINERY").build();

String recipeBookGroup = remapper.mapClassName("intermediary", "net.minecraft.class_314");
String itemStack = "[L" + remapper.mapClassName("intermediary", "net.minecraft.class_1799") + ";";
ClassTinkerers.enumBuilder(recipeBookGroup, itemStack).addEnum("JINERIC_REFINERY_SEARCH", () -> new Object[] {new ItemStack[]{new ItemStack(Items.COMPASS)}}).build();
ClassTinkerers.enumBuilder(recipeBookGroup, itemStack).addEnum("JINERIC_REFINERY_BUILDING", () -> new Object[] {new ItemStack[]{new ItemStack(Items.STONE)}}).build();
ClassTinkerers.enumBuilder(recipeBookGroup, itemStack).addEnum("JINERIC_REFINERY_MISC", () -> new Object[] {new ItemStack[]{new ItemStack(Items.CYAN_GLAZED_TERRACOTTA)}}).build();

if (isClient) {
String recipeBookGroup = remapper.mapClassName("intermediary", "net.minecraft.class_314");
String itemStack = "[L" + remapper.mapClassName("intermediary", "net.minecraft.class_1799") + ";";
ClassTinkerers.enumBuilder(recipeBookGroup, itemStack).addEnum("JINERIC_REFINERY_SEARCH", () -> new Object[] {new ItemStack[]{new ItemStack(Items.COMPASS)}}).build();
ClassTinkerers.enumBuilder(recipeBookGroup, itemStack).addEnum("JINERIC_REFINERY_BUILDING", () -> new Object[] {new ItemStack[]{new ItemStack(Items.STONE)}}).build();
ClassTinkerers.enumBuilder(recipeBookGroup, itemStack).addEnum("JINERIC_REFINERY_MISC", () -> new Object[] {new ItemStack[]{new ItemStack(Items.CYAN_GLAZED_TERRACOTTA)}}).build();
}
}
}
3 changes: 0 additions & 3 deletions src/main/java/jingy/jineric/mixin/ClientRecipeBookMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import com.chocohead.mm.api.ClassTinkerers;
import jingy.jineric.recipe.JinericRecipeType;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.recipebook.ClientRecipeBook;
import net.minecraft.client.recipebook.RecipeBookGroup;
import net.minecraft.recipe.AbstractCookingRecipe;
Expand All @@ -15,7 +13,6 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Environment(EnvType.CLIENT)
@Mixin(ClientRecipeBook.class)
public abstract class ClientRecipeBookMixin {
private static final RecipeBookGroup JINERIC_REFINERY_BUILDING = ClassTinkerers.getEnum(RecipeBookGroup.class, "JINERIC_REFINERY_BUILDING");
Expand Down
41 changes: 24 additions & 17 deletions src/main/java/jingy/jineric/mixin/RecipeBookGroupMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import com.google.common.collect.ImmutableMap;
import jingy.jineric.recipe.JinericRecipeBookGroup;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.recipebook.RecipeBookGroup;
import net.minecraft.recipe.book.RecipeBookCategory;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -20,9 +21,8 @@

import static net.minecraft.client.recipebook.RecipeBookGroup.*;

@Environment(value= EnvType.CLIENT)
@Mixin(RecipeBookGroup.class)
public class RecipeBookGroupMixin {
public abstract class RecipeBookGroupMixin {

private static final RecipeBookGroup JINERIC_REFINERY_SEARCH = ClassTinkerers.getEnum(RecipeBookGroup.class, "JINERIC_REFINERY_SEARCH");
private static final RecipeBookGroup JINERIC_REFINERY_BUILDING = ClassTinkerers.getEnum(RecipeBookGroup.class, "JINERIC_REFINERY_BUILDING");
Expand All @@ -37,23 +37,30 @@ public class RecipeBookGroupMixin {
@Final
@Shadow private static RecipeBookGroup SMOKER_SEARCH;
private static final RecipeBookCategory JINERIC_REFINERY = ClassTinkerers.getEnum(RecipeBookCategory.class, "JINERIC_REFINERY");
private static final Map<RecipeBookGroup, List<RecipeBookGroup>> SEARCH_MAP = ImmutableMap.of(
CRAFTING_SEARCH,
ImmutableList.of(CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE),
FURNACE_SEARCH,
ImmutableList.of(FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC),
BLAST_FURNACE_SEARCH,
ImmutableList.of(BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC),
SMOKER_SEARCH,
ImmutableList.of(SMOKER_FOOD),
JINERIC_REFINERY_SEARCH,
ImmutableList.of(JINERIC_REFINERY_BUILDING, JINERIC_REFINERY_MISC)
);

@Shadow
@Mutable
@Final
private static Map<RecipeBookGroup, List<RecipeBookGroup>> SEARCH_MAP;

static {
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
SEARCH_MAP = ImmutableMap.of(
CRAFTING_SEARCH, ImmutableList.of(CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE),
FURNACE_SEARCH, ImmutableList.of(FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC),
BLAST_FURNACE_SEARCH, ImmutableList.of(BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC),
SMOKER_SEARCH, ImmutableList.of(SMOKER_FOOD),
JINERIC_REFINERY_SEARCH, ImmutableList.of(JINERIC_REFINERY_BUILDING, JINERIC_REFINERY_MISC)
);
}
}

@Inject(method = "getGroups", at = @At("HEAD"), cancellable = true)
private static void jineric$checkForRefinery(RecipeBookCategory category, CallbackInfoReturnable<List<RecipeBookGroup>> cir) {
if (category == JINERIC_REFINERY) {
cir.setReturnValue(JinericRecipeBookGroup.JINERIC_REFINERY);
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
if (category == JINERIC_REFINERY) {
cir.setReturnValue(JinericRecipeBookGroup.JINERIC_REFINERY);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,21 @@
import com.mojang.datafixers.util.Pair;
import net.minecraft.recipe.book.RecipeBookCategory;
import net.minecraft.recipe.book.RecipeBookOptions;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;

import java.util.Map;

@Mixin(RecipeBookOptions.class)
public abstract class RecipeBookOptionsMixin {
private static final RecipeBookCategory JINERIC_REFINERY = ClassTinkerers.getEnum(RecipeBookCategory.class, "JINERIC_REFINERY");

private static final Map<RecipeBookCategory, Pair<String, String>> CATEGORY_OPTION_NAMES = ImmutableMap.of(
@Mutable
@Final
@Shadow
private static Map<RecipeBookCategory, Pair<String, String>> CATEGORY_OPTION_NAMES = ImmutableMap.of(
RecipeBookCategory.CRAFTING,
Pair.of("isGuiOpen", "isFilteringCraftable"),
RecipeBookCategory.FURNACE,
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/jingy/jineric/screen/ShulkerChestScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,6 @@ public ShulkerChestScreen(ShulkerChestScreenHandler handler, PlayerInventory inv

}

@Override
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
this.renderBackground(context);
super.render(context, mouseX, mouseY, delta);
this.drawMouseoverTooltip(context, mouseX, mouseY);
}

@Override
protected void drawBackground(DrawContext context, float delta, int mouseX, int mouseY) {
RenderSystem.setShader(GameRenderer::getPositionTexProgram);
Expand All @@ -40,4 +33,11 @@ protected void drawBackground(DrawContext context, float delta, int mouseX, int
int y = (height - backgroundHeight) / 2;
context.drawTexture(TEXTURE, x, y, 0, 0, this.backgroundWidth, this.backgroundHeight, 256, 320);
}

@Override
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
this.renderBackground(context);
super.render(context, mouseX, mouseY, delta);
this.drawMouseoverTooltip(context, mouseX, mouseY);
}
}

0 comments on commit dd1f69c

Please sign in to comment.