filename:
common/src/main/java/rearth/oritech/util/ScreenProvider.java
branch:
1.21
back to repo
package rearth.oritech.util;
import net.minecraft.inventory.Inventory;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.state.property.Properties;
import net.minecraft.state.property.Property;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.Pair;
import net.minecraft.util.math.Direction;
import rearth.oritech.Oritech;
import java.util.List;
import java.util.Optional;
public interface ScreenProvider {
default List<Pair<Text, Text>> getExtraExtensionLabels() {return List.of();}
record GuiSlot (int index, int x, int y, boolean output) {
public GuiSlot (int index, int x, int y) {
this(index, x, y, false);
}
}
record BarConfiguration(int x, int y, int width, int height) {}
record ArrowConfiguration(Identifier empty, Identifier full, int x, int y, int width, int height, boolean horizontal) {}
List<GuiSlot> getGuiSlots();
default boolean showEnergy() {
return true;
}
float getDisplayedEnergyUsage();
default float getDisplayedEnergyTransfer() {
return getDisplayedEnergyUsage() * 10;
}
float getProgress();
InventoryInputMode getInventoryInputMode();
Inventory getDisplayedInventory();
ScreenHandlerType<?> getScreenHandlerType();
default boolean inputOptionsEnabled() {return true;}
default Property<Direction> getBlockFacingProperty() {
return Properties.HORIZONTAL_FACING;
}
default boolean showProgress() {
return true;
}
default boolean showArmor() {return false;}
default boolean showExpansionPanel() {return true;}
default boolean hasRedstoneControlAvailable() {return false;}
default int receivedRedstoneSignal() {return 0;}
default String currentRedstoneEffect() {return "";}
default BarConfiguration getEnergyConfiguration() {
return new BarConfiguration(7, 24, 15, 54);
}
default BarConfiguration getFluidConfiguration() {
return new BarConfiguration(147, 6, 21, 74);
}
default Optional<String> getWikiLink() { return Optional.empty(); } // optional override. Expected format is "interaction/enderic_laser". Defaults to the item link defined in the pages markdown.
default ArrowConfiguration getIndicatorConfiguration() {
return new ArrowConfiguration(
Oritech.id("textures/gui/modular/arrow_empty.png"),
Oritech.id("textures/gui/modular/arrow_full.png"),
80, 35, 29, 16, true);
}
}