Skip to content

Commit

Permalink
Merge branch 'main' into pcb-multis
Browse files Browse the repository at this point in the history
  • Loading branch information
MCTian-mi authored Mar 6, 2025
2 parents fc0810d + a85f206 commit 86878e5
Show file tree
Hide file tree
Showing 81 changed files with 1,632 additions and 18 deletions.
8 changes: 5 additions & 3 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ dependencies {
//GeckoLib
implementation rfg.deobf('curse.maven:geckolib-388172:4020277')

implementation rfg.deobf('curse.maven:realistic-terrain-generation-unofficial-648514:4404814')
compileOnly rfg.deobf('curse.maven:realistic-terrain-generation-unofficial-648514:4404814')

compileOnly rfg.deobf('curse.maven:biomes-o-plenty-220318:2842510')

Expand All @@ -48,8 +48,8 @@ dependencies {
implementation rfg.deobf("curse.maven:immersive-railroading-277736:4970105") // Immersive-Railroading v1.10.0

implementation rfg.deobf("curse.maven:ctm-267602:2915363") // CTM 1.0.2.31
implementation rfg.deobf("curse.maven:groovyscript-687577:5507936") // GRS 1.1.1
implementation rfg.deobf("curse.maven:modularui-624243:5153413")
api("com.cleanroommc:groovyscript:1.2.0-hotfix1") { transitive = false }
api("com.cleanroommc:modularui:2.5.0-rc4") { transitive = false }

runtimeOnly rfg.deobf("curse.maven:the-beneath-254629:3425551")

Expand All @@ -76,4 +76,6 @@ dependencies {
compileOnly rfg.deobf("curse.maven:yungs-better-mineshafts-forge-389665:3247154")

api("CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.20.700")

runtimeOnly 'com.cleanroommc:osxnarratorblocker:1.0'
}
4 changes: 4 additions & 0 deletions src/main/java/supersymmetry/Supersymmetry.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package supersymmetry;

import com.cleanroommc.modularui.factory.GuiManager;
import gregtech.GTInternalTags;
import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.fml.common.Mod;
Expand All @@ -12,6 +13,7 @@
import net.minecraftforge.fml.relauncher.Side;
import org.jetbrains.annotations.NotNull;
import supersymmetry.api.capability.SuSyCapabilities;
import supersymmetry.api.metatileentity.MetaTileEntityGuiFactory;
import supersymmetry.api.sound.SusySounds;
import supersymmetry.common.CommonProxy;
import supersymmetry.common.SusyMetaEntities;
Expand Down Expand Up @@ -58,6 +60,8 @@ public void onPreInit(@NotNull FMLPreInitializationEvent event) {

SusySounds.registerSounds();

GuiManager.registerFactory(MetaTileEntityGuiFactory.INSTANCE);

SuSyMetaTileEntities.init();
SuSyCapabilities.init();

Expand Down
31 changes: 31 additions & 0 deletions src/main/java/supersymmetry/api/gui/SusyGuiTextures.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package supersymmetry.api.gui;

import com.cleanroommc.modularui.drawable.UITexture;
import gregtech.api.GTValues;
import gregtech.api.gui.resources.SteamTexture;
import gregtech.api.gui.resources.TextureArea;

import static com.cleanroommc.modularui.drawable.UITexture.fullImage;

public class SusyGuiTextures {
public static final SteamTexture PROGRESS_BAR_MIXER_STEAM = SteamTexture.fullImage("textures/gui/progress_bar/progress_bar_mixer_%s.png");
public static final SteamTexture PROGRESS_BAR_EXTRACTION_STEAM = SteamTexture.fullImage("textures/gui/progress_bar/progress_bar_extraction_%s.png");
Expand All @@ -28,4 +32,31 @@ public class SusyGuiTextures {
public static final TextureArea BUTTON_INT_CIRCUIT_PLUS_PRIMITIVE = TextureArea.fullImage("textures/gui/widget/button_circuit_plus_primitive.png");
public static final TextureArea BUTTON_INT_CIRCUIT_MINUS_PRIMITIVE = TextureArea.fullImage("textures/gui/widget/button_circuit_minus_primitive.png");
public static final TextureArea FLUID_SLOT_PRIMITIVE = TextureArea.fullImage("textures/gui/base/fluid_slot_primitive.png");

public static final UITexture BACKGROUND_POPUP = UITexture.builder()
.location(GTValues.MODID, "textures/gui/base/background_popup.png")
.imageSize(195, 136)
.adaptable(4)
.name("gregtech_cover_bg")
.canApplyTheme()
.build();

public static final UITexture BUTTON_POWER = UITexture.builder()
.location(GTValues.MODID, "textures/gui/widget/button_power_2.png")
.imageSize(18, 36)
.build();

public static final UITexture GREGTECH_LOGO = fullImage(GTValues.MODID, "textures/gui/icon/gregtech_logo.png");
public static final UITexture GREGTECH_LOGO_XMAS = fullImage(GTValues.MODID, "textures/gui/icon/gregtech_logo_xmas.png");
public static final UITexture OREDICT_ERROR = fullImage(GTValues.MODID, "textures/gui/widget/ore_filter/error.png");
public static final UITexture OREDICT_INFO = fullImage(GTValues.MODID, "textures/gui/widget/ore_filter/info.png");
public static final UITexture OREDICT_SUCCESS = fullImage(GTValues.MODID, "textures/gui/widget/ore_filter/success.png");
public static final UITexture OREDICT_WAITING = fullImage(GTValues.MODID, "textures/gui/widget/ore_filter/waiting.png");
public static final UITexture BUTTON_RENDER_AREA = fullImage(GTValues.MODID, "textures/gui/widget/button_render_area.png");
public static final UITexture BUTTON_SETTINGS = fullImage(GTValues.MODID, "textures/gui/widget/button_settings.png");
public static final UITexture BUTTON_STOCK_FILTER = fullImage(GTValues.MODID, "textures/gui/widget/button_stock_filter.png");
public static final UITexture BRAKE_ACTIVE = fullImage(GTValues.MODID, "textures/gui/widget/icon_brake_active.png");
public static final UITexture BRAKE_INACTIVE = fullImage(GTValues.MODID, "textures/gui/widget/icon_brake_inactive.png");
public static final UITexture THROTTLE_ACTIVE = fullImage(GTValues.MODID, "textures/gui/widget/icon_throttle_active.png");
public static final UITexture THROTTLE_INACTIVE = fullImage(GTValues.MODID, "textures/gui/widget/icon_throttle_inactive.png");
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package supersymmetry.api.metatileentity;

import com.cleanroommc.modularui.api.IGuiHolder;
import com.cleanroommc.modularui.factory.AbstractUIFactory;
import com.cleanroommc.modularui.factory.GuiManager;
import com.cleanroommc.modularui.factory.PosGuiData;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;

/**
* Copied from CEu master branch
*/
@Deprecated
@ApiStatus.ScheduledForRemoval(inVersion = "Next CEu update")
public class MetaTileEntityGuiFactory extends AbstractUIFactory<PosGuiData> {

public static final MetaTileEntityGuiFactory INSTANCE = new MetaTileEntityGuiFactory();

private MetaTileEntityGuiFactory() {
super("gregtech:mte");
}

public static <T extends MetaTileEntity & IGuiHolder<PosGuiData>> void open(EntityPlayer player, T mte) {
Objects.requireNonNull(player);
Objects.requireNonNull(mte);
if (!mte.isValid()) {
throw new IllegalArgumentException("Can't open invalid MetaTileEntity GUI!");
}
if (player.world != mte.getWorld()) {
throw new IllegalArgumentException("MetaTileEntity must be in same dimension as the player!");
}
BlockPos pos = mte.getPos();
PosGuiData data = new PosGuiData(player, pos.getX(), pos.getY(), pos.getZ());
GuiManager.open(INSTANCE, data, (EntityPlayerMP) player);
}

@Override
public @NotNull IGuiHolder<PosGuiData> getGuiHolder(PosGuiData data) {
TileEntity te = data.getTileEntity();
if (te instanceof IGregTechTileEntity gtte) {
MetaTileEntity mte = gtte.getMetaTileEntity();
return Objects.requireNonNull(castGuiHolder(mte), "Found MetaTileEntity is not a gui holder!");
}
throw new IllegalStateException("Found TileEntity is not a MetaTileEntity!");
}

@Override
public void writeGuiData(PosGuiData guiData, PacketBuffer buffer) {
buffer.writeVarInt(guiData.getX());
buffer.writeVarInt(guiData.getY());
buffer.writeVarInt(guiData.getZ());
}

@Override
public @NotNull PosGuiData readGuiData(EntityPlayer player, PacketBuffer buffer) {
return new PosGuiData(player, buffer.readVarInt(), buffer.readVarInt(), buffer.readVarInt());
}
}
112 changes: 112 additions & 0 deletions src/main/java/supersymmetry/api/metatileentity/Mui2MetaTileEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package supersymmetry.api.metatileentity;

import codechicken.lib.raytracer.CuboidRayTraceResult;
import com.cleanroommc.modularui.api.IGuiHolder;
import com.cleanroommc.modularui.drawable.UITexture;
import com.cleanroommc.modularui.factory.PosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Alignment;
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
import com.cleanroommc.modularui.widgets.ButtonWidget;
import gregtech.api.GTValues;
import gregtech.api.gui.ModularUI;
import gregtech.api.metatileentity.MetaTileEntity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import supersymmetry.api.gui.SusyGuiTextures;

@Deprecated
@ApiStatus.ScheduledForRemoval(inVersion = "Next CEu update")
public abstract class Mui2MetaTileEntity extends MetaTileEntity implements IGuiHolder<PosGuiData> {

public Mui2MetaTileEntity(ResourceLocation metaTileEntityId) {
super(metaTileEntityId);
}

@NotNull
public static UITexture getLogo() {
return GTValues.XMAS.get() ? SusyGuiTextures.GREGTECH_LOGO_XMAS : SusyGuiTextures.GREGTECH_LOGO;
}

public static ModularPanel createPanel(String name, int width, int height) {
return ModularPanel.defaultPanel(name, width, height);
}

public static ModularPanel createPanel(MetaTileEntity mte, int width, int height) {
return createPanel(mte.metaTileEntityId.getPath(), width, height);
}

public static ModularPanel defaultPanel(MetaTileEntity mte) {
return createPanel(mte, 176, 166);
}

public static ModularPanel createPopupPanel(String name, int width, int height) {
return createPopupPanel(name, width, height, false, false);
}

public static ModularPanel createPopupPanel(String name, int width, int height, boolean disableBelow,
boolean closeOnOutsideClick) {
return new PopupPanel(name, width, height, disableBelow, closeOnOutsideClick);
}

protected ModularUI createUI(EntityPlayer player) {
return null;
}

@Override
public abstract ModularPanel buildUI(PosGuiData guiData, PanelSyncManager syncManager);

public boolean useMui() {
return true;
}

@Override
public boolean onRightClick(EntityPlayer playerIn, EnumHand hand, EnumFacing facing,
CuboidRayTraceResult hitResult) {
if (useMui() && !playerIn.isSneaking() && openGUIOnRightClick()) {
if (getWorld() != null && !getWorld().isRemote) {
MetaTileEntityGuiFactory.open(playerIn, this);
}
return true;
} else {
return super.onRightClick(playerIn, hand, facing, hitResult);
}
}

private static class PopupPanel extends ModularPanel {

private final boolean disableBelow;
private final boolean closeOnOutsideClick;

public PopupPanel(@NotNull String name, int width, int height, boolean disableBelow,
boolean closeOnOutsideClick) {
super(name);
size(width, height).align(Alignment.Center);
background(SusyGuiTextures.BACKGROUND_POPUP);
child(ButtonWidget.panelCloseButton().top(5).right(5)
.onMousePressed(mouseButton -> {
if (mouseButton == 0 || mouseButton == 1) {
this.closeIfOpen(true);
return true;
}
return false;
}));
this.disableBelow = disableBelow;
this.closeOnOutsideClick = closeOnOutsideClick;
}

@Override
public boolean disablePanelsBelow() {
return disableBelow;
}

@Override
public boolean closeOnOutOfBoundsClick() {
return closeOnOutsideClick;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package supersymmetry.api.stockinteraction;

import net.minecraft.util.math.AxisAlignedBB;

// Is this really necessary?
public interface IStockInteractor {

// Defines the area in which the machine can find and interact with stocks
AxisAlignedBB getInteractionBoundingBox();
}
Loading

0 comments on commit 86878e5

Please sign in to comment.