Skip to content

Commit

Permalink
7.1 working
Browse files Browse the repository at this point in the history
  • Loading branch information
UselessBullets committed Dec 26, 2023
1 parent eb59914 commit 2b5c3df
Show file tree
Hide file tree
Showing 15 changed files with 227 additions and 135 deletions.
91 changes: 84 additions & 7 deletions src/main/java/useless/legacyui/Helper/InventoryHelper.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,104 @@
package useless.legacyui.Helper;

import net.minecraft.client.gui.guidebook.GuidebookPage;
import net.minecraft.client.gui.guidebook.GuidebookSections;
import net.minecraft.client.gui.guidebook.crafting.CraftingPage;
import net.minecraft.core.data.registry.Registries;
import net.minecraft.core.data.registry.recipe.RecipeSymbol;
import net.minecraft.core.data.registry.recipe.entry.RecipeEntryCrafting;
import net.minecraft.core.data.registry.recipe.entry.RecipeEntryCraftingShaped;
import net.minecraft.core.data.registry.recipe.entry.RecipeEntryCraftingShapeless;
import net.minecraft.core.item.ItemStack;
import net.minecraft.core.player.inventory.IInventory;
import net.minecraft.core.player.inventory.slot.Slot;
import net.minecraft.core.player.inventory.slot.SlotGuidebook;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class InventoryHelper {
public static Map<RecipeEntryCrafting<?, ?>, List<SlotGuidebook>> recipeMap = new HashMap<>();
static {
GuidebookSections.init();
for (GuidebookPage page: GuidebookSections.CRAFTING.getPages()){
CraftingPage craftingPage = (CraftingPage) page;
recipeMap.putAll(craftingPage.map);
// Would've just used the crafting pages' info for this but because their creation requires the player to exist (just to give the guidebook achievement) I instead have to copy the code here
ArrayList<RecipeEntryCrafting<?, ?>> allRecipes = new ArrayList<>(Registries.RECIPES.getAllCraftingRecipes());
int recipeAmount = 0;
int xOffset = 32;
int yOffset = 12;
Map<RecipeEntryCrafting<?, ?>, List<SlotGuidebook>> map = new HashMap<>();
for (RecipeEntryCrafting<?, ?> recipe : allRecipes) {
int centerY;
int i;
int slotsAmount;
RecipeEntryCrafting<?, ?> r;
ArrayList<SlotGuidebook> recipeSlots = new ArrayList<SlotGuidebook>();
if (recipe instanceof RecipeEntryCraftingShaped) {
RecipeSymbol stack;
int slotY;
r = recipe;
if (((RecipeEntryCraftingShaped)r).recipeHeight > 2 || ((RecipeEntryCraftingShaped)r).recipeWidth > 2) {
slotsAmount = 10;
for (i = 0; i < slotsAmount - 1; ++i) {
int slotX = i % 3;
slotY = i / 3;
if (slotX >= ((RecipeEntryCraftingShaped)r).recipeWidth || slotY >= ((RecipeEntryCraftingShaped)r).recipeHeight) {
recipeSlots.add(new SlotGuidebook(i, 1 + 18 * (i % 3) + xOffset, 1 + 18 * (i / 3 + recipeAmount * 3) + yOffset, null, false, recipe));
continue;
}
stack = ((RecipeSymbol[])r.getInput())[slotX + slotY * ((RecipeEntryCraftingShaped)r).recipeWidth];
recipeSlots.add(new SlotGuidebook(i, 1 + 18 * (i % 3) + xOffset, 1 + 18 * (i / 3 + recipeAmount * 3) + yOffset, stack, false, recipe));
}
centerY = (recipeSlots.get(recipeSlots.size() - 1).yDisplayPosition + recipeSlots.get(recipeSlots.size() - 8).yDisplayPosition) / 2;
recipeSlots.add(new SlotGuidebook(slotsAmount - 1, 81 + xOffset, centerY, new RecipeSymbol(((ItemStack)r.getOutput()).copy()), false, recipe).setAsOutput());
} else {
slotsAmount = 5;
for (i = 0; i < slotsAmount - 1; ++i) {
int slotX = i % 2;
slotY = i / 2;
if (slotX >= ((RecipeEntryCraftingShaped)r).recipeWidth || slotY >= ((RecipeEntryCraftingShaped)r).recipeHeight) {
recipeSlots.add(new SlotGuidebook(i, 13 + 18 * (i % 2) + xOffset, 10 + 18 * (i / 2 + recipeAmount * 3) + yOffset, null, false, recipe));
continue;
}
stack = ((RecipeSymbol[])r.getInput())[slotX + slotY * ((RecipeEntryCraftingShaped)r).recipeWidth];
recipeSlots.add(new SlotGuidebook(i, 13 + 18 * (i % 2) + xOffset, 10 + 18 * (i / 2 + recipeAmount * 3) + yOffset, stack, false, recipe));
}
centerY = (recipeSlots.get(recipeSlots.size() - 1).yDisplayPosition + recipeSlots.get(recipeSlots.size() - 3).yDisplayPosition) / 2;
recipeSlots.add(new SlotGuidebook(slotsAmount - 1, 81 + xOffset, centerY, new RecipeSymbol((ItemStack)r.getOutput()), false, recipe).setAsOutput());
}
map.put(recipe, recipeSlots);
yOffset += 10;
++recipeAmount;
continue;
}
if (!(recipe instanceof RecipeEntryCraftingShapeless)) continue;
r = recipe;
if (((List<?>)r.getInput()).size() > 4) {
slotsAmount = 10;
for (i = 0; i < Math.max(((List<?>)r.getInput()).size(), 9); ++i) {
if (i >= ((List<?>)r.getInput()).size()) {
recipeSlots.add(new SlotGuidebook(i, 1 + 18 * (i % 3) + xOffset, 1 + 18 * (i / 3 + recipeAmount * 3) + yOffset, null, false, recipe));
continue;
}
RecipeSymbol stack = (RecipeSymbol)((List<?>)r.getInput()).get(i);
recipeSlots.add(new SlotGuidebook(i, 1 + 18 * (i % 3) + xOffset, 1 + 18 * (i / 3 + recipeAmount * 3) + yOffset, stack, false, recipe));
}
centerY = (recipeSlots.get(recipeSlots.size() - 1).yDisplayPosition + recipeSlots.get(recipeSlots.size() - 8).yDisplayPosition) / 2;
} else {
slotsAmount = 5;
for (i = 0; i < Math.max(((List<?>)r.getInput()).size(), 4); ++i) {
if (i >= ((List<?>)r.getInput()).size()) {
recipeSlots.add(new SlotGuidebook(i, 13 + 18 * (i % 2) + xOffset, 10 + 18 * (i / 2 + recipeAmount * 3) + yOffset, null, false, recipe));
continue;
}
RecipeSymbol stack = (RecipeSymbol)((List<?>)r.getInput()).get(i);
recipeSlots.add(new SlotGuidebook(i, 13 + 18 * (i % 2) + xOffset, 10 + 18 * (i / 2 + recipeAmount * 3) + yOffset, stack, false, recipe));
}
centerY = (recipeSlots.get(recipeSlots.size() - 1).yDisplayPosition + recipeSlots.get(recipeSlots.size() - 3).yDisplayPosition) / 2;
}
recipeSlots.add(new SlotGuidebook(slotsAmount - 1, 81 + xOffset, centerY, new RecipeSymbol((ItemStack)r.getOutput()), false, recipe).setAsOutput());
map.put(recipe, recipeSlots);
yOffset += 10;
++recipeAmount;
}
recipeMap.putAll(map);
}
public static int itemsInInventory(IInventory inventory, ItemStack itemToFind){
if (inventory == null) {return -1;}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/useless/legacyui/LegacyUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import turniplabs.halplibe.helper.SoundHelper;
import turniplabs.halplibe.util.GameStartEntrypoint;
import useless.legacyui.Helper.IconHelper;
import useless.legacyui.Settings.ILegacyOptions;

public class LegacyUI implements ModInitializer {
public static final String MOD_ID = "legacyui";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
public static ILegacyOptions modSettings;

@Override
public void onInitialize() {
SoundHelper.addSound(MOD_ID, "ui/back.wav");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package useless.legacyui.Mixins.Components;

import net.minecraft.client.gui.hud.ArmorBarComponent;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import useless.legacyui.Gui.GuiScreens.UtilGui;

@Mixin(ArmorBarComponent.class)
public class ArmorBarComponentMixin {
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V"))
private void hotbarFadeout(float red, float green, float blue, float alpha){
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(770, 771);
GL11.glColor4f(red, green, blue, UtilGui.getHotbarAlpha());
}
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glDisable(I)V"))
private void disableDisable(int cap){}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package useless.legacyui.Mixins.Components;

import net.minecraft.client.gui.hud.FireBarComponent;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import useless.legacyui.Gui.GuiScreens.UtilGui;

@Mixin(FireBarComponent.class)
public class FireBarComponentMixin {
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V"))
private void hotbarFadeout(float red, float green, float blue, float alpha){
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(770, 771);
GL11.glColor4f(red, green, blue, UtilGui.getHotbarAlpha());
}
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glDisable(I)V"))
private void disableDisable(int cap){}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package useless.legacyui.Mixins.Components;

import net.minecraft.client.gui.hud.HealthBarComponent;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import useless.legacyui.Gui.GuiScreens.UtilGui;

@Mixin(value = HealthBarComponent.class, remap = false)
public class HealthBarComponentMixin {
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V"))
private void hotbarFadeout(float red, float green, float blue, float alpha){
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(770, 771);
GL11.glColor4f(red, green, blue, UtilGui.getHotbarAlpha());
}
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glDisable(I)V"))
private void disableDisable(int cap){}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package useless.legacyui.Mixins.Components;

import net.minecraft.client.gui.hud.HotbarComponent;
import net.minecraft.client.render.FontRenderer;
import net.minecraft.client.render.RenderEngine;
import net.minecraft.client.render.entity.ItemEntityRenderer;
import net.minecraft.core.item.ItemStack;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import useless.legacyui.Gui.GuiScreens.UtilGui;

@Mixin(value = HotbarComponent.class, remap = false)
public class HotbarComponentMixin {
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V"))
private void hotbarFadeout(float red, float green, float blue, float alpha){
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(770, 771);
GL11.glColor4f(red, green, blue, UtilGui.getHotbarAlpha());
}
@Redirect(method = "renderInventorySlot(Lnet/minecraft/client/Minecraft;IIIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/ItemEntityRenderer;renderItemIntoGUI(Lnet/minecraft/client/render/FontRenderer;Lnet/minecraft/client/render/RenderEngine;Lnet/minecraft/core/item/ItemStack;IIF)V"))
private void fadeIntoGUI(ItemEntityRenderer instance, FontRenderer fontrenderer, RenderEngine renderengine, ItemStack itemstack, int i, int j, float alpha){
instance.renderItemIntoGUI(fontrenderer, renderengine, itemstack, i, j, UtilGui.getHotbarAlpha());
}
@Redirect(method = "renderInventorySlot(Lnet/minecraft/client/Minecraft;IIIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/ItemEntityRenderer;renderItemOverlayIntoGUI(Lnet/minecraft/client/render/FontRenderer;Lnet/minecraft/client/render/RenderEngine;Lnet/minecraft/core/item/ItemStack;IIF)V"))
private void fadeIntoGUIOverlay(ItemEntityRenderer instance, FontRenderer fontrenderer, RenderEngine renderengine, ItemStack itemstack, int i, int j, float alpha){
instance.renderItemOverlayIntoGUI(fontrenderer, renderengine, itemstack, i, j, UtilGui.getHotbarAlpha());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package useless.legacyui.Mixins.Components;

import net.minecraft.client.gui.hud.OxygenBarComponent;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import useless.legacyui.Gui.GuiScreens.UtilGui;

@Mixin(OxygenBarComponent.class)
public class OxygenBarComponentMixin {
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V"))
private void hotbarFadeout(float red, float green, float blue, float alpha){
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(770, 771);
GL11.glColor4f(red, green, blue, UtilGui.getHotbarAlpha());
}
@Redirect(method = "render(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/GuiIngame;IIF)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glDisable(I)V"))
private void disableDisable(int cap){}
}
27 changes: 0 additions & 27 deletions src/main/java/useless/legacyui/Mixins/Gui/GuiGuidebookMixin.djava

This file was deleted.

52 changes: 4 additions & 48 deletions src/main/java/useless/legacyui/Mixins/Gui/GuiIngameMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@
public class GuiIngameMixin {
@Shadow
protected Minecraft mc;
@Redirect(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/ItemEntityRenderer;renderItemIntoGUI(Lnet/minecraft/client/render/FontRenderer;Lnet/minecraft/client/render/RenderEngine;Lnet/minecraft/core/item/ItemStack;IIF)V"))
private void fadeOut(ItemEntityRenderer instance, FontRenderer fontrenderer, RenderEngine renderengine, ItemStack itemstack, int i, int j, float alpha){
instance.renderItemIntoGUI(fontrenderer, renderengine, itemstack, i, j, UtilGui.getHotbarAlpha());
}
@Redirect(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/option/ImmersiveModeOption;drawHotbar()Z"))
private boolean dontRenderInGuiHotbar(ImmersiveModeOption instance){
if (LegacyUI.modSettings.getHideHotbarInGUIs().value){
Expand All @@ -33,54 +37,6 @@ private boolean dontRenderInGuiHotbar(ImmersiveModeOption instance){
}
return instance.drawHotbar();
}
// @Redirect(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V", ordinal = 0))
// private void fadeOutHotBar1(float red, float green, float blue, float alpha){
// GL11.glColor4d(red, green, blue, UtilGui.getHotbarAlpha());
// }
// @Redirect(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Ljava/lang/Boolean;booleanValue()Z", ordinal = 11))
// private boolean dontRenderInGuiArmor(Boolean instance){
// if (LegacyUI.modSettings.getHideHotbarInGUIs().value){
// if (mc.currentScreen instanceof GuiContainer){
// return false;
// }
// }
// return instance;
// }
// @Redirect(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/ItemEntityRenderer;renderItemIntoGUI(Lnet/minecraft/client/render/FontRenderer;Lnet/minecraft/client/render/RenderEngine;Lnet/minecraft/core/item/ItemStack;IIF)V"))
// private void alphaHeldItem(ItemEntityRenderer instance, FontRenderer fontrenderer, RenderEngine renderengine, ItemStack itemstack, int i, int j, float alpha){
// UtilGui.blockAlpha = UtilGui.getHotbarAlpha();
// instance.renderItemIntoGUI(fontrenderer, renderengine, itemstack, i, j, UtilGui.getHotbarAlpha());
// UtilGui.blockAlpha = 1;
// }
// @Inject(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/controller/PlayerController;shouldDrawHUD()Z"))
// private void heartsAndArmorAlphaOn(float partialTicks, boolean flag, int mouseX, int mouseY, CallbackInfo ci){
// GL11.glEnable(GL11.GL_BLEND);
// GL11.glBlendFunc(770, 771);
// GL11.glColor4f(1,1,1, UtilGui.getHotbarAlpha());
// }
// @Inject(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glEnable(I)V", ordinal = 2))
// private void heartsAndArmorAlphaOff(float partialTicks, boolean flag, int mouseX, int mouseY, CallbackInfo ci){
// GL11.glDisable(GL11.GL_BLEND);
// GL11.glColor4f(1,1,1, 1);
// }



// @Redirect(method = "renderGameOverlay(FZII)V", at = @At(value = "INVOKE", target = "Ljava/lang/Boolean;booleanValue()Z", ordinal = 12))
// private boolean dontRenderInGuiHeldItem(Boolean instance){
// if (LegacyUI.modSettings.getHideHotbarInGUIs().value){
// if (mc.currentScreen instanceof GuiContainer){
// return false;
// }
// }
// return instance;
// }
// @Inject(method = "renderGameOverlay(FZII)V", at = @At(value = "HEAD"))
// private void resetAlpha(float partialTicks, boolean flag, int mouseX, int mouseY, CallbackInfo ci){
// GL11.glDisable(GL11.GL_BLEND);
// GL11.glColor4f(1,1,1, 1);
// UtilGui.blockAlpha = 1f;
// }
@Inject(method = "renderGameOverlay(FZII)V", at = @At(value = "TAIL"))
private void paperDoll(float partialTicks, boolean flag, int mouseX, int mouseY, CallbackInfo ci){
if (LegacyUI.modSettings.getHideHotbarInGUIs().value){
Expand Down
Loading

0 comments on commit 2b5c3df

Please # to comment.