Compare commits

..
6 Commits
Author SHA1 Message Date
Arcadia_Blues 6582ea3e56 Fix unintentional item combining for blocks missing setHasSubtypes(true) (#98) 2026-06-25 04:31:30 +00:00
Martin Robertz bb96e7deae update+gradle+bs+deps 2026-06-23 16:32:55 +02:00
Pxx500andgithub-actions[bot] 7643d11e14 Fix fluids racing to registration (#99)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-23 13:18:28 +00:00
Matej Dipčár 4eb26e9d77 Fix ComponentTankContainer draining wrong fluid when specific fluid requested (#97) 2026-05-25 19:06:36 +02:00
Eldrinn-ElanteyandAlexdoru 2b1843b74d fix CraftGUI.render going null on GUI open/reopen (#96)
Co-authored-by: Alexdoru <[email protected]>
2026-05-22 14:30:15 +02:00
Alexdoru 0b312261db fix world client leak caused by static CraftGUI (#95) 2026-05-18 19:05:50 +02:00
10 changed files with 80 additions and 30 deletions

No files matched your search

+4 -4
View File
@@ -1,12 +1,12 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:ForestryMC:4.11.12:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.9.48:dev')
api('com.github.GTNewHorizons:ForestryMC:4.11.28:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.11.19:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.97-GTNH:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.105-GTNH:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.57:api')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.61:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly("curse.maven:extrabiomesxl-60041:2273301")
}
+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/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d4fd992c9557644e637ebe98263e0ae7/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/faa12903720d410b387cc69ccafb1a74/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a4c09dd2e2d7079373d30e524bbc2829/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/8e1d9ee5d0f13e442218f6884a306da1/redirect
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c2dd35c9d0aaf0ba6ad0791320f99dfc/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/e5810bd7fd1f8a586644409d395a7e55/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7b3c4877c0749019e6805bb61e421497/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/d76df094a9cbbabd3b08251f9e61444a/redirect
toolchainVersion=25
+1 -1
View File
@@ -17,5 +17,5 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.24'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.26'
}
@@ -17,6 +17,8 @@ public class ItemMetadata extends ItemBlock {
public ItemMetadata(Block block) {
super(block);
setMaxDamage(0);
setHasSubtypes(true);
}
@Override
@@ -188,7 +188,9 @@ public class WindowFieldKit extends Window {
glassOffsetX *= 1.0f - analyseProgress;
glassOffsetY += glassVY;
glassOffsetY *= 1.0f - analyseProgress;
GlassControl.setOffset(new IPoint(glassOffsetX, glassOffsetY));
if (GlassControl != null) {
GlassControl.setOffset(new IPoint(glassOffsetX, glassOffsetY));
}
}
private void refreshSpecies() {
@@ -53,6 +53,7 @@ public abstract class Window extends TopLevelWidget implements INetwork.ReceiveG
protected float titleButtonLeft;
protected float titleButtonRight;
private GuiCraftGUI gui;
private Renderer renderer;
private final ContainerCraftGUI container;
private final WindowInventory windowInventory;
private ControlText title;
@@ -83,8 +84,8 @@ public abstract class Window extends TopLevelWidget implements INetwork.ReceiveG
ControlSlot.highlighting.put(h, new ArrayList<>());
}
CraftGUI.render = new Renderer(gui);
CraftGUI.render.stylesheet(StyleSheetManager.getDefault());
renderer = new Renderer(gui);
renderer.stylesheet(StyleSheetManager.getDefault());
titleButtonLeft = -14.0f;
if (showHelpButton()) {
@@ -195,6 +196,9 @@ public abstract class Window extends TopLevelWidget implements INetwork.ReceiveG
}
public void initGui() {
CraftGUI.render = renderer;
if (hasBeenInitialised) {
return;
}
@@ -267,7 +271,9 @@ public abstract class Window extends TopLevelWidget implements INetwork.ReceiveG
entityInventory = inventory;
}
public void onClose() {}
public void onClose() {
CraftGUI.render = null;
}
public boolean isServer() {
return !isClient();
@@ -1,7 +1,9 @@
package binnie.core.liquid;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraftforge.fluids.Fluid;
@@ -9,32 +11,62 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import binnie.core.ManagerBase;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ManagerLiquid extends ManagerBase {
private static final Set<String> EXTERNAL_FLUIDS = new HashSet<>();
static {
EXTERNAL_FLUIDS.add("liquidnitrogen");
}
private static boolean isExternalFluid(String identifier) {
return EXTERNAL_FLUIDS.contains(identifier) && Loader.isModLoaded("gregtech");
}
public Map<String, IFluidType> fluids;
private final Set<String> ownedFluids;
public ManagerLiquid() {
fluids = new LinkedHashMap<>();
ownedFluids = new HashSet<>();
}
public void createLiquids(IFluidType[] liquids, int startID) {
for (IFluidType liquid : liquids) {
BinnieFluid fluid = createLiquid(liquid, startID++);
if (fluid == null) {
String identifier = liquid.getIdentifier().toLowerCase();
Fluid fluid = createOrGetLiquid(liquid, startID++);
if (fluid == null && !isExternalFluid(identifier)) {
throw new RuntimeException("Liquid registered incorrectly - " + liquid.getIdentifier());
}
}
}
public BinnieFluid createLiquid(IFluidType fluid, int id) {
fluids.put(fluid.getIdentifier().toLowerCase(), fluid);
BinnieFluid binnieFluid = new BinnieFluid(fluid);
FluidRegistry.registerFluid(binnieFluid);
Fluid registeredFluid = createOrGetLiquid(fluid, id);
return (registeredFluid instanceof BinnieFluid) ? (BinnieFluid) registeredFluid : null;
}
private Fluid createOrGetLiquid(IFluidType fluid, int id) {
String identifier = fluid.getIdentifier().toLowerCase();
fluids.put(identifier, fluid);
Fluid registeredFluid = FluidRegistry.getFluid(identifier);
if (registeredFluid == null && !isExternalFluid(identifier)) {
BinnieFluid binnieFluid = new BinnieFluid(fluid);
FluidRegistry.registerFluid(binnieFluid);
registeredFluid = FluidRegistry.getFluid(identifier);
ownedFluids.add(identifier);
} else if (registeredFluid == null) {
FMLLog.warning(
"[Binnie] External liquid %s is not registered yet. Waiting for the owning mod to register it before postInit.",
identifier);
}
ItemFluidContainer.registerFluid(fluid, id);
return binnieFluid;
return registeredFluid;
}
public FluidStack getLiquidStack(String name, int amount) {
@@ -44,18 +76,26 @@ public class ManagerLiquid extends ManagerBase {
@SideOnly(Side.CLIENT)
public void reloadIcons(IIconRegister register) {
for (IFluidType type : fluids.values()) {
Fluid fluid = getLiquidStack(type.getIdentifier(), 1).getFluid();
String identifier = type.getIdentifier().toLowerCase();
FluidStack stack = getLiquidStack(identifier, 1);
Fluid fluid = stack == null ? null : stack.getFluid();
type.registerIcon(register);
if (fluid == null) {
throw new RuntimeException("[Binnie] Liquid not registered properly - " + type.getIdentifier());
}
fluid.setIcons(type.getIcon());
if (ownedFluids.contains(identifier)) {
fluid.setIcons(type.getIcon());
}
}
}
@Override
public void postInit() {
for (IFluidType fluid : fluids.values()) {
String identifier = fluid.getIdentifier().toLowerCase();
if (isExternalFluid(identifier) && FluidRegistry.getFluid(identifier) == null) {
throw new RuntimeException("[Binnie] External liquid not registered - " + identifier);
}
for (FluidContainer container : FluidContainer.values()) {
if (container.isActive() && fluid.canPlaceIn(container)) {
container.registerContainerData(fluid);
@@ -164,7 +164,7 @@ public class ComponentTankContainer extends MachineComponent implements ITankMac
@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
int index = getTankIndexToDrain(from, null);
int index = getTankIndexToDrain(from, resource);
if (!tanks.containsKey(index)) {
return null;
}
@@ -22,8 +22,6 @@ public class ItemETSlab extends ItemMetadata {
theHalfSlab = (BlockETSlab) ExtraTrees.blockSlab;
doubleSlab = (BlockETSlab) ExtraTrees.blockDoubleSlab;
isFullBlock = (block != theHalfSlab);
setMaxDamage(0);
setHasSubtypes(true);
}
@Override
@@ -19,6 +19,8 @@ public class ItemETStairs extends ItemBlock {
super(block);
setCreativeTab(CreativeTabs.tabBlock);
setUnlocalizedName("stairs");
setMaxDamage(0);
setHasSubtypes(true);
}
@Override