Compare commits

...
13 Commits
97 changed files with 397 additions and 226 deletions

No files matched your search

+1
View File
@@ -28,6 +28,7 @@ whitelist.json
*.iws
src/main/resources/mixins.*([!.]).json
*.bat
*.sh
*.DS_Store
!gradlew.bat
.factorypath
+10 -10
View File
@@ -34,21 +34,21 @@
* For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph
*/
dependencies {
api('com.github.GTNewHorizons:NotEnoughItems:2.8.121-GTNH:dev')
api('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-1040-GTNH:dev')
api('com.github.GTNewHorizons:waila:1.19.31:dev')
api("com.github.GTNewHorizons:GTNHLib:0.11.37:dev")
api('com.github.GTNewHorizons:NotEnoughItems:2.8.160-GTNH:dev')
api('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-1078-GTNH:dev')
api('com.github.GTNewHorizons:waila:1.19.34:dev')
api("com.github.GTNewHorizons:GTNHLib:0.11.52:dev")
compileOnly('com.github.GTNewHorizons:Baubles-Expanded:2.2.22-GTNH:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.63:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:Baubles-Expanded:2.2.25-GTNH:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.64:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:ExtraCells2:2.5.35:dev') { transitive = false }
compileOnly('com.github.GTNewHorizons:ForestryMC:4.11.34:dev')
compileOnly('com.github.GTNewHorizons:EnderIO:2.10.37:dev')
compileOnly('com.github.GTNewHorizons:OpenComputers:1.12.55-GTNH:dev') { transitive = false }
compileOnly('com.github.GTNewHorizons:ForestryMC:4.11.39:dev')
compileOnly('com.github.GTNewHorizons:EnderIO:2.10.49:dev')
compileOnly('com.github.GTNewHorizons:OpenComputers:1.12.64-GTNH:dev') { transitive = false }
compileOnly("org.jetbrains:annotations:26.1.0")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:DuraDisplay:1.4.4:dev")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:DuraDisplay:1.4.6:dev")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:WirelessCraftingTerminal:1.12.16:dev") {
exclude group: 'com.github.GTNewHorizons', module: 'Applied-Energistics-2-Unofficial'
}
+5
View File
@@ -186,6 +186,11 @@ modrinthRelations =
# Leave this empty if you don't want to publish on CurseForge.
curseForgeProjectId =
# Comma-separated supported CurseForge environments: client, server (case-insensitive).
# Use client or server for mods that only support one environment. Defaults to client,server.
# These tags describe where the mod can run, not whether installation is required on both sides.
curseForgeEnvironments = client,server
# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge.
# Syntax: type1:name1;type2:name2;...
# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible],
+10 -10
View File
@@ -1,12 +1,12 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/97d46b5ff4df0bf61e95652a190a5567/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/9ef54a08e06b0754cee9fc95ed3a3134/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/97d46b5ff4df0bf61e95652a190a5567/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/9ef54a08e06b0754cee9fc95ed3a3134/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1df82b76031285ef2e6a4f59ffe9299d/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/c7d5be6a02945ac2e045048ee54a7d32/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/97d46b5ff4df0bf61e95652a190a5567/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/9ef54a08e06b0754cee9fc95ed3a3134/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/643f404f769811f5f265fd66f7af5d89/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/38256085a73e137cb4937ea9c4807fec/redirect
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9064f22734b42ac03e85df04b632e167/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/4d0277c49991306ac78048580fe34bcf/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a9fa3b809e484a1e1ac4308a5dda661a/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/aa99913fa6d767d899ffc96082da01ca/redirect
toolchainVersion=25
Binary file not shown.
+3 -1
View File
@@ -1,7 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+3 -3
View File
@@ -20,7 +20,7 @@
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
# gradlew start up script for POSIX generated by Gradle.
#
# Important for running:
#
@@ -29,7 +29,7 @@
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
# ksh gradlew
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
Vendored
+12 -23
View File
@@ -19,12 +19,12 @@
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem gradlew startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Set local scope for the variables, and ensure extensions are enabled
setlocal EnableExtensions
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@@ -51,7 +51,7 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
"%COMSPEC%" /c exit 1
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
@@ -65,29 +65,18 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
"%COMSPEC%" /c exit 1
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
@rem Execute gradlew
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
:exitWithErrorLevel
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
"%COMSPEC%" /c exit %ERRORLEVEL%
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.29'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.34'
}
@@ -8,6 +8,7 @@ import net.minecraft.util.ResourceLocation;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.ContainerFluidAutoFiller;
import com.glodblock.github.common.tile.TileFluidAutoFiller;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import appeng.client.gui.AEBaseGui;
@@ -31,7 +32,12 @@ public class GuiFluidAutoFiller extends AEBaseGui {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_AUTO_FILLER)), 8, 6, 0x404040);
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
fontRendererObj.drawString(
getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_AUTO_FILLER)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
fontRendererObj
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
}
}
@@ -10,14 +10,15 @@ import org.lwjgl.opengl.GL11;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.ContainerFluidInterface;
import com.glodblock.github.common.parts.PartFluidInterface;
import com.glodblock.github.inventory.IAEFluidTank;
import com.glodblock.github.inventory.IDualHost;
import com.glodblock.github.inventory.gui.MouseRegionManager;
import com.glodblock.github.inventory.gui.TankMouseHandler;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import com.glodblock.github.util.RenderUtil;
import appeng.api.parts.IPart;
import appeng.api.storage.data.IAEFluidStack;
import appeng.client.gui.GuiSub;
import appeng.core.localization.GuiText;
@@ -51,15 +52,24 @@ public class GuiFluidInterface extends GuiSub {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_INTERFACE)), 8, 6, 0x404040);
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
fontRendererObj.drawString(
getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_INTERFACE)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
fontRendererObj
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
GL11.glColor4f(1F, 1F, 1F, 1F);
IAEFluidTank fluidInv = cont.getTile().getInternalFluid();
mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
for (int i = 0; i < 6; i++) {
if (!isPart()) {
fontRendererObj.drawString(dirName(i), TANK_X + i * TANK_X_OFF + 5, 22, 0x404040);
fontRendererObj.drawString(
dirName(i),
TANK_X + i * TANK_X_OFF + 5,
22,
FCGuiColors.guiTextColorGray.getColor());
}
RenderUtil.renderFluidIntoGui(
this,
@@ -93,6 +103,6 @@ public class GuiFluidInterface extends GuiSub {
}
private boolean isPart() {
return this.cont.getTile() instanceof PartFluidInterface;
return this.cont.getTile() instanceof IPart;
}
}
@@ -7,6 +7,7 @@ import net.minecraft.util.ResourceLocation;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.ContainerFluidPacketDecoder;
import com.glodblock.github.common.tile.TileFluidPacketDecoder;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import appeng.client.gui.AEBaseGui;
@@ -28,7 +29,12 @@ public class GuiFluidPacketDecoder extends AEBaseGui {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_PACKET_DECODER)), 8, 6, 0x404040);
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
fontRendererObj.drawString(
getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_PACKET_DECODER)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
fontRendererObj
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
}
}
@@ -22,6 +22,7 @@ import com.glodblock.github.common.tile.TileFluidPatternEncoder;
import com.glodblock.github.inventory.gui.MouseRegionManager;
import com.glodblock.github.inventory.slot.ISlotFluid;
import com.glodblock.github.inventory.slot.SlotSingleItem;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import appeng.api.storage.data.IAEItemStack;
@@ -73,8 +74,13 @@ public class GuiFluidPatternEncoder extends AEBaseGui {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_PATTERN_ENCODER)), 8, 6, 0x404040);
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
fontRendererObj.drawString(
getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_PATTERN_ENCODER)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
fontRendererObj
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
mouseRegions.render(mouseX, mouseY);
}
@@ -15,6 +15,7 @@ import com.glodblock.github.inventory.IAEFluidTank;
import com.glodblock.github.inventory.gui.ButtonMouseHandler;
import com.glodblock.github.inventory.gui.MouseRegionManager;
import com.glodblock.github.inventory.gui.TankMouseHandler;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import com.glodblock.github.util.RenderUtil;
@@ -66,8 +67,13 @@ public class GuiIngredientBuffer extends AEBaseGui {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_INGREDIENT_BUFFER)), 8, 6, 0x404040);
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
fontRendererObj.drawString(
getGuiDisplayName(I18n.format(NameConst.GUI_INGREDIENT_BUFFER)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
fontRendererObj
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
GL11.glColor4f(1F, 1F, 1F, 1F);
IAEFluidTank fluidInv = cont.getTile().getInternalFluid();
@@ -15,6 +15,7 @@ import com.glodblock.github.inventory.IAEFluidTank;
import com.glodblock.github.inventory.gui.ButtonMouseHandler;
import com.glodblock.github.inventory.gui.MouseRegionManager;
import com.glodblock.github.inventory.gui.TankMouseHandler;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import com.glodblock.github.util.RenderUtil;
@@ -66,9 +67,13 @@ public class GuiLargeIngredientBuffer extends AEBaseGui {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(
getGuiDisplayName(I18n.format(NameConst.GUI_LARGE_INGREDIENT_BUFFER)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
fontRendererObj
.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_LARGE_INGREDIENT_BUFFER)), 8, 6, 0x404040);
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
GL11.glColor4f(1F, 1F, 1F, 1F);
IAEFluidTank fluidInv = cont.getTile().getInternalFluid();
@@ -136,7 +136,11 @@ public class GuiLevelMaintainer extends GuiSub {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(getGuiDisplayName(NameConst.i18n(NameConst.GUI_LEVEL_MAINTAINER)), 8, 6, 0x404040);
fontRendererObj.drawString(
getGuiDisplayName(NameConst.i18n(NameConst.GUI_LEVEL_MAINTAINER)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
mouseRegions.render(mouseX, mouseY);
}
@@ -490,10 +494,10 @@ public class GuiLevelMaintainer extends GuiSub {
final double result = Calculator.conversion(this.textField.getText());
if (Double.isNaN(result) || result < 0) {
this.amount = null;
this.textField.setTextColor(0xFF0000);
this.textField.setTextColor(FCGuiColors.guiLevelMaintainerError.getColor());
} else {
this.amount = (long) ArithHelper.round(result, 0);
this.textField.setTextColor(0xFFFFFF);
this.textField.setTextColor(FCGuiColors.guiTextColorGray.getColor());
}
IAEStack<?> stack = component[this.componentIndex].getStack();
@@ -91,6 +91,7 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
private GuiImgButton terminalStyleBox;
private ItemStack tooltipStack;
private List<String> buttonTooltip;
private boolean online;
private int viewHeight;
@@ -105,7 +106,6 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
private static final float ITEM_STACK_Z = 100.0f;
private static final float ITEM_STACK_OVERLAY_Z = 200.0f;
private static final float SLOT_HOVER_Z = 310.0f;
private static final float TOOLTIP_Z = 410.0f;
private static final float STEP_Z = 10.0f;
private static final float MAGIC_RENDER_ITEM_Z = 50.0f;
@@ -260,6 +260,11 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
handleTooltip(mouseX, mouseY, searchFieldOutputs);
handleTooltip(mouseX, mouseY, searchFieldNames);
// Drawn after the viewport so the items do not cover it
if (buttonTooltip != null) {
drawHoveringText(buttonTooltip, mouseX, mouseY, fontRendererObj);
}
}
@Override
@@ -344,6 +349,7 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
GL11.glPushMatrix();
GL11.glTranslatef(offsetX + VIEW_LEFT, offsetY + HEADER_HEIGHT, 0);
tooltipStack = null;
buttonTooltip = null;
drawViewport(mouseX - offsetX - VIEW_LEFT, mouseY - offsetY - HEADER_HEIGHT - 1);
GL11.glPopMatrix();
GL11.glPopAttrib();
@@ -508,9 +514,6 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
toRender.drawButton(mc, relMouseX, relMouseY);
if (toRender.getMouseIn()
&& relMouseY >= Math.max(LevelTerminalSection.TITLE_HEIGHT, entry.highlightButton.yPosition)) {
// draw a tooltip
GL11.glTranslatef(0f, 0f, TOOLTIP_Z);
GL11.glDisable(GL11.GL_SCISSOR_TEST);
List<String> tooltip = new ArrayList<>();
tooltip.add(toRender.getMessage());
if (entry.isInPlayerDimension()) {
@@ -520,9 +523,7 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
tooltip.add(
StatCollector.translateToLocal(NameConst.TT_KEY + "level_terminal.hint_other_dimension"));
}
drawHoveringText(tooltip, relMouseX, relMouseY);
GL11.glTranslatef(0f, 0f, -TOOLTIP_Z);
GL11.glEnable(GL11.GL_SCISSOR_TEST);
buttonTooltip = tooltip;
}
} else {
entry.highlightButton.yPosition = -1;
@@ -600,7 +601,12 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
// overlay highlight
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glTranslatef(0.0f, 0.0f, SLOT_HOVER_Z);
drawRect(colLeft, viewY + 1 + rowYTop, -2 + colRight, viewY - 1 + rowYBot, 0x77FFFFFF);
drawRect(
colLeft,
viewY + 1 + rowYTop,
-2 + colRight,
viewY - 1 + rowYBot,
FCGuiColors.guiLevelTerminalOverlayHighlight.getColor());
GL11.glTranslatef(0.0f, 0.0f, -SLOT_HOVER_Z);
}
GL11.glDisable(GL11.GL_LIGHTING);
@@ -658,102 +664,6 @@ public class GuiLevelTerminal extends FCBaseMEGui implements IDropToFillTextFiel
}
}
@Override
public void drawHoveringText(List<String> textLines, int x, int y, FontRenderer font) {
if (!textLines.isEmpty()) {
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
RenderHelper.disableStandardItemLighting();
int maxStrWidth = 0;
// is this more efficient than doing 1 pass, then doing a translate before drawing the text?
for (String s : (List<String>) textLines) {
int width = font.getStringWidth(s);
if (width > maxStrWidth) {
maxStrWidth = width;
}
}
// top left corner
int curX = x + 12;
int curY = y - 12;
int totalHeight = 8;
if (textLines.size() > 1) {
totalHeight += 2 + (textLines.size() - 1) * 10;
}
/* String is too long? Display on the left side */
if (curX + maxStrWidth > width) {
curX -= 28 + maxStrWidth;
}
/* String is too tall? move it up */
if (curY + totalHeight + 6 > height) {
curY = height - totalHeight - 6;
}
int borderColor = -267386864;
// drawing the border...
drawGradientRect(curX - 3, curY - 4, curX + maxStrWidth + 3, curY - 3, borderColor, borderColor);
drawGradientRect(
curX - 3,
curY + totalHeight + 3,
curX + maxStrWidth + 3,
curY + totalHeight + 4,
borderColor,
borderColor);
drawGradientRect(
curX - 3,
curY - 3,
curX + maxStrWidth + 3,
curY + totalHeight + 3,
borderColor,
borderColor);
drawGradientRect(curX - 4, curY - 3, curX - 3, curY + totalHeight + 3, borderColor, borderColor);
drawGradientRect(
curX + maxStrWidth + 3,
curY - 3,
curX + maxStrWidth + 4,
curY + totalHeight + 3,
borderColor,
borderColor);
int color1 = 1347420415;
int color2 = (color1 & 16711422) >> 1 | color1 & -16777216;
drawGradientRect(curX - 3, curY - 3 + 1, curX - 3 + 1, curY + totalHeight + 3 - 1, color1, color2);
drawGradientRect(
curX + maxStrWidth + 2,
curY - 3 + 1,
curX + maxStrWidth + 3,
curY + totalHeight + 3 - 1,
color1,
color2);
drawGradientRect(curX - 3, curY - 3, curX + maxStrWidth + 3, curY - 3 + 1, color1, color1);
drawGradientRect(
curX - 3,
curY + totalHeight + 2,
curX + maxStrWidth + 3,
curY + totalHeight + 3,
color2,
color2);
for (int i = 0; i < textLines.size(); ++i) {
String line = (String) textLines.get(i);
font.drawStringWithShadow(line, curX, curY, -1);
if (i == 0) {
// gap between name and lore text
curY += 2;
}
curY += 10;
}
RenderHelper.enableGUIStandardItemLighting();
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
}
}
@Override
protected void keyTyped(final char character, final int key) {
if (!checkHotbarKeys(key)) {
@@ -10,6 +10,7 @@ import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.ContainerMagnetFilter;
import com.glodblock.github.inventory.item.WirelessMagnet;
import com.glodblock.github.network.CPacketFluidPatternTermBtns;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import appeng.api.config.ActionItems;
@@ -136,10 +137,23 @@ public class GuiMagnetFilter extends GuiSub {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
this.fontRendererObj.drawString(NameConst.i18n(NameConst.GUI_MAGNET_CARD), 8, 6, 0x404040);
this.fontRendererObj.drawString(NameConst.i18n(NameConst.GUI_MAGNET_CARD_NBT), 61, 22, 0x404040);
this.fontRendererObj.drawString(NameConst.i18n(NameConst.GUI_MAGNET_CARD_META), 61, 34, 0x404040);
this.fontRendererObj.drawString(NameConst.i18n(NameConst.GUI_MAGNET_CARD_ORE), 61, 46, 0x404040);
this.fontRendererObj
.drawString(NameConst.i18n(NameConst.GUI_MAGNET_CARD), 8, 6, FCGuiColors.guiTextColorGray.getColor());
this.fontRendererObj.drawString(
NameConst.i18n(NameConst.GUI_MAGNET_CARD_NBT),
61,
22,
FCGuiColors.guiTextColorGray.getColor());
this.fontRendererObj.drawString(
NameConst.i18n(NameConst.GUI_MAGNET_CARD_META),
61,
34,
FCGuiColors.guiTextColorGray.getColor());
this.fontRendererObj.drawString(
NameConst.i18n(NameConst.GUI_MAGNET_CARD_ORE),
61,
46,
FCGuiColors.guiTextColorGray.getColor());
this.components[0].setVar(this.cont.nbt);
this.components[1].setVar(this.cont.meta);
this.components[2].setVar(this.cont.ore);
@@ -7,6 +7,7 @@ import net.minecraft.util.ResourceLocation;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.ContainerOCPatternEditor;
import com.glodblock.github.common.tile.TileOCPatternEditor;
import com.glodblock.github.util.FCGuiColors;
import com.glodblock.github.util.NameConst;
import appeng.client.gui.AEBaseGui;
@@ -29,7 +30,12 @@ public class GuiOCPatternEditor extends AEBaseGui {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_OC_PATTERN_EDITOR)), 8, 6, 0x404040);
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
fontRendererObj.drawString(
getGuiDisplayName(I18n.format(NameConst.GUI_OC_PATTERN_EDITOR)),
8,
6,
FCGuiColors.guiTextColorGray.getColor());
fontRendererObj
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
}
}
@@ -13,6 +13,7 @@ import org.lwjgl.opengl.GL11;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.ContainerSuperStockReplenisher;
import com.glodblock.github.common.tile.TileSuperStockReplenisher;
import com.glodblock.github.util.FCGuiColors;
import appeng.api.storage.StorageName;
import appeng.api.storage.data.IAEStack;
@@ -129,7 +130,8 @@ public class GuiSuperStockReplenisher extends AEBaseGui {
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
fontRendererObj.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, 0x404040);
fontRendererObj
.drawString(GuiText.inventory.getLocal(), 8, ySize - 94, FCGuiColors.guiTextColorGray.getColor());
this.drawVirtualSlots();
}
@@ -24,10 +24,12 @@ public class ContainerLevelWireless extends ContainerLevelTerminal {
@Override
public PrimaryGui createPrimaryGui() {
ContainerOpenContext context = getOpenContext();
return new FluidPrimaryGui(
PrimaryGui primaryGui = new FluidPrimaryGui(
GuiType.WIRELESS_LEVEL_TERMINAL,
ItemAndBlockHolder.WIRELESS_LEVEL_TERM.stack(),
context.getTile(),
context.getSide());
primaryGui.setSlotIndex(getTargetSlotIndex());
return primaryGui;
}
}
@@ -9,6 +9,7 @@ import com.glodblock.github.client.textures.FCPartsTexture;
import com.glodblock.github.common.block.BlockFluidInterface;
import com.glodblock.github.common.tile.TileFluidInterface;
import appeng.api.util.AEColor;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.BlockRenderInfo;
import appeng.tile.misc.TileInterface;
@@ -25,15 +26,18 @@ public class RenderBlockFluidInterface extends BaseBlockRender<BlockFluidInterfa
final TileInterface ti = block.getTileEntity(world, x, y, z);
final BlockRenderInfo info = block.getRendererInstance();
if (ti != null && ti.getForward() != ForgeDirection.UNKNOWN) {
final IIcon side = FCPartsTexture.BlockFluidInterfaceAlternate_Arrow.getIcon();
info.setTemporaryRenderIcons(
FCPartsTexture.BlockInterfaceAlternate.getIcon(),
block.getIcon(0, 0),
side,
side,
side,
side);
if (ti != null) {
final AEColor color = ti.getProxy().getColor();
if (ti.getForward() != ForgeDirection.UNKNOWN) {
final IIcon face = color == AEColor.Transparent ? block.getIcon(0, 0)
: block.getColoredTexture(0, color);
final IIcon alternate = color == AEColor.Transparent ? FCPartsTexture.BlockInterfaceAlternate.getIcon()
: block.getColoredTexture(1, color);
final IIcon side = color == AEColor.Transparent
? FCPartsTexture.BlockFluidInterfaceAlternate_Arrow.getIcon()
: block.getColoredTexture(2, color);
info.setTemporaryRenderIcons(alternate, face, side, side, side, side);
}
}
final boolean fz = super.renderInWorld(block, world, x, y, z, renderer);
@@ -4,7 +4,10 @@ import java.util.EnumSet;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@@ -13,6 +16,7 @@ import com.glodblock.github.common.tabs.FluidCraftingTabs;
import com.glodblock.github.common.tile.TileFluidInterface;
import com.glodblock.github.util.NameConst;
import appeng.api.util.AEColor;
import appeng.api.util.IOrientable;
import appeng.block.AEBaseItemBlock;
import appeng.core.features.AEFeature;
@@ -25,6 +29,12 @@ import cpw.mods.fml.relauncher.SideOnly;
public class BlockFluidInterface extends FCBaseBlock {
private static final String[] COLORED_TEXTURES = { "fluid_interface", "fluid_interface_a",
"fluid_interface_arrow" };
@SideOnly(Side.CLIENT)
private IIcon[][] coloredTextures;
public BlockFluidInterface() {
super(Material.iron, NameConst.BLOCK_FLUID_INTERFACE);
setFullBlock(true);
@@ -39,6 +49,38 @@ public class BlockFluidInterface extends FCBaseBlock {
return new RenderBlockFluidInterface();
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(final IIconRegister iconRegistry) {
super.registerBlockIcons(iconRegistry);
this.coloredTextures = new IIcon[COLORED_TEXTURES.length][AEColor.VALUES.length];
for (final AEColor color : AEColor.VALID_COLORS) {
for (int id = 0; id < COLORED_TEXTURES.length; id++) {
this.coloredTextures[id][color.ordinal()] = iconRegistry
.registerIcon("ae2fc:interface/" + COLORED_TEXTURES[id] + "_" + color.name());
}
}
}
@SideOnly(Side.CLIENT)
public IIcon getColoredTexture(final int id, final AEColor color) {
return this.coloredTextures[id][color.ordinal()];
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(final IBlockAccess world, final int x, final int y, final int z, final int side) {
final TileInterface tile = this.getTileEntity(world, x, y, z);
if (tile != null && tile.getForward() == ForgeDirection.UNKNOWN) {
final AEColor color = tile.getProxy().getColor();
if (color != AEColor.Transparent) {
return this.getColoredTexture(0, color);
}
}
return super.getIcon(world, x, y, z, side);
}
@Override
public boolean onActivated(final World world, final int x, final int y, final int z, final EntityPlayer player,
final int facing, final float hitX, final float hitY, final float hitZ) {
@@ -1,7 +1,10 @@
package com.glodblock.github.common.block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@@ -12,11 +15,17 @@ import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.util.BlockPos;
import com.glodblock.github.util.NameConst;
import appeng.api.util.AEColor;
import appeng.block.AEBaseItemBlock;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockSuperStockReplenisher extends FCBaseBlock {
@SideOnly(Side.CLIENT)
private IIcon[] coloredTextures;
public BlockSuperStockReplenisher() {
super(Material.web, NameConst.BLOCK_SUPER_STOCK_REPLENISHER);
setTileEntity(TileSuperStockReplenisher.class);
@@ -25,6 +34,28 @@ public class BlockSuperStockReplenisher extends FCBaseBlock {
this.lightOpacity = 4;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(final IIconRegister iconRegistry) {
super.registerBlockIcons(iconRegistry);
this.coloredTextures = new IIcon[AEColor.VALUES.length];
for (final AEColor color : AEColor.VALID_COLORS) {
this.coloredTextures[color.ordinal()] = iconRegistry
.registerIcon(this.getTextureName().replace(":", ":replenisher/") + "_" + color.name());
}
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(final IBlockAccess world, final int x, final int y, final int z, final int side) {
final TileSuperStockReplenisher tile = this.getTileEntity(world, x, y, z);
if (tile != null && tile.getColor() != AEColor.Transparent) {
return this.coloredTextures[tile.getColor().ordinal()];
}
return super.getIcon(world, x, y, z, side);
}
@Override
public boolean onActivated(World world, int x, int y, int z, EntityPlayer player, int facing, float hitX,
float hitY, float hitZ) {
@@ -14,6 +14,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.common.item.BaseItemBlockContainer;
import com.glodblock.github.common.tabs.FluidCraftingTabs;
import com.glodblock.github.common.tile.TileWalrus;
@@ -30,6 +31,8 @@ public class BlockWalrus extends BaseBlockContainer {
setHardness(2.0F);
setResistance(10.0F);
setBlockName(NameConst.BLOCK_WALRUS);
// only used for hit/break particles, the block itself is rendered by RenderBlockWalrus
setBlockTextureName(FluidCraft.MODID + ":" + NameConst.BLOCK_WALRUS + "_particle");
}
@Override
@@ -2,7 +2,12 @@ package com.glodblock.github.common.item;
import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE;
import java.util.List;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import org.jetbrains.annotations.NotNull;
@@ -10,8 +15,17 @@ import com.glodblock.github.common.storage.CellType;
import com.glodblock.github.loader.ItemAndBlockHolder;
import com.google.common.base.Optional;
import appeng.api.AEApi;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEStackType;
import appeng.core.localization.GuiText;
import appeng.items.AEBaseCell;
import appeng.me.storage.FluidCellInventoryHandler;
import appeng.util.IterationCounter;
import appeng.util.ReadableNumberConverter;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public abstract class FCBaseItemCell extends AEBaseCell {
@@ -31,6 +45,38 @@ public abstract class FCBaseItemCell extends AEBaseCell {
return FLUID_STACK_TYPE;
}
@Override
@SideOnly(Side.CLIENT)
public void addCheckedInformation(final ItemStack stack, final EntityPlayer player, final List<String> lines,
final boolean displayMoreInfo) {
super.addCheckedInformation(stack, player, lines, displayMoreInfo);
final IMEInventoryHandler<?> inventory = AEApi.instance().registries().cell()
.getCellInventory(stack, null, getStackType());
if (!(inventory instanceof FluidCellInventoryHandler handler) || handler.getCellInv().getTotalItemTypes() != 1
|| handler.getCellInv().getStoredItemTypes() == 0)
return;
final IAEFluidStack content = handler
.getAvailableItems(FLUID_STACK_TYPE.createPrimitiveList(), IterationCounter.fetchNewId())
.getFirstItem();
final String oldLine = GuiText.Contains.getLocal() + ": " + content.getDisplayName();
final int oldLineIndex = lines.lastIndexOf(oldLine);
if (oldLineIndex >= 0) {
if (!GuiScreen.isCtrlKeyDown()) {
lines.set(oldLineIndex, EnumChatFormatting.GRAY + GuiText.HoldCtrlForContents.getLocal());
return;
}
final String unit = FLUID_STACK_TYPE.getDisplayUnit();
lines.set(
oldLineIndex,
" " + content.getDisplayName()
+ " x"
+ ReadableNumberConverter.INSTANCE.toWideReadableForm(content.getStackSize())
+ (unit.isEmpty() ? "" : " " + unit));
}
}
public FCBaseItemCell(Optional subName) {
super(subName);
}
@@ -69,7 +69,9 @@ public class PartFluidFormationPlane extends PartBaseFormationPlane implements I
@Override
protected void updateHandler() {
this.onNeighborChanged();
if (this.getProxy().isReady()) {
this.onNeighborChanged();
}
}
public boolean doWork() {
@@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableSet;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.CraftingAllow;
import appeng.api.config.CraftingMode;
import appeng.api.config.PowerMultiplier;
import appeng.api.features.ILevelViewable;
@@ -52,13 +53,13 @@ import appeng.api.storage.data.IAEStack;
import appeng.core.AELog;
import appeng.me.GridAccessException;
import appeng.me.cache.CraftingGridCache;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.tile.TileEvent;
import appeng.tile.events.TileEventType;
import appeng.tile.grid.AENetworkTile;
import appeng.tile.inventory.IAEAppEngInventory;
import appeng.tile.inventory.IAEStackInventory;
import appeng.tile.inventory.InvOperation;
import appeng.util.IterationCounter;
import appeng.util.Platform;
import appeng.util.SettingsFrom;
import appeng.util.item.AEItemStack;
@@ -178,7 +179,7 @@ public class TileLevelMaintainer extends AENetworkTile
// crafting tasks that cannot be successfully submitted.
boolean allBusy = true;
for (final ICraftingCPU cpu : craftingGrid.getCpus()) {
if (!cpu.isBusy()) {
if (canAcceptMachineJob(cpu)) {
allBusy = false;
break;
}
@@ -191,7 +192,7 @@ public class TileLevelMaintainer extends AENetworkTile
IAEStack<?> itemToBegin = null;
int itemToBeginIdx = -1;
for (int j = 0; j < REQ_COUNT; ++j) {
req: for (int j = 0; j < REQ_COUNT; ++j) {
int i = (firstRequest + j) % REQ_COUNT;
if (requests[i] == null) continue;
@@ -204,41 +205,54 @@ public class TileLevelMaintainer extends AENetworkTile
continue;
}
if (!this.isDone(i)) {
continue;
}
IAEStack<?> craftItem = requests[i].stack.copy();
craftItem.setStackSize(batchSize);
final boolean isCraftable = isCraftable(craftingGrid, craftItem);
if (this.requests[i].state != LevelState.Idle) {
this.updateState(i, LevelState.Idle);
}
if (this.requests[i].link != null) {
this.updateLink(i, null);
}
if (!isCraftable) {
updateState(i, LevelState.NotFound);
}
// A free CPU is required before it is worth looking at the stock:
if (allBusy || !isCraftable) {
continue;
}
// Single hash lookup on the emitable mediums, so it is cheaper
// than reading the stock and can run first.
if (craftingGrid.canEmitFor(craftItem)) {
continue;
}
IMEMonitor monitor = getProxy().getStorage().getMEMonitor(craftItem.getStackType());
if (monitor == null) continue;
IAEStack<?> stackInStorage = monitor.getAvailableItem(craftItem, IterationCounter.fetchNewId());
@SuppressWarnings({ "rawtypes", "unchecked" })
IAEStack<?> stackInStorage = monitor.getStorageList().findPrecise(craftItem);
long stackSize = stackInStorage == null ? 0 : stackInStorage.getStackSize();
boolean isDone = this.isDone(i);
boolean isCraftable = stackInStorage != null && stackInStorage.isCraftable();
boolean shouldCraft = isCraftable && stackSize < quantity;
if (isDone) {
if (this.requests[i].state != LevelState.Idle) {
this.updateState(i, LevelState.Idle);
}
if (this.requests[i].link != null) {
this.updateLink(i, null);
}
if (!isCraftable) {
updateState(i, LevelState.NotFound);
}
}
if (allBusy || !isDone || !shouldCraft) {
if (stackSize >= quantity) {
continue;
}
if (craftingGrid.canEmitFor(stackInStorage)) {
continue;
}
if (craftingGrid.isRequesting(stackInStorage)) {
continue;
// Walking every CPU to see whether the item is already being
// made is comparatively expensive
for (ICraftingCPU cpu : craftingGrid.getCpus()) {
IAEStack<?> output = cpu.getFinalMultiOutput();
if (output != null && output.isSameType(craftItem)) {
continue req;
}
}
// do crafting
@@ -304,6 +318,21 @@ public class TileLevelMaintainer extends AENetworkTile
return TickRateModulation.SAME;
}
private static boolean isCraftable(final ICraftingGrid craftingGrid, final IAEStack<?> stack) {
if (stack == null) return false;
return craftingGrid.canEmitFor(stack) || craftingGrid.getCraftingMultiPatterns().containsKey(stack);
}
private static boolean canAcceptMachineJob(final ICraftingCPU cpu) {
if (cpu.isBusy()) {
return false;
}
if (!(cpu instanceof CraftingCPUCluster cluster)) {
return true;
}
return cluster.isActive() && cluster.getCraftingAllowMode() != CraftingAllow.ONLY_PLAYER;
}
@Override
public void saveChanges() {
super.saveChanges();
@@ -5,10 +5,12 @@ import java.util.stream.IntStream;
import javax.annotation.Nonnull;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
@@ -28,6 +30,7 @@ import appeng.api.config.Actionable;
import appeng.api.config.PowerMultiplier;
import appeng.api.implementations.IPowerChannelState;
import appeng.api.implementations.items.IStorageCell;
import appeng.api.implementations.tiles.IColorableTile;
import appeng.api.networking.GridFlags;
import appeng.api.networking.IGridNode;
import appeng.api.networking.events.MENetworkBootingStatusChange;
@@ -45,6 +48,7 @@ import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IAEStack;
import appeng.api.util.AECableType;
import appeng.api.util.AEColor;
import appeng.api.util.DimensionalCoord;
import appeng.api.util.IConfigManager;
import appeng.core.AELog;
@@ -63,7 +67,7 @@ import appeng.util.item.AEItemStack;
import io.netty.buffer.ByteBuf;
public class TileSuperStockReplenisher extends AENetworkInvTile implements IAEFluidInventory, IFluidHandler,
IPowerChannelState, IGridTickable, ITerminalHost, IIAEStackInventory {
IPowerChannelState, IGridTickable, ITerminalHost, IIAEStackInventory, IColorableTile {
private final AppEngInternalInventory cell = new AppEngInternalInventory(this, 1);
private final BiggerAppEngInventory invItems = new BiggerAppEngInventory(this, 63);
@@ -87,6 +91,7 @@ public class TileSuperStockReplenisher extends AENetworkInvTile implements IAEFl
};
private final BaseActionSource source;
private boolean isPowered;
private AEColor paintedColor = AEColor.Transparent;
private long totalBytes;
private long storedFluidCount;
private long storedItemCount;
@@ -601,17 +606,26 @@ public class TileSuperStockReplenisher extends AENetworkInvTile implements IAEFl
@TileEvent(TileEventType.NETWORK_READ)
public boolean readFromStream_TileSuperStockReplenisher(final ByteBuf data) {
final boolean oldPower = isPowered;
final AEColor oldPaintedColor = this.paintedColor;
isPowered = data.readBoolean();
return isPowered != oldPower;
this.paintedColor = AEColor.fromOrdinal(data.readByte());
this.getProxy().setColor(this.paintedColor);
return isPowered != oldPower || this.paintedColor != oldPaintedColor;
}
@TileEvent(TileEventType.NETWORK_WRITE)
public void writeToStream_TileSuperStockReplenisher(final ByteBuf data) {
data.writeBoolean(isActive());
data.writeByte(this.paintedColor.ordinal());
}
@TileEvent(TileEventType.WORLD_NBT_READ)
public void readFromNBTEvent(NBTTagCompound data) {
final int color = data.hasKey("paintedColor", Constants.NBT.TAG_BYTE) ? data.getByte("paintedColor")
: AEColor.Transparent.ordinal();
this.paintedColor = color >= 0 && color < AEColor.VALUES.length ? AEColor.fromOrdinal(color)
: AEColor.Transparent;
this.getProxy().setColor(this.paintedColor);
invItems.readFromNBT(data, "ItemInv");
invFluids.readFromNBT(data, "FluidInv");
configItems.readFromNBT(data, "configItems");
@@ -626,6 +640,7 @@ public class TileSuperStockReplenisher extends AENetworkInvTile implements IAEFl
@TileEvent(TileEventType.WORLD_NBT_WRITE)
public NBTTagCompound writeToNBTEvent(NBTTagCompound data) {
data.setByte("paintedColor", (byte) this.paintedColor.ordinal());
invItems.writeToNBT(data, "ItemInv");
invFluids.writeToNBT(data, "FluidInv");
configItems.writeToNBT(data, "configItems");
@@ -638,6 +653,27 @@ public class TileSuperStockReplenisher extends AENetworkInvTile implements IAEFl
return data;
}
@Override
public AEColor getColor() {
return this.paintedColor;
}
@Override
public boolean recolourBlock(final ForgeDirection side, final AEColor newPaintedColor, final EntityPlayer who) {
if (this.paintedColor == newPaintedColor) {
return false;
}
this.paintedColor = newPaintedColor;
this.getProxy().setColor(this.paintedColor);
final IGridNode node = this.getGridNode(side);
if (node != null) {
node.updateState();
}
this.markDirty();
this.markForUpdate();
return true;
}
@MENetworkEventSubscribe
public void stateChange(final MENetworkPowerStatusChange p) {
this.updatePowerState();
@@ -8,13 +8,17 @@ public class FCGuiColors {
public static final ColorResource
// spotless:off
guiTextColorGray = color.rgb("guiTextColorGray", "0x404040"),
guiTextColorGray = color.rgb("guiTextColorGray", "0x404040"),
guiTextColorWhite = color.rgb("guiTextColorWhite", "0xFFFFFF"),
guiLevelMaintainerError = color.rgb("guiLevelMaintainerError", "0xFF0000"),
stateNone = color.argb("stateNone", "0x00000000"),
stateIdle = color.argb("stateIdle", "0xFF55FF55"),
stateCraft = color.argb("stateCraft", "0xFFFFFF55"),
stateExport = color.argb("stateExport", "0xFFAA00AA"),
stateError = color.argb("stateError", "0xFFFF5555"),
itemSlotOverlayUnpowered = color.argb("itemSlotOverlayUnpowered", "0x66111111");
stateNone = color.argb("stateNone", "0x00000000"),
stateIdle = color.argb("stateIdle", "0xFF55FF55"),
stateCraft = color.argb("stateCraft", "0xFFFFFF55"),
stateExport = color.argb("stateExport", "0xFFAA00AA"),
stateError = color.argb("stateError", "0xFFFF5555"),
itemSlotOverlayUnpowered = color.argb("itemSlotOverlayUnpowered", "0x66111111"),
guiLevelTerminalOverlayHighlight = color.argb("guiLevelTerminalOverlayHighlight", "0x77FFFFFF");
// spotless:on
}
@@ -1,5 +1,5 @@
item.fluid_drop.name=drop of %s
item.fluid_encoded_pattern.name=Encoded Pattern
item.fluid_encoded_pattern.name=Fluid Processing Pattern
item.part_fluid_interface.name=ME Dual Interface
item.part_fluid_p2p_interface.name=P2P Tunnel - ME Dual Interface
item.part_fluid_import.name=ME Fluid Import Bus
Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB