Compare commits

..
20 Commits
Author SHA1 Message Date
Jordan Rey b5ad490947 fix: multiple issues with genetics machines liquid storage (#103) 2026-07-29 16:37:33 +07:00
__felix__ 00051c4594 fix loader check for gt6 compat (#107) 2026-07-29 16:37:04 +07:00
Ranzu d913e245ed Implement ColorUtils (#106) 2026-07-20 01:25:22 -04:00
Ranzu f253dfc5dc Rename "Gingko" to "Ginkgo" (#105) 2026-07-18 15:41:11 +02:00
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
tiffit bd0746583a Only send NEI keybinds when no widget is focused (#94) 2026-05-10 20:44:56 +02:00
Ranzu b4143fb0ef Fixed Compartment help tooltip display (#93) 2026-05-09 14:21:17 +02:00
77c47e9071 fix isolator consumption chance config source (#87)
Co-authored-by: Martin Robertz <[email protected]>
Co-authored-by: UltraProdigy <[email protected]>
2026-05-04 01:00:00 +00:00
Max Shen f27b66c53f Fix concurrent modification exception (#92) 2026-05-03 20:43:05 -04:00
brandynandMartin Robertz ad16588e3b Fix ceramic tiles + Add config option to disable compartments (#83)
Co-authored-by: Martin Robertz <[email protected]>
2026-04-30 19:02:55 +02:00
Alexdoru 5acbd0b977 fix world client leak in RendererMachine (#90) 2026-04-09 20:29:55 +00:00
Martin Robertz 7e22128279 update+gradle+deps+bs 2026-04-07 18:54:15 +02:00
TweksTYandUltraProdigy 65e11fa564 Fix Genetics machines' VFX incorrectly appearing at 0;0;0 coordinates (#89)
Co-authored-by: UltraProdigy <[email protected]>
2026-03-20 23:56:15 -04:00
DarkShadow44andMartin Robertz 355c85598e Move out larvae from splicer even when no serum is present anymore (#76)
Co-authored-by: Martin Robertz <[email protected]>
2026-03-20 23:33:14 -04:00
UltraProdigy 63232799bc Optimize Images & Workflow (#88) 2026-03-08 09:28:38 +01:00
1925 changed files with 404 additions and 168 deletions

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
name: Optimize images
on:
pull_request:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
push:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
jobs:
optimize-images:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/optimize-images.yml@master
secrets: inherit
+4 -4
View File
@@ -1,12 +1,12 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:ForestryMC:4.11.7:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.9.13:dev')
api('com.github.GTNewHorizons:ForestryMC:4.11.28:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.11.30:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.63-GTNH:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.105-GTNH:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.55: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/c5ee947fbfb70bc347d8d531e3a578c4/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a46fff651cce1bc53a4c/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c5ee947fbfb70bc347d8d531e3a578c4/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a46fff651cce1bc53a4c/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e1118b4c7c2858d28154d086dbff010e/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/59a9771cad43219260d9aac9a8ec4d6a/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c5ee947fbfb70bc347d8d531e3a578c4/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a46fff651cce1bc53a4c/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/832229f0f6f0be60ed817c5a5e5848eb/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/b96cb7670c095245220e7d01d5927b58/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
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+1 -1
View File
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/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/.
+1 -1
View File
@@ -17,5 +17,5 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.19'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.26'
}
@@ -130,7 +130,7 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa
@Override
public IIcon getIcon(int side, int meta) {
return getType(meta).getIcon(MultipassBlockRenderer.getLayer());
return TileType.get(meta >>> 16 & 0xFF).icons[MultipassBlockRenderer.getLayer()];
}
@Override
@@ -167,6 +167,9 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa
@Override
@SideOnly(Side.CLIENT)
public int getRenderColor(int meta) {
if (!MultipassBlockRenderer.isRendering()) {
return EnumFlowerColor.get(meta & 0xFF).getColor(false);
}
return colorMultiplier(meta);
}
@@ -177,14 +180,14 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa
@Override
public int colorMultiplier(int meta) {
BlockType type = getType(meta);
if (MultipassBlockRenderer.getLayer() == 0) {
int layer = MultipassBlockRenderer.getLayer();
if (layer == 0) {
return 0xffffff;
}
if (MultipassBlockRenderer.getLayer() == 1) {
return type.color1.getColor(false);
if (layer == 1) {
return EnumFlowerColor.get(meta & 0xFF).getColor(false);
}
return type.color2.getColor(false);
return EnumFlowerColor.get(meta >>> 8 & 0xFF).getColor(false);
}
@Override
+4 -1
View File
@@ -12,6 +12,7 @@ import net.minecraftforge.common.MinecraftForge;
import binnie.Binnie;
import binnie.core.block.MultipassBlockRenderer;
import binnie.core.block.TileEntityMetadata;
import binnie.core.config.BCConfig;
import binnie.core.craftgui.minecraft.ModuleCraftGUI;
import binnie.core.gui.BinnieCoreGUI;
import binnie.core.gui.BinnieGUIHandler;
@@ -78,7 +79,9 @@ public class BinnieCore extends AbstractMod {
}
addModule(new ModuleCraftGUI());
addModule(new ModuleStorage());
if (!BCConfig.disableCompartments) {
addModule(new ModuleStorage());
}
addModule(new ModuleItems());
if (Loader.isModLoaded("BuildCraft|Silicon")) {
addModule(new ModuleTrigger());
@@ -17,6 +17,8 @@ public class ItemMetadata extends ItemBlock {
public ItemMetadata(Block block) {
super(block);
setMaxDamage(0);
setHasSubtypes(true);
}
@Override
@@ -14,6 +14,7 @@ public class MultipassBlockRenderer implements ISimpleBlockRenderingHandler {
public static MultipassBlockRenderer instance;
private static int layer = 0;
private static boolean rendering = false;
public MultipassBlockRenderer() {
MultipassBlockRenderer.instance = this;
@@ -23,31 +24,49 @@ public class MultipassBlockRenderer implements ISimpleBlockRenderingHandler {
return MultipassBlockRenderer.layer;
}
public static boolean isRendering() {
return MultipassBlockRenderer.rendering;
}
@Override
public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {
IMultipassBlock multipassBlock = (IMultipassBlock) block;
int passes = multipassBlock.getNumberOfPasses();
block.setBlockBoundsForItemRender();
renderer.setRenderBoundsFromBlock(block);
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
MultipassBlockRenderer.layer = 0;
while (MultipassBlockRenderer.layer < ((IMultipassBlock) block).getNumberOfPasses()) {
renderItem(block, renderer, meta);
MultipassBlockRenderer.layer++;
MultipassBlockRenderer.rendering = true;
try {
for (int pass = 0; pass < passes; ++pass) {
MultipassBlockRenderer.layer = pass;
renderItem(block, multipassBlock, renderer, meta);
}
} finally {
MultipassBlockRenderer.layer = 0;
MultipassBlockRenderer.rendering = false;
}
MultipassBlockRenderer.layer = 0;
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
RenderBlocks renderer) {
boolean r = true;
MultipassBlockRenderer.layer = 0;
while (MultipassBlockRenderer.layer < ((IMultipassBlock) block).getNumberOfPasses()) {
r = renderer.renderStandardBlock(block, x, y, z);
MultipassBlockRenderer.layer++;
IMultipassBlock multipassBlock = (IMultipassBlock) block;
int passes = multipassBlock.getNumberOfPasses();
boolean rendered = true;
MultipassBlockRenderer.rendering = true;
try {
for (int pass = 0; pass < passes; ++pass) {
MultipassBlockRenderer.layer = pass;
rendered = renderer.renderStandardBlock(block, x, y, z);
}
return rendered;
} finally {
MultipassBlockRenderer.layer = 0;
MultipassBlockRenderer.rendering = false;
}
MultipassBlockRenderer.layer = 0;
return r;
}
@Override
@@ -60,8 +79,8 @@ public class MultipassBlockRenderer implements ISimpleBlockRenderingHandler {
return BinnieCore.multipassRenderID;
}
public void renderItem(Block block, RenderBlocks renderer, int meta) {
setColor(((IMultipassBlock) block).colorMultiplier(meta));
private void renderItem(Block block, IMultipassBlock multipassBlock, RenderBlocks renderer, int meta) {
setColor(multipassBlock.colorMultiplier(meta));
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.setNormal(0.0f, -1.0f, 0.0f);
@@ -0,0 +1,14 @@
package binnie.core.config;
import com.gtnewhorizon.gtnhlib.config.Config;
import binnie.core.BinnieCore;
@Config(modid = BinnieCore.CORE_MODID)
public class BCConfig {
@Config.Comment("If true, disables all compartment storage machines (no blocks/recipes will be registered).")
@Config.DefaultBoolean(false)
@Config.RequiresMcRestart
public static boolean disableCompartments;
}
@@ -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() {
@@ -234,7 +234,7 @@ public class ContainerCraftGUI extends Container {
ItemStack heldItem = player.inventory.getItemStack().copy();
IInventory entityInventory = window.getInventory();
heldItem = new TransferRequest(heldItem, entityInventory).setOrigin(player.inventory).setTargetSlots(new int[0])
.setTargetTanks(new int[] { slotID }).transfer(true);
.setTargetTanks(new int[] { slotID }).dropOverflow(player).transfer(true);
player.inventory.setItemStack(heldItem);
@@ -240,12 +240,16 @@ public class GuiCraftGUI extends GuiContainer {
@Override
protected void keyTyped(char c, int key) {
NEIHook.lastKeyTyped(key, c);
boolean noFocusedWidget = window.getFocusedWidget() == null;
if (key == 1 || (key == mc.gameSettings.keyBindInventory.getKeyCode() && window.getFocusedWidget() == null)) {
if (noFocusedWidget) {
NEIHook.lastKeyTyped(key, c);
}
if (key == 1 || (key == mc.gameSettings.keyBindInventory.getKeyCode() && noFocusedWidget)) {
mc.thePlayer.closeScreen();
}
IWidget origin = (window.getFocusedWidget() == null) ? window : window.getFocusedWidget();
IWidget origin = noFocusedWidget ? window : window.getFocusedWidget();
window.callEvent(new EventKey.Down(origin, c, key));
}
@@ -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_nh");
}
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);
@@ -1,6 +1,5 @@
package binnie.core.machines;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.tileentity.TileEntity;
import binnie.core.util.I18N;
@@ -53,8 +52,7 @@ public abstract class MachinePackage {
this.group = group;
}
public abstract void renderMachine(Machine machine, double x, double y, double z, float partialTick,
RenderBlocks renderer);
public abstract void renderMachine(Machine machine, double x, double y, double z, float partialTick);
public boolean isActive() {
return active;
@@ -5,7 +5,6 @@ import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import binnie.Binnie;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
@@ -13,30 +12,27 @@ import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
// Hmm. It's used class
public class RendererMachine extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler {
RenderBlocks blockRenderer;
@Override
public void renderTileEntityAt(TileEntity entity, double x, double y, double z, float partialTick) {
renderTileEntity((TileEntityMachine) entity, x, y, z, partialTick, blockRenderer);
renderTileEntity((TileEntityMachine) entity, x, y, z, partialTick);
}
public void renderTileEntity(TileEntityMachine entity, double x, double y, double z, float partialTick,
RenderBlocks renderer) {
private void renderTileEntity(TileEntityMachine entity, double x, double y, double z, float partialTick) {
if (entity != null && entity.getMachine() != null) {
MachinePackage machinePackage = entity.getMachine().getPackage();
machinePackage.renderMachine(entity.getMachine(), x, y, z, partialTick, renderer);
machinePackage.renderMachine(entity.getMachine(), x, y, z, partialTick);
}
}
public void renderInvBlock(RenderBlocks renderblocks, Block block, int i, int j) {
private void renderInvBlock(Block block, int i, int j) {
TileEntity entity = block.createTileEntity(null, i);
renderTileEntity((TileEntityMachine) entity, 0.0, -0.1, 0.0, 0.0625f, renderblocks);
renderTileEntity((TileEntityMachine) entity, 0.0, -0.1, 0.0, 0.0625f);
}
@Override
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {
if (modelID == Binnie.Machine.getMachineRenderID()) {
renderInvBlock(renderer, block, metadata, modelID);
renderInvBlock(block, metadata, modelID);
}
}
@@ -48,7 +44,7 @@ public class RendererMachine extends TileEntitySpecialRenderer implements ISimpl
&& tile.getMachine().getPackage() != null
&& tile.getMachine().getPackage().getGroup() != null
&& !tile.getMachine().getPackage().getGroup().customRenderer) {
renderTileEntity(tile, x, y, z, 1.0f, renderer);
renderTileEntity(tile, x, y, z, 1.0f);
}
return true;
}
@@ -62,9 +58,4 @@ public class RendererMachine extends TileEntitySpecialRenderer implements ISimpl
public int getRenderId() {
return Binnie.Machine.getMachineRenderID();
}
@Override
public void func_147496_a(World par1World) {
blockRenderer = new RenderBlocks(par1World);
}
}
@@ -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;
}
@@ -9,4 +9,11 @@ public interface IProcess extends IErrorStateSource {
boolean isInProgress();
ProcessInfo getInfo();
/***
* Returns true if the current target got worked on at least once.
*/
default boolean workedOnTarget() {
return false;
}
}
@@ -1,6 +1,5 @@
package binnie.core.machines.storage;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -51,8 +50,7 @@ enum Compartment implements IMachineType {
}
@Override
public void renderMachine(Machine machine, double x, double y, double z, float partialTick,
RenderBlocks renderer) {
public void renderMachine(Machine machine, double x, double y, double z, float partialTick) {
MachineRendererCompartment.instance.renderMachine(machine, renderTexture, x, y, z);
}
}
@@ -256,8 +256,8 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
ControlSlide slide = new ControlSlide(this, 0.0f, 134.0f, 136.0f, 92.0f, Position.LEFT);
slide.setLabel(I18N.localise("binniecore.machine.storage.tab.properties"));
slide.setSlide(false);
slide.addHelp(I18N.localise("binniecore.machine.storage.tooltip.properties"));
slide.addHelp(I18N.localise("binniecore.machine.storage.tooltip.properties.desc"));
slide.addHelp(I18N.localise("binniecore.machine.storage.tab.properties"));
slide.addHelp(I18N.localise("binniecore.machine.storage.tab.properties.desc"));
Panel tabPropertyPanel = new Panel(slide, 16.0f, 8.0f, 112.0f, 76.0f, MinecraftGUI.PanelType.Gray);
int y2 = 4;
new ControlText(tabPropertyPanel, new IPoint(4.0f, y2), I18N.localise("binniecore.machine.storage.tab.name"));
@@ -3,6 +3,7 @@ package binnie.core.machines.transfer;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidContainerRegistry;
@@ -25,6 +26,7 @@ public class TransferRequest {
private int[] targetTanks;
private boolean transferLiquids;
private boolean ignoreReadOnly;
private EntityPlayer overflowPlayer;
private final List<TransferSlot> insertedSlots;
private final List<Integer> insertedTanks;
@@ -35,6 +37,7 @@ public class TransferRequest {
targetTanks = new int[0];
transferLiquids = true;
ignoreReadOnly = false;
overflowPlayer = null;
insertedSlots = new ArrayList<>();
insertedTanks = new ArrayList<>();
int[] target = new int[destination.getSizeInventory()];
@@ -95,6 +98,11 @@ public class TransferRequest {
return this;
}
public TransferRequest dropOverflow(EntityPlayer player) {
overflowPlayer = player;
return this;
}
public ItemStack getReturnItem() {
return returnItem;
}
@@ -107,9 +115,15 @@ public class TransferRequest {
if (transferLiquids && destination instanceof ITankMachine) {
for (int tankID : targetTanks) {
ItemStack itemBeforeTransfer = item.copy();
item = transferToTank(item, origin, (ITankMachine) destination, tankID, doAdd);
if (item != null) {
item = transferFromTank(item, origin, (ITankMachine) destination, tankID, doAdd);
if (item == null || !ItemStack.areItemStacksEqual(item, itemBeforeTransfer)) {
break;
}
item = transferFromTank(item, origin, (ITankMachine) destination, tankID, doAdd);
if (item == null || !ItemStack.areItemStacksEqual(item, itemBeforeTransfer)) {
break;
}
}
}
@@ -200,11 +214,13 @@ public class TransferRequest {
private ItemStack transferToTankUsingFluidContainer(ItemStack item, IInventory origin, ITankMachine destination,
int tankID, boolean doAdd) {
if (item == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
if (item == null || origin == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
return item;
}
FluidStack fluid = fluidContainer.getFluid(item);
ItemStack singleContainer = item.copy();
singleContainer.stackSize = 1;
FluidStack fluid = fluidContainer.getFluid(singleContainer);
if (fluid == null) {
return item;
}
@@ -216,11 +232,22 @@ public class TransferRequest {
}
int maxFill = tank.fill(fluid, false);
FluidStack toTake = fluidContainer.drain(item, maxFill, true);
FluidStack toTake = fluidContainer.drain(singleContainer, maxFill, true);
if (toTake == null || toTake.amount <= 0) {
return item;
}
TransferRequest containerDump = createContainerDump(singleContainer, origin);
boolean dropContainer = containerDump.transfer(false) != null;
if (dropContainer && overflowPlayer == null) {
return item;
}
if (doAdd) {
tank.fill(toTake, true);
dumpContainer(singleContainer, containerDump, dropContainer);
}
return item;
return removeSingleContainer(item);
}
private ItemStack transferToTankUsingContainerData(ItemStack item, IInventory origin, ITankMachine destination,
@@ -305,24 +332,69 @@ public class TransferRequest {
private ItemStack transferFromTankUsingFluidContainer(ItemStack item, IInventory origin, ITankMachine destination,
int tankID, boolean doAdd) {
if (item == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
if (item == null || origin == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
return item;
}
ItemStack singleContainer = item.copy();
singleContainer.stackSize = 1;
IFluidTank tank = destination.getTanks()[tankID];
FluidStack fluid = tank.getFluid();
if (fluid == null) {
return item;
}
int amount = fluidContainer.fill(item, fluid, false);
amount = Math.min(amount, (tank.drain(amount, false) == null) ? 0 : tank.drain(amount, false).amount);
if (amount <= 0) {
int amount = fluidContainer.fill(singleContainer, fluid, false);
FluidStack drained = tank.drain(amount, false);
if (drained == null || drained.amount <= 0) {
return item;
}
fluidContainer.fill(item, tank.drain(amount, doAdd), doAdd);
return item;
int amountFilled = fluidContainer.fill(singleContainer, drained, true);
if (amountFilled <= 0) {
return item;
}
TransferRequest containerDump = createContainerDump(singleContainer, origin);
boolean dropContainer = containerDump.transfer(false) != null;
if (dropContainer && overflowPlayer == null) {
return item;
}
if (doAdd) {
tank.drain(amountFilled, true);
dumpContainer(singleContainer, containerDump, dropContainer);
}
return removeSingleContainer(item);
}
private TransferRequest createContainerDump(ItemStack container, IInventory origin) {
TransferRequest containerDump = new TransferRequest(container, origin).setTargetTanks(new int[0]);
if (overflowPlayer != null && origin == overflowPlayer.inventory) {
int[] mainInventorySlots = new int[overflowPlayer.inventory.mainInventory.length];
for (int i = 0; i < mainInventorySlots.length; ++i) {
mainInventorySlots[i] = i;
}
containerDump.setTargetSlots(mainInventorySlots);
}
return containerDump;
}
private void dumpContainer(ItemStack container, TransferRequest containerDump, boolean dropContainer) {
if (dropContainer) {
overflowPlayer.dropPlayerItemWithRandomChoice(container.copy(), false);
} else {
containerDump.transfer(true);
}
}
private static ItemStack removeSingleContainer(ItemStack item) {
if (item.stackSize <= 1) {
return null;
}
ItemStack leftover = item.copy();
--leftover.stackSize;
return leftover;
}
private ItemStack transferFromTankUsingContainerData(ItemStack item, IInventory origin, ITankMachine destination,
@@ -1,6 +1,5 @@
package binnie.extrabees.apiary.machine;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -66,8 +65,7 @@ public enum AlvearyMachine implements IMachineType {
}
@Override
public void renderMachine(Machine machine, double x, double y, double z, float partialTick,
RenderBlocks renderer) {
public void renderMachine(Machine machine, double x, double y, double z, float partialTick) {
MachineRendererBlock.instance.renderMachine(machineTexture, x, y, z, partialTick);
}
}
@@ -58,7 +58,7 @@ public interface ILogType {
Rosewood("rosewood", 0x998666, PlankType.ExtraTreePlanks.Rosewood),
Purpleheart("purpleheart", 0x9392a2, PlankType.ExtraTreePlanks.Purpleheart),
Iroko("iroko", 0x605c5b, PlankType.ExtraTreePlanks.Iroko),
Gingko("gingko", 0xadae9c, PlankType.ExtraTreePlanks.Gingko),
Ginkgo("ginkgo", 0xadae9c, PlankType.ExtraTreePlanks.Ginkgo),
Eucalyptus("eucalyptus", 0xeadeda, PlankType.ExtraTreePlanks.Eucalyptus),
Eucalyptus2("eucalyptus", 0x867e65, PlankType.ExtraTreePlanks.Eucalyptus),
Box("box", 0xab6f57, PlankType.ExtraTreePlanks.Box),
@@ -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
@@ -67,7 +67,7 @@ public class PlankType {
Olive(0xb0ad88),
Sweetgum(0xd59658),
Rosewood(0x761500),
Gingko(0xf4e7ba),
Ginkgo(0xf4e7ba),
PinkIvory(0xec8ca0);
/**
@@ -69,7 +69,7 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider {
Acorn(6, 0x72b226, 0xad6a1d, FruitSprite.Tiny),
Elderberry(9, 0x71975d, 0x515b43, FruitSprite.Tiny),
Olive(9, 0x879e35, 0x62572a, FruitSprite.Small),
GingkoNut(7, 0x8c975b, 0xe5daad, FruitSprite.Tiny),
GinkgoNut(7, 0x8c975b, 0xe5daad, FruitSprite.Tiny),
Coffee(8, 0x716d1d, 0xf84f66, FruitSprite.Tiny),
Pear(10, 0x9f8f51, 0x9fd551, FruitSprite.Pear),
OsangeOsange(10, 0x979752, 0xa2bf27, FruitSprite.Larger),
@@ -205,8 +205,8 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider {
ExtraTreeFruitGene.Elderberry.setFamily(familyPrune);
ExtraTreeFruitGene.Olive.addProduct(Food.Olive.get(1), 1.0f);
ExtraTreeFruitGene.Olive.setFamily(familyPrune);
ExtraTreeFruitGene.GingkoNut.addProduct(Food.GingkoNut.get(1), 1.0f);
ExtraTreeFruitGene.GingkoNut.setFamily(familyNuts);
ExtraTreeFruitGene.GinkgoNut.addProduct(Food.GinkgoNut.get(1), 1.0f);
ExtraTreeFruitGene.GinkgoNut.setFamily(familyNuts);
ExtraTreeFruitGene.Coffee.addProduct(Food.Coffee.get(1), 1.0f);
ExtraTreeFruitGene.Coffee.setFamily(familyJungle);
ExtraTreeFruitGene.Pear.addProduct(Food.Pear.get(1), 1.0f);
@@ -125,7 +125,7 @@ public class ExtraTreeMutation implements ITreeMutation {
new ExtraTreeMutation(ExtraTreeSpecies.Brazilwood, getVanilla("Kapok"), ExtraTreeSpecies.Purpleheart, 10);
new ExtraTreeMutation(getVanilla("Ebony"), getVanilla("Teak"), ExtraTreeSpecies.Rosewood, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Rosewood, getVanilla("Kapok"), ExtraTreeSpecies.Logwood, 10);
new ExtraTreeMutation(getVanilla("Wenge"), getVanilla("Lime"), ExtraTreeSpecies.Gingko, 10);
new ExtraTreeMutation(getVanilla("Wenge"), getVanilla("Lime"), ExtraTreeSpecies.Ginkgo, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Beech, getVanilla("Jungle"), ExtraTreeSpecies.Brazilnut, 10);
new ExtraTreeMutation(getVanilla("Balsa"), getVanilla("Jungle"), ExtraTreeSpecies.RoseGum, 10);
new ExtraTreeMutation(ExtraTreeSpecies.RoseGum, getVanilla("Mahogony"), ExtraTreeSpecies.SwampGum, 10);
@@ -165,8 +165,8 @@ public class ExtraTreeMutation implements ITreeMutation {
new ExtraTreeMutation(ExtraTreeSpecies.Allspice, ExtraTreeSpecies.Clove, ExtraTreeSpecies.StarAnise, 10);
new ExtraTreeMutation(getVanilla("Jungle"), ExtraTreeSpecies.Orange, ExtraTreeSpecies.Mango, 10);
new ExtraTreeMutation(ExtraTreeSpecies.StarAnise, ExtraTreeSpecies.Mango, ExtraTreeSpecies.Starfruit, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Gingko, ExtraTreeSpecies.Candlenut, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Gingko, ExtraTreeSpecies.Chilli, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Ginkgo, ExtraTreeSpecies.Candlenut, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Ginkgo, ExtraTreeSpecies.Chilli, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Alder, ExtraTreeSpecies.DwarfHazel, 10);
}
@@ -187,7 +187,7 @@ public enum ExtraTreeSpecies implements IAlleleTreeSpecies, IIconProvider, IGerm
Rosewood("dalbergia", "latifolia", 0x879b22, ILogType.ExtraTreeLog.Rosewood, null, WorldGenRosewood.class),
Purpleheart("peltogyne", "spp.", 0x778f55, ILogType.ExtraTreeLog.Purpleheart, null, WorldGenPurpleheart.class),
Iroko("milicia", "excelsa", 0xafc86c, ILogType.ExtraTreeLog.Iroko, null, WorldGenIroko.class),
Gingko("ginkgo", "biloba", 0x719651, ILogType.ExtraTreeLog.Gingko, ExtraTreeFruitGene.GingkoNut,
Ginkgo("ginkgo", "biloba", 0x719651, ILogType.ExtraTreeLog.Ginkgo, ExtraTreeFruitGene.GinkgoNut,
WorldGenGingko.class),
Brazilnut("bertholletia", "excelsa", 0x7c8f7b, ILogType.VanillaLog.Jungle, ExtraTreeFruitGene.BrazilNut,
WorldGenBrazilNut.class),
@@ -548,7 +548,7 @@ public enum ExtraTreeSpecies implements IAlleleTreeSpecies, IIconProvider, IGerm
ExtraTreeSpecies.Iroko.addFamily(familyNuts).addFamily(familyJungle).setHeight(EnumAllele.Height.AVERAGE)
.setFertility(EnumAllele.Saplings.LOW);
ExtraTreeSpecies.Gingko.addFamily(familyNuts).addFamily(familyJungle).setLeafType(LeafType.JUNGLE)
ExtraTreeSpecies.Ginkgo.addFamily(familyNuts).addFamily(familyJungle).setLeafType(LeafType.JUNGLE)
.setHeight(EnumAllele.Height.LARGE).setYield(EnumAllele.Yield.LOWER)
.setSappiness(EnumAllele.Sappiness.LOW);
@@ -54,7 +54,7 @@ public enum Food implements IItemMisc {
Acorn(0),
Elderberry(1),
Olive(1),
GingkoNut(1),
GinkgoNut(1),
Coffee(0),
OsangeOrange(1),
Clove(0),
@@ -129,7 +129,7 @@ public enum Food implements IItemMisc {
Food.Acorn.ore("Acorn");
Food.Elderberry.ore("Elderberry");
Food.Olive.ore("Olive");
Food.GingkoNut.ore("GingkoNut");
Food.GinkgoNut.ore("GinkgoNut");
Food.Coffee.ore("Coffee");
Food.OsangeOrange.ore("OsangeOrange");
Food.Clove.ore("Clove");
@@ -84,7 +84,7 @@ public class ModuleItems implements IInitializable {
Food.Acorn.addOil(20, 50, 3);
Food.Elderberry.addJuice(10, 100, 5);
Food.Olive.addOil(20, 50, 3);
Food.GingkoNut.addOil(20, 50, 5);
Food.GinkgoNut.addOil(20, 50, 5);
Food.Coffee.addOil(15, 20, 2);
Food.OsangeOrange.addJuice(10, 300, 15);
Food.Clove.addOil(10, 25, 2);
@@ -1,6 +1,5 @@
package binnie.extratrees.machines;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -81,8 +80,7 @@ public enum ExtraTreeMachine implements IMachineType {
}
@Override
public void renderMachine(Machine machine, double x, double y, double z, float partialTick,
RenderBlocks renderer) {
public void renderMachine(Machine machine, double x, double y, double z, float partialTick) {
MachineRendererForestry.renderMachine(textureName.getShortPath(), x, y, z);
}
}
@@ -54,7 +54,8 @@ public class Lumbermill {
private static Collection<ItemStack> getRecipeResult(ItemStack output) {
List<ItemStack> list = new ArrayList<>();
for (IRecipe iRecipe : CraftingManager.getInstance().getRecipeList()) {
List<IRecipe> iRecipes = new ArrayList<>(CraftingManager.getInstance().getRecipeList());
for (IRecipe iRecipe : iRecipes) {
if (iRecipe instanceof ShapelessRecipes shapeless) {
if (shapeless.recipeItems.size() != 1 || !(shapeless.recipeItems.get(0) instanceof ItemStack)) {
continue;
+15 -1
View File
@@ -1,5 +1,8 @@
package binnie.genetics;
import com.gtnewhorizon.gtnhlib.config.ConfigException;
import com.gtnewhorizon.gtnhlib.config.ConfigurationManager;
import binnie.core.AbstractMod;
import binnie.core.Tags;
import binnie.core.gui.IBinnieGUID;
@@ -8,6 +11,7 @@ import binnie.core.machines.MachineGroup;
import binnie.core.network.BinniePacketHandler;
import binnie.core.network.IPacketID;
import binnie.core.proxy.IProxyCore;
import binnie.genetics.config.GeneticsConfig;
import binnie.genetics.core.GeneticsGUI;
import binnie.genetics.core.GeneticsPacket;
import binnie.genetics.item.ItemAnalyst;
@@ -28,19 +32,29 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@Mod(
modid = "Genetics",
modid = Genetics.GENETICS_MODID,
name = "Genetics",
version = Tags.VERSION,
useMetadata = true,
dependencies = "after:BinnieCore")
public class Genetics extends AbstractMod {
public static final String GENETICS_MODID = "Genetics";
@Mod.Instance("Genetics")
public static Genetics instance;
@SidedProxy(clientSide = "binnie.genetics.proxy.ProxyClient", serverSide = "binnie.genetics.proxy.ProxyServer")
public static Proxy proxy;
static {
try {
ConfigurationManager.registerConfig(GeneticsConfig.class);
} catch (ConfigException e) {
throw new RuntimeException(e);
}
}
public static final String CHANNEL = "GEN";
public static ItemSerumArray itemSerumArray = null;
@@ -1,11 +1,11 @@
package binnie.extrabees.config;
package binnie.genetics.config;
import static binnie.extrabees.ExtraBees.EB_MODID;
import static binnie.genetics.Genetics.GENETICS_MODID;
import com.gtnewhorizon.gtnhlib.config.Config;
@Config(modid = EB_MODID)
public class EBConfigMachines {
@Config(modid = GENETICS_MODID)
public class GeneticsConfig {
@Config.Comment("Percentage chance of Isolator consuming bee. 0 never consumes, 1 always does.")
@Config.RangeFloat(min = 0f, max = 1f)
@@ -1,6 +1,5 @@
package binnie.genetics.machine;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.tileentity.TileEntity;
import binnie.core.machines.Machine;
@@ -26,7 +25,7 @@ public abstract class PackageGeneticBase extends MachinePackage {
}
@Override
public void renderMachine(Machine machine, double x, double y, double z, float partialTick, RenderBlocks renderer) {
public void renderMachine(Machine machine, double x, double y, double z, float partialTick) {
MachineRendererGenetics.instance.renderMachine(machine, renderTexture, x, y, z);
}
}
@@ -43,14 +43,7 @@ public class AnalyserComponentFX extends MachineComponent
BinnieCore.proxy.getMinecraftInstance().effectRenderer
.addEffect(new EntityFX(world, x + 0.5, y + 1.3 + rand.nextDouble() * 0.2, z + 0.5, 0.0, 0.0, 0.0) {
double axisX = posX;
double axisZ = posZ;
double angle = rand.nextDouble() * 2.0 * 3.1415;
{
axisX = 0.0;
axisZ = 0.0;
angle = 0.0;
motionX = 0.05 * (rand.nextDouble() - 0.5);
motionZ = 0.05 * (rand.nextDouble() - 0.5);
motionY = 0.0;
@@ -48,9 +48,6 @@ public class InoculatorComponentFX extends MachineComponent
double angle = (int) (worldObj.getTotalWorldTime() % 4L) * 0.5 * 3.1415;
{
axisX = 0.0;
axisZ = 0.0;
angle = 0.0;
motionX = 0.0;
motionZ = 0.0;
motionY = 0.007 + rand.nextDouble() * 0.002;
@@ -65,10 +65,10 @@ public class IsolatorComponentFX extends MachineComponent implements IRender.Ran
}
BinnieCore.proxy.getMinecraftInstance().effectRenderer
.addEffect(new EntityFX(world, x + 0.5, y + 1, z + 0.5, 0.0, 0.0, 0.0) {
.addEffect(new EntityFX(world, x + 0.5, y + 1, z + 0.75, 0.0, 0.0, 0.0) {
final double axisX = 0.0;
final double axisZ = 0.0;
final double axisX = posX;
final double axisZ = posZ - 0.25;
double angle = 0.0;
{
@@ -13,7 +13,7 @@ import binnie.core.machines.power.ComponentProcessSetCost;
import binnie.core.machines.power.ErrorState;
import binnie.core.machines.power.IProcess;
import binnie.core.util.I18N;
import binnie.extrabees.config.EBConfigMachines;
import binnie.genetics.config.GeneticsConfig;
import binnie.genetics.item.ItemSequence;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAllele;
@@ -100,7 +100,7 @@ public class IsolatorComponentLogic extends ComponentProcessSetCost implements I
ItemStack serum = ItemSequence.create(gene);
getUtil().setStack(Isolator.SLOT_RESULT, serum);
getUtil().decreaseStack(Isolator.SLOT_SEQUENCER_VIAL, 1);
if (rand.nextFloat() < EBConfigMachines.isolatorConsumptionChance) {
if (rand.nextFloat() < GeneticsConfig.isolatorConsumptionChance) {
getUtil().decreaseStack(Isolator.SLOT_TARGET, 1);
}
getUtil().drainTank(Isolator.TANK_ETHANOL, (int) ethanolPerProcess);
@@ -1,7 +1,5 @@
package binnie.genetics.machine.lab;
import net.minecraft.client.renderer.RenderBlocks;
import binnie.core.machines.Machine;
import binnie.genetics.core.GeneticsTexture;
import binnie.genetics.machine.ComponentGUIHolder;
@@ -20,7 +18,7 @@ public class LabMachinePackage extends PackageGeneticBase {
}
@Override
public void renderMachine(Machine machine, double x, double y, double z, float partialTick, RenderBlocks renderer) {
public void renderMachine(Machine machine, double x, double y, double z, float partialTick) {
MachineRendererLab.instance.renderMachine(machine, renderTexture, x, y, z);
}
}
@@ -37,9 +37,6 @@ public class PolymeriserComponentFX extends MachineComponent implements IRender.
double angle = 0.7 + (int) (worldObj.getTotalWorldTime() % 2L) * 3.1415;
{
axisX = 0.0;
axisZ = 0.0;
angle = 0.0;
motionX = 0.0;
motionZ = 0.0;
motionY = -0.006;
@@ -34,9 +34,6 @@ public class SequencerComponentFX extends MachineComponent implements IRender.Ra
double angle = rand.nextDouble() * 2.0 * 3.1415;
{
axisX = 0.0;
axisZ = 0.0;
angle = 0.0;
motionX = 0.0;
motionZ = 0.0;
motionY = 0.0;
@@ -49,9 +49,6 @@ public class SplicerComponentFX extends MachineComponent
double angle = (int) (worldObj.getTotalWorldTime() % 4L) * 0.5 * 3.1415;
{
axisX = 0.0;
axisZ = 0.0;
angle = 0.0;
motionX = 0.0;
motionZ = 0.0;
motionY = (rand.nextDouble() - 0.5) * 0.02;
@@ -19,6 +19,10 @@ import forestry.api.genetics.IIndividual;
public class SplicerComponentLogic extends ComponentProcessSetCost implements IProcess {
// Needed to keep stack. If user takes out target slot and it gets automatically refilled, this happens in the same
// tick
private ItemStack workedOnStack = null;
public int nOfGenes;
public SplicerComponentLogic(Machine machine) {
@@ -50,6 +54,11 @@ public class SplicerComponentLogic extends ComponentProcessSetCost implements IP
public void onInventoryUpdate() {
super.onInventoryUpdate();
nOfGenes = getGenesToUse();
ItemStack newTarget = getUtil().getStack(Splicer.SLOT_TARGET);
if (newTarget == null || !ItemStack.areItemStacksEqual(workedOnStack, newTarget)) {
workedOnStack = null;
}
}
protected int getGenesToUse() {
@@ -190,5 +199,31 @@ public class SplicerComponentLogic extends ComponentProcessSetCost implements IP
Splicer.setGene(gene, target, 1);
}
getUtil().damageItem(Splicer.SLOT_SERUM_VIAL, 1);
workedOnStack = getUtil().getStack(Splicer.SLOT_TARGET).copy();
}
@Override
public boolean workedOnTarget() {
return ItemStack.areItemStacksEqual(workedOnStack, getUtil().getStack(Splicer.SLOT_TARGET));
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
NBTTagCompound tagWorkedOnStack = (NBTTagCompound) nbt.getTag("workedOnStack");
if (tagWorkedOnStack != null) {
workedOnStack = ItemStack.loadItemStackFromNBT(tagWorkedOnStack);
}
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
if (workedOnStack != null) {
NBTTagCompound tagWorkedOnStack = new NBTTagCompound();
workedOnStack.writeToNBT(tagWorkedOnStack);
// Need to save, in case inventory is full it might need to get moved out way later.
nbt.setTag("workedOnStack", tagWorkedOnStack);
}
}
}
@@ -3,6 +3,7 @@ package binnie.genetics.machine.splicer;
import net.minecraft.item.ItemStack;
import binnie.core.craftgui.minecraft.IMachineInformation;
import binnie.core.machines.IMachine;
import binnie.core.machines.Machine;
import binnie.core.machines.inventory.ComponentInventorySlots;
import binnie.core.machines.inventory.ComponentInventoryTransfer;
@@ -79,8 +80,20 @@ public class SplicerPackage extends AdvGeneticMachine.PackageAdvGeneticBase impl
@Override
public boolean fufilled(ItemStack stack) {
return stack != null && transfer.getMachine().getMachineUtil().getStack(Splicer.SLOT_SERUM_VIAL) != null
&& transfer.getMachine().getInterface(SplicerComponentLogic.class).isValidSerum() != null;
if (stack == null) {
return false;
}
IMachine machine = transfer.getMachine();
boolean hasSerum = machine.getMachineUtil().getStack(Splicer.SLOT_SERUM_VIAL) != null;
if (hasSerum) {
// Move item if it can't be processed anymore with current serum.
boolean validSerum = machine.getInterface(SplicerComponentLogic.class).isValidSerum() == null;
return !validSerum;
} else {
// Move item if there is no serum and item got processed already
return machine.getMachineUtil().getProcess().workedOnTarget();
}
}
});
@@ -11,6 +11,7 @@ import binnie.core.nei.RecipeHandlerBase;
import binnie.genetics.Genetics;
import binnie.genetics.item.GeneticsItems;
import binnie.genetics.item.ItemSerumArray;
import binnie.genetics.nei.helper.ColorUtils;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.ItemList;
import codechicken.nei.NEIServerUtils;
@@ -60,7 +61,7 @@ public class DatabaseRecipeHandler extends RecipeHandlerBase {
StatCollector.translateToLocalFormatted("genetics.nei.tip.databaseDesc"),
140);
for (int i = 0; i < desc.size(); i++) {
GuiDraw.drawStringC(desc.get(i), 88, 44 + 12 * (i - 1), 0xFFFFFF);
GuiDraw.drawStringC(desc.get(i), 88, 44 + 12 * (i - 1), ColorUtils.neiDisplayText.getColor());
}
}
@@ -13,6 +13,7 @@ import binnie.core.nei.PositionedFluidTank;
import binnie.core.nei.RecipeHandlerBase;
import binnie.genetics.api.IIncubatorRecipe;
import binnie.genetics.machine.incubator.Incubator;
import binnie.genetics.nei.helper.ColorUtils;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.NEIServerUtils;
import codechicken.nei.PositionedStack;
@@ -48,8 +49,16 @@ public class IncubatorRecipeHandler extends RecipeHandlerBase {
@Override
public void drawExtras(int recipe) {
this.drawProgressBar(75, 27, 176, 0, 24, 17, 40, 0);
GuiDraw.drawStringC(StatCollector.translateToLocal("genetics.nei.tip.loss"), 62, 5, 0xFFFFFF);
GuiDraw.drawStringC(((CachedIncubatorRecipe) arecipes.get(recipe)).lossChance, 62, 15, 0xFFFFFF);
GuiDraw.drawStringC(
StatCollector.translateToLocal("genetics.nei.tip.loss"),
62,
5,
ColorUtils.neiDisplayText.getColor());
GuiDraw.drawStringC(
((CachedIncubatorRecipe) arecipes.get(recipe)).lossChance,
62,
15,
ColorUtils.neiDisplayText.getColor());
}
@Override
@@ -0,0 +1,13 @@
package binnie.genetics.nei.helper;
import com.gtnewhorizon.gtnhlib.color.ColorResource;
public class ColorUtils {
private static final ColorResource.Factory color = new ColorResource.Factory("binniecore");
public static final ColorResource
// spotless:off
neiDisplayText = color.rgb("neiDisplayText", "0xFFFFFF");
// spotless:on
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 776 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 325 B

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 423 B

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 B

After

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 B

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 B

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 B

After

Width:  |  Height:  |  Size: 418 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 B

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 672 B

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 B

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 713 B

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 711 B

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 654 B

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 763 B

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 B

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 B

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 B

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 B

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

After

Width:  |  Height:  |  Size: 384 B

Loaded 100 of 1925 files, more files were not shown because too many files have changed in this diff. Show more