Skip to content

Commit

Permalink
Merge pull request #280 from Ridanisaurus/main
Browse files Browse the repository at this point in the history
Textures Update
  • Loading branch information
Mari023 authored Jun 24, 2024
2 parents f6b16f2 + 3234960 commit 42572b3
Show file tree
Hide file tree
Showing 40 changed files with 352 additions and 180 deletions.
14 changes: 9 additions & 5 deletions src/main/java/de/mari_023/ae2wtlib/AE2wtlib.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@

import de.mari_023.ae2wtlib.hotkeys.MagnetHotkeyAction;
import de.mari_023.ae2wtlib.hotkeys.RestockHotkeyAction;
import de.mari_023.ae2wtlib.terminal.Icon;
import de.mari_023.ae2wtlib.wat.WATMenu;
import de.mari_023.ae2wtlib.wat.WATMenuHost;
import de.mari_023.ae2wtlib.wat.WATScreen;
import de.mari_023.ae2wtlib.wct.*;
import de.mari_023.ae2wtlib.wct.magnet_card.config.MagnetMenu;
import de.mari_023.ae2wtlib.wct.magnet_card.config.MagnetScreen;
import de.mari_023.ae2wtlib.wct.magnet_card.MagnetMenu;
import de.mari_023.ae2wtlib.wct.magnet_card.MagnetScreen;
import de.mari_023.ae2wtlib.wet.WETMenu;
import de.mari_023.ae2wtlib.wet.WETMenuHost;
import de.mari_023.ae2wtlib.wet.WETScreen;
Expand All @@ -37,12 +38,15 @@ public class AE2wtlib {

public static void onAe2Initialized() {
AddTerminalEvent.register((event -> {
event.builder("crafting", WCTMenuHost::new, WCTMenu.TYPE, AE2wtlibItems.WIRELESS_CRAFTING_TERMINAL)
event.builder("crafting", WCTMenuHost::new, WCTMenu.TYPE, AE2wtlibItems.WIRELESS_CRAFTING_TERMINAL,
Icon.CRAFTING)
.hotkeyName(HotkeyAction.WIRELESS_TERMINAL)
.translationKey("item.ae2.wireless_crafting_terminal").addTerminal();
event.builder("pattern_encoding", WETMenuHost::new, WETMenu.TYPE, AE2wtlibItems.PATTERN_ENCODING_TERMINAL)
event.builder("pattern_encoding", WETMenuHost::new, WETMenu.TYPE, AE2wtlibItems.PATTERN_ENCODING_TERMINAL,
Icon.PATTERN_ENCODING)
.addTerminal();
event.builder("pattern_access", WATMenuHost::new, WATMenu.TYPE, AE2wtlibItems.PATTERN_ACCESS_TERMINAL)
event.builder("pattern_access", WATMenuHost::new, WATMenu.TYPE, AE2wtlibItems.PATTERN_ACCESS_TERMINAL,
Icon.PATTERN_ACCESS)
.addTerminal();
}));

Expand Down
14 changes: 12 additions & 2 deletions src/main/java/de/mari_023/ae2wtlib/TextConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

import appeng.api.config.IncludeExclude;

import de.mari_023.ae2wtlib.wut.WTDefinition;

public final class TextConstants {
private TextConstants() {
}
Expand Down Expand Up @@ -44,8 +46,16 @@ public static MutableComponent formatTerminalName(String terminal) {

public static final Component TERMINAL_EMPTY = Component
.literal("This terminal does not contain any other Terminals");
public static final Component CYCLE_TOOLTIP = Component.translatable("gui.ae2wtlib.cycle_terminal.desc")
.append("\n").append(Component.translatable("gui.ae2wtlib.cycle_terminal.desc1"));

public static Component cycleNext(WTDefinition terminal) {
return Component.translatable("gui.ae2wtlib.cycle_terminal.desc",
Component.translatable(terminal.translationKey()));
}

public static Component cyclePrevious(WTDefinition terminal) {
return Component.translatable("gui.ae2wtlib.cycle_terminal.desc1",
Component.translatable(terminal.translationKey()));
}

public static final MutableComponent TRASH = Component.translatable("gui.ae2wtlib.trash");

Expand Down
45 changes: 19 additions & 26 deletions src/main/java/de/mari_023/ae2wtlib/terminal/ArmorSlot.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
package de.mari_023.ae2wtlib.terminal;

import com.mojang.datafixers.util.Pair;

import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.InventoryMenu;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ItemStack;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;

import appeng.menu.slot.AppEngSlot;

Expand All @@ -19,37 +13,36 @@ public class ArmorSlot extends AppEngSlot {
private final Armor armor;

public ArmorSlot(Inventory playerInventory, Armor armor) {
super(new WrappedPlayerInventory(playerInventory), armor.invSlot);
super(new WrappedPlayerInventory(playerInventory), armor.armor.invSlot);
this.playerInventory = playerInventory;
this.armor = armor;
}

@OnlyIn(Dist.CLIENT)
public Pair<ResourceLocation, ResourceLocation> getNoItemIcon() {
return Pair.of(InventoryMenu.BLOCK_ATLAS, armor.background);
}

public boolean mayPlace(ItemStack stack) {
return armor == Armor.OFFHAND
|| (playerInventory.canPlaceItem(armor.invSlot, stack) && stack.getItem() instanceof ArmorItem aItem
&& aItem.getEquipmentSlot().equals(armor.equipmentSlot));
|| (playerInventory.canPlaceItem(armor.armor.invSlot, stack)
&& stack.getItem() instanceof ArmorItem aItem
&& aItem.getEquipmentSlot().equals(armor.armor.equipmentSlot));
}

public Icon icon() {
return armor.armor.background;
}

public enum Armor {
FEET(EquipmentSlot.FEET, 36, InventoryMenu.EMPTY_ARMOR_SLOT_BOOTS),
LEGS(EquipmentSlot.LEGS, 37, InventoryMenu.EMPTY_ARMOR_SLOT_LEGGINGS),
CHEST(EquipmentSlot.CHEST, 38, InventoryMenu.EMPTY_ARMOR_SLOT_CHESTPLATE),
HEAD(EquipmentSlot.HEAD, 39, InventoryMenu.EMPTY_ARMOR_SLOT_HELMET),
OFFHAND(EquipmentSlot.HEAD, Inventory.SLOT_OFFHAND, InventoryMenu.EMPTY_ARMOR_SLOT_SHIELD);
FEET(new ArmorValue(EquipmentSlot.FEET, 36, Icon.EMPTY_ARMOR_SLOT_BOOTS)),
LEGS(new ArmorValue(EquipmentSlot.LEGS, 37, Icon.EMPTY_ARMOR_SLOT_LEGGINGS)),
CHEST(new ArmorValue(EquipmentSlot.CHEST, 38, Icon.EMPTY_ARMOR_SLOT_CHESTPLATE)),
HEAD(new ArmorValue(EquipmentSlot.HEAD, 39, Icon.EMPTY_ARMOR_SLOT_HELMET)),
OFFHAND(new ArmorValue(EquipmentSlot.HEAD, Inventory.SLOT_OFFHAND, Icon.EMPTY_ARMOR_SLOT_SHIELD));

public final ArmorValue armor;

public final EquipmentSlot equipmentSlot;
public final int invSlot;
public final ResourceLocation background;
Armor(ArmorValue armor) {
this.armor = armor;
}

Armor(EquipmentSlot equipmentSlot, int invSlot, ResourceLocation background) {
this.equipmentSlot = equipmentSlot;
this.invSlot = invSlot;
this.background = background;
public record ArmorValue(EquipmentSlot equipmentSlot, int invSlot, Icon background) {
}
}

Expand Down
71 changes: 71 additions & 0 deletions src/main/java/de/mari_023/ae2wtlib/terminal/Icon.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package de.mari_023.ae2wtlib.terminal;

import net.minecraft.resources.ResourceLocation;

import appeng.client.gui.style.Blitter;
import appeng.core.AppEng;

/**
* Edit in {@code assets/ae2/textures/wtlib/guis/icons.png}.
*/
public class Icon {
public static final Texture TEXTURE = new Texture(AppEng.makeId("textures/wtlib/guis/icons.png"), 128, 128);
public static final Texture AE2TEXTURE = new Texture(appeng.client.gui.Icon.TEXTURE,
appeng.client.gui.Icon.TEXTURE_WIDTH, appeng.client.gui.Icon.TEXTURE_HEIGHT);

public static final Icon BUTTON_BACKGROUND = new Icon(79, 0, 16, 17);
public static final Icon BUTTON_BACKGROUND_HOVER = new Icon(95, 1, 16, 16);

public static final Icon TOOLBAR_BUTTON_BACKGROUND = new Icon(176, 128, 18, 20, AE2TEXTURE);
public static final Icon TOOLBAR_BUTTON_BACKGROUND_HOVER = new Icon(208, 128, 18, 20, AE2TEXTURE);

public static final Icon MAGNET = new Icon(0, 0);
public static final Icon MAGNET_FILTER = new Icon(0, 16);
public static final Icon TRASH = new Icon(0, 32);

public static final Icon PATTERN_ACCESS = new Icon(16, 0);
public static final Icon PATTERN_ENCODING = new Icon(16, 16);
public static final Icon CRAFTING = new Icon(16, 32);

public static final Icon NO = new Icon(32, 0);
public static final Icon YES = new Icon(32, 16);
public static final Icon UP = new Icon(32, 32);
public static final Icon DOWN = new Icon(32, 48);
public static final Icon SWITCH = new Icon(32, 64);

public static final Icon EMPTY_ARMOR_SLOT_HELMET = new Icon(112, 0);
public static final Icon EMPTY_ARMOR_SLOT_CHESTPLATE = new Icon(112, 16);
public static final Icon EMPTY_ARMOR_SLOT_LEGGINGS = new Icon(112, 32);
public static final Icon EMPTY_ARMOR_SLOT_BOOTS = new Icon(112, 48);
public static final Icon EMPTY_ARMOR_SLOT_SHIELD = new Icon(112, 64);

public final Texture texture;
public final int x;
public final int y;
public final int width;
public final int height;

private Icon(int x, int y) {
this(x, y, 16, 16);
}

private Icon(int x, int y, int width, int height) {
this(x, y, width, height, TEXTURE);
}

public Icon(int x, int y, int width, int height, Texture texture) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.texture = texture;
}

public Blitter getBlitter() {
return Blitter.texture(texture.location(), texture.width(), texture.height())
.src(x, y, width, height);
}

public record Texture(ResourceLocation location, int width, int height) {
}
}
100 changes: 100 additions & 0 deletions src/main/java/de/mari_023/ae2wtlib/terminal/IconButton.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package de.mari_023.ae2wtlib.terminal;

import java.util.Collections;
import java.util.List;

import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.Nullable;

import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.renderer.Rect2i;
import net.minecraft.network.chat.Component;

import appeng.client.gui.widgets.ITooltip;

public class IconButton extends Button implements ITooltip {
private final Icon icon;
private final Icon bg;
private final Icon bg_hovered;
@Nullable
private List<Component> tooltip;

public IconButton(OnPress onPress, Icon icon) {
this(onPress, icon, Icon.BUTTON_BACKGROUND, Icon.BUTTON_BACKGROUND_HOVER);
}

public IconButton(OnPress onPress, Icon icon, Icon bg, Icon bg_hovered) {
super(0, 0, 16, 16, Component.empty(), onPress, Button.DEFAULT_NARRATION);
this.icon = icon;
this.bg = bg;
this.bg_hovered = bg_hovered;
}

public static IconButton withAE2Background(OnPress onPress, Icon icon) {
return new IconButton(onPress, icon, Icon.TOOLBAR_BUTTON_BACKGROUND, Icon.TOOLBAR_BUTTON_BACKGROUND_HOVER);
}

public void setVisibility(boolean vis) {
visible = vis;
active = vis;
}

@Override
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partial) {
if (!visible)
return;

var yOffset = isHoveredOrFocused() ? 1 : 0;
var bg = getBG();
var bgSizeOffset = bg.width > 16 ? 1 : 0;

bg.getBlitter()
.dest(getX() - 1, getY() + yOffset, bg.width, bg.height)
.zOffset(2)
.blit(guiGraphics);
getIcon().getBlitter().dest(getX() - 1 + bgSizeOffset, getY() + bgSizeOffset + yOffset).zOffset(3)
.blit(guiGraphics);
}

protected Icon getIcon() {
return icon;
}

private Icon getBG() {
return isHoveredOrFocused() ? bg_hovered : bg;
}

@Override
public List<Component> getTooltipMessage() {
if (tooltip == null)
return Collections.singletonList(getMessage());
return tooltip;
}

@Override
public Rect2i getTooltipArea() {
return new Rect2i(
getX(),
getY(),
getBG().width,
getBG().height);
}

@Override
public boolean isTooltipAreaVisible() {
return visible;
}

@Contract("_ -> this")
public IconButton withTooltip(Component message) {
super.setMessage(message);
return this;
}

@Contract("_ -> this")
public IconButton withTooltip(List<Component> tooltip) {
this.tooltip = tooltip;
return this;
}
}
28 changes: 0 additions & 28 deletions src/main/java/de/mari_023/ae2wtlib/terminal/ItemButton.java

This file was deleted.

6 changes: 6 additions & 0 deletions src/main/java/de/mari_023/ae2wtlib/wct/TrashScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,10 @@ public TrashScreen(TrashMenu menu, Inventory playerInventory, Component title, S
super(menu, playerInventory, title, style);
AESubScreen.addBackButton(menu, "back", widgets);
}

// Added to remove the VerticalButtonBar for this Screen - Rid
@Override
protected boolean shouldAddToolbar() {
return false;
}
}
2 changes: 1 addition & 1 deletion src/main/java/de/mari_023/ae2wtlib/wct/WCTMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
import de.mari_023.ae2wtlib.terminal.ArmorSlot;
import de.mari_023.ae2wtlib.terminal.WTMenuHost;
import de.mari_023.ae2wtlib.wct.magnet_card.MagnetHandler;
import de.mari_023.ae2wtlib.wct.magnet_card.MagnetMenu;
import de.mari_023.ae2wtlib.wct.magnet_card.MagnetMode;
import de.mari_023.ae2wtlib.wct.magnet_card.config.MagnetMenu;
import de.mari_023.ae2wtlib.wut.ItemWUT;

public class WCTMenu extends CraftingTermMenu {
Expand Down
Loading

0 comments on commit 42572b3

Please sign in to comment.