Compare commits

..
41 Commits
Author SHA1 Message Date
Martin Robertz ce40528f94 update +sa 2026-02-15 00:09:24 +01:00
Martin Robertz 1c4e9a0edf Merge remote-tracking branch 'brandyyn/master' into dev 2026-02-15 00:07:09 +01:00
Martin Robertz 18cdffc3c4 Merge remote-tracking branch 'origin/master' into dev 2026-02-15 00:06:46 +01:00
Caedis 1ea465c688 Merge branch 'master' into master 2026-02-09 05:38:34 -06:00
Caedis c988aa9870 Cache inventory size in compartments (#84) 2026-02-09 14:29:52 +03:00
Martin Robertz cede7b7869 Merge remote-tracking branch 'brandyyn/master' into dev 2026-02-06 21:15:31 +01:00
Martin Robertz 60cef50150 Merge remote-tracking branch 'brandyyn/splicer_fix' into dev 2026-02-06 21:15:22 +01:00
brandyn 6c24da5270 Fix ceramic tiles + Add config option to disable compartments
Fix missing pixels in ceramic tiles

Fix rendering of ceramic tiles

Fix crashes of rendering ceramic tiles and breaking ceramic tiles

Add config option to disable compartments
2026-02-02 17:07:48 +00:00
Martin Robertz a52f1b0926 Merge branch 'master' into splicer_fix 2026-01-30 10:51:47 +01:00
ah-OOG-ah 6ba66123eb Yeet reflective item parsing (#75) 2026-01-27 22:29:12 -05:00
Ranzu 1d0568388a Added title localization and inventory slot texture (#81) 2026-01-07 18:37:36 +01:00
TweksTY 3968cc320e Fix the inability to mutate a bee that requires a certain block as a base using alveary if the bottom center block of your alveary is any alveary block from Extra Bees (#80) 2026-01-07 12:29:12 +01:00
DarkShadow44 ed1daa1e96 Mark sequence as not repairable (#79) 2025-12-13 20:58:30 +01:00
Fabian Maurer 2e159f1983 Merge remote-tracking branch 'origin/master' into splicer_fix 2025-12-12 21:01:02 +01:00
Alexdoru ffcc5f7102 [Memory-opti:runtime allocations] Reduce amount of NBTTagCompound created in TileEntityMetadata#getItemStack (#77) 2025-12-01 23:35:01 +01:00
Fabian Maurer dde6c79f9e Move out larvae from splicer even when no serum is present anymore 2025-11-12 23:13:18 +01:00
Martin Robertz 4c619fd3b2 update 2025-10-01 18:48:17 +02:00
Glease 341fea50ba fix batched updates does not call window and machine packet listeners (#74) 2025-09-28 10:52:47 +02:00
Julia e6c67df077 Fix Slot Registration Crash (#73) 2025-09-25 15:46:12 +02:00
d24088ea4b Fix metadata error when using Scooporator MX200 Turbo (#69)
Co-authored-by: Wilhelm Schuster <[email protected]>
Co-authored-by: boubou19 <[email protected]>
2025-09-24 23:44:33 +02:00
Julia a2a57d1656 Batch Actions and Defer Registration of Slots (#72) 2025-09-24 23:25:39 +02:00
Julia 2e36fbcfcc Extract Magic String Constants in ContainerCraftGUI (#70) 2025-09-24 17:46:47 +02:00
Martin Robertz bd5bd5c153 update 2025-09-24 17:37:45 +02:00
Julia f324cb53db Fix Inventory List Crash (#71) 2025-09-24 17:29:33 +02:00
Julia c6815bebdf Cleanup ContainerCraftGUI (#68) 2025-09-23 17:46:40 -07:00
Julia 7ffa516892 Change recieve -> receive (#67) 2025-09-23 14:26:33 -07:00
Julia 311d618d53 Cleanup BinnieCorePacketID.java (#66) 2025-09-23 12:54:21 -07:00
Dream Master 9795aad66f update 2025-09-05 16:05:56 +02:00
Matthew Bentham ea7e2d7de4 Fix mutator not accepting items listed on the wiki (#65) 2025-09-05 09:44:41 +02:00
boubou19andAlexdoru 39f86c8b0c Speed up forge event registration (#64)
Co-authored-by: Alexdoru <[email protected]>
2025-07-18 22:22:10 +00:00
TotallyNotOndre 5b551eb8ec "fix" compartment tab name input field (#63) 2025-07-15 19:39:33 +02:00
Martin Robertz f497114579 update 2025-07-08 12:11:02 +02:00
Alexdoru ea547df4d0 Properly apply hunger effect (#62) 2025-07-07 21:42:49 +02:00
Ruling-0 39c9f1f6c6 Remove mutator mutation chance cap (#61) 2025-05-25 17:30:06 +02:00
Maya 4000763323 update 2025-05-07 10:39:29 -05:00
czerwonogrodzki 59e98dd290 Extend Lab Stand GUI width by 80 units (#60) 2025-05-07 10:38:14 -05:00
Maya c1ec3e5c8e Fix stained block hardness (#59) 2025-04-09 01:22:18 -05:00
Maya ac4b21b05e update 2025-04-08 14:24:47 -05:00
Niclas Klugmann 0e0ded5cc0 Revert 5x multiplier removal (#58) 2025-04-08 14:23:05 -05:00
Martin Robertz a1f54e7500 update 2025-01-16 21:59:06 +01:00
Astatine5985andMaya 5f1b5daa24 Isolator crash fix revision (#56)
Co-authored-by: Maya <[email protected]>
2025-01-16 16:50:35 +00:00
117 changed files with 1445 additions and 981 deletions

No files matched your search

+6 -6
View File
@@ -1,12 +1,12 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:ForestryMC:4.10.0:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.6.0:dev')
api('com.github.GTNewHorizons:ForestryMC:4.11.4:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.9.20:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.7.8-GTNH:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.68-GTNH:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly("curse.maven:extrabiomesxl-60041:2273301")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.55:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly("curse.maven:extrabiomesxl-60041:2273301")
}
+38 -6
View File
@@ -14,7 +14,7 @@ modId = BinnieCore
modGroup = binnie
# Whether to use modGroup as the maven publishing group.
# Due to a history of using JitPack, the default is com.github.GTNewHorizons for all mods.
# When false, com.github.GTNewHorizons is used.
useModGroupForPublishing = false
# Updates your build.gradle and settings.gradle automatically whenever an update is available.
@@ -39,9 +39,33 @@ remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/co
# `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE.
developmentEnvironmentUserName = Developer
# Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8.
# See https://github.com/bsideup/jabel for details on how this works.
enableModernJavaSyntax = true
# Enables modern Java syntax support. Valid values:
# - false: No modern syntax, Java 8 only
# - jabel: Jabel syntax-only support, compiles to J8 bytecode
# - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs)
# - modern: Native modern Java bytecode, no downgrading
enableModernJavaSyntax = jabel
# If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues,
# and should *not* be used in most situations. -1 disables this.
# forceToolchainVersion = -1
# Target JVM version for JVM Downgrader bytecode downgrading.
# Only used when enableModernJavaSyntax = jvmDowngrader
# downgradeTargetVersion = 8
# Comma-separated list of Java versions for multi-release jar support (JVM Downgrader only).
# Classes will be available in META-INF/versions/N/ for each version N in this list.
# Default: "21,25" (J25+ gets native classes, J21-24 gets partial downgrade, J8-20 gets full downgrade).
# jvmDowngraderMultiReleaseVersions = 21,25
# Specifies how JVM Downgrader API stubs are provided. Options:
# - shade: Shade minimized stubs into the jar
# - gtnhlib: GTNHLib provides stubs at runtime (adds version constraint)
# - external: Another dependency provides stubs (no constraint, no warning)
# - (empty): Warning reminding you to configure stubs
# Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md
# jvmDowngraderStubsProvider =
# Enables injecting missing generics into the decompiled source code for a better coding experience.
# Turns most publicly visible List, Map, etc. into proper List<E>, Map<K, V> types.
@@ -96,7 +120,9 @@ usesMixinDebug = false
# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin =
# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
# Specify the package that contains all of your Mixins. The package must exist or
# the build will fail. If you have a package property defined in your mixins.<modid>.json,
# it must match with this or the build will fail.
mixinsPackage =
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
@@ -151,7 +177,7 @@ modrinthProjectId =
# type can be one of [project, version],
# and the name is the Modrinth project or version slug/id of the other mod.
# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech
# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
modrinthRelations =
# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens.
@@ -172,6 +198,12 @@ curseForgeRelations =
# projects. New projects should not use this parameter.
customArchiveBaseName = binnie-mods
# Optional parameter to customize the default working directory used by the runClient* tasks. Relative to the project directory.
# runClientWorkingDirectory = run/client
# Optional parameter to customize the default working directory used by the runServer* tasks. Relative to the project directory.
# runServerWorkingDirectory = run/server
# Optional parameter to have the build automatically fail if an illegal version is used.
# This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'.
# The check is ONLY performed if the version is a git tag.
+12
View File
@@ -0,0 +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
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-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+4 -8
View File
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -86,8 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -115,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
@@ -173,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -206,15 +203,14 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
Vendored
+1 -2
View File
@@ -70,11 +70,10 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
+1 -1
View File
@@ -17,5 +17,5 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.30'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.20'
}
-2
View File
@@ -5,7 +5,6 @@ import java.util.List;
import binnie.core.ManagerBase;
import binnie.core.genetics.ManagerGenetics;
import binnie.core.item.ManagerItem;
import binnie.core.liquid.ManagerLiquid;
import binnie.core.machines.ManagerMachine;
import binnie.core.resource.ManagerResource;
@@ -16,6 +15,5 @@ public final class Binnie {
public static ManagerGenetics Genetics = new ManagerGenetics();
public static ManagerLiquid Liquid = new ManagerLiquid();
public static ManagerMachine Machine = new ManagerMachine();
public static ManagerItem Item = new ManagerItem();
public static ManagerResource Resource = new ManagerResource();
}
+153 -140
View File
@@ -6,6 +6,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.BonemealEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.world.BlockEvent;
@@ -63,35 +64,41 @@ public class Botany extends AbstractMod {
@SidedProxy(clientSide = "binnie.botany.proxy.ProxyClient", serverSide = "binnie.botany.proxy.ProxyServer")
public static Proxy proxy;
// Genetics module
public static BlockFlower flower;
public static Item seed;
public static ItemFlower flowerItem;
public static Item pollen;
public static Item seed;
public static ItemDictionary database;
// Gardening module
public static BlockPlant plant;
public static ItemTrowel trowelWood;
public static ItemTrowel trowelStone;
public static ItemTrowel trowelIron;
public static ItemTrowel trowelDiamond;
public static ItemTrowel trowelGold;
public static BlockSoil soil;
public static BlockSoil loam;
public static BlockSoil flowerbed;
public static BlockSoil soilNoWeed;
public static BlockSoil loamNoWeed;
public static BlockSoil flowerbedNoWeed;
public static ItemInsulatedTube insulatedTube;
public static BlockCeramic ceramic;
public static BlockStained stained;
public static BlockCeramicPatterned ceramicTile;
public static BlockCeramicBrick ceramicBrick;
public static ItemSoilMeter soilMeter;
public static ItemInsulatedTube insulatedTube;
public static ItemTrowel trowelWood;
public static ItemTrowel trowelStone;
public static ItemTrowel trowelIron;
public static ItemTrowel trowelDiamond;
public static ItemTrowel trowelGold;
public static ItemMisc misc;
public static ItemFlower flowerItem;
public static ItemPigment pigment;
public static ItemClay clay;
public static BlockCeramic ceramic;
public static BlockCeramicPatterned ceramicTile;
public static BlockStained stained;
public static BlockCeramicBrick ceramicBrick;
public Botany() {
Botany.instance = this;
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Mod.EventHandler
@@ -142,118 +149,6 @@ public class Botany extends AbstractMod {
return PacketHandler.class;
}
@SubscribeEvent
public void onShearFlower(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
return;
}
if (event.entityPlayer != null && event.entityPlayer.getHeldItem() != null
&& event.entityPlayer.getHeldItem().getItem() == Items.shears) {
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (tile instanceof TileEntityFlower tileFlower) {
tileFlower.onShear();
event.entityPlayer.getHeldItem().damageItem(1, event.entityPlayer);
}
}
if (event.entityPlayer != null && event.entityPlayer.getHeldItem() != null
&& event.entityPlayer.getHeldItem().getItem() == Botany.pollen) {
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (tile instanceof TileEntityFlower tileFlower) {
IFlower pollen = BotanyCore.getFlowerRoot().getMember(event.entityPlayer.getHeldItem());
if (pollen != null && tileFlower.canMateWith(pollen)) {
tileFlower.mateWith(pollen);
if (!event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem = event.entityPlayer.getHeldItem();
heldItem.stackSize--;
}
}
}
}
}
@SubscribeEvent
public void onFertiliseSoil(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK || event.world == null) {
return;
}
if (event.entityPlayer == null || event.entityPlayer.getHeldItem() == null) {
return;
}
int y = event.y;
Block block = event.world.getBlock(event.x, y, event.z);
if (!Gardening.isSoil(block)) {
block = event.world.getBlock(event.x, --y, event.z);
}
if (!Gardening.isSoil(block)) {
return;
}
IBlockSoil soil = (IBlockSoil) block;
if (Gardening.isNutrientFertiliser(event.entityPlayer.getHeldItem())
&& soil.getType(event.world, event.x, y, event.z) != EnumSoilType.FLOWERBED) {
EnumSoilType type = soil.getType(event.world, event.x, y, event.z);
int next = Math.min(type.ordinal() + Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 2);
if (soil.fertilise(event.world, event.x, y, event.z, EnumSoilType.values()[next])
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem = event.entityPlayer.getHeldItem();
heldItem.stackSize--;
return;
}
}
if (Gardening.isAcidFertiliser(event.entityPlayer.getHeldItem())
&& soil.getPH(event.world, event.x, y, event.z) != EnumAcidity.ACID) {
EnumAcidity pH = soil.getPH(event.world, event.x, y, event.z);
int next = Math.max(pH.ordinal() - Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 0);
if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.values()[next])
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem2 = event.entityPlayer.getHeldItem();
heldItem2.stackSize--;
return;
}
}
if (Gardening.isAlkalineFertiliser(event.entityPlayer.getHeldItem())
&& soil.getPH(event.world, event.x, y, event.z) != EnumAcidity.ALKALINE) {
EnumAcidity pH = soil.getPH(event.world, event.x, y, event.z);
int next = Math.min(pH.ordinal() + Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 2);
if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.values()[next])
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem3 = event.entityPlayer.getHeldItem();
heldItem3.stackSize--;
return;
}
}
if (Gardening.isWeedkiller(event.entityPlayer.getHeldItem())
&& Gardening.addWeedKiller(event.world, event.x, y, event.z)
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem4 = event.entityPlayer.getHeldItem();
heldItem4.stackSize--;
}
}
@SubscribeEvent
public void plantVanilla(BlockEvent.PlaceEvent event) {
World world = event.world;
int x = event.x;
int y = event.y;
int z = event.z;
Block block = world.getBlock(x, y - 1, z);
if (!(block instanceof IBlockSoil)) {
return;
}
IFlower flower = BotanyCore.getFlowerRoot().getConversion(event.itemInHand);
if (flower != null) {
Gardening.plant(world, x, y, z, flower, event.player.getGameProfile());
}
}
@Deprecated
public void onPlantVanilla(PlayerInteractEvent event) {
if (!BinnieCore.proxy.isSimulating(event.world)
@@ -287,22 +182,6 @@ public class Botany extends AbstractMod {
}
}
@SubscribeEvent
public void onBonemeal(BonemealEvent event) {
Block block = event.world.getBlock(event.x, event.y, event.z);
if (Gardening.isSoil(block)) {
IBlockSoil soil = (IBlockSoil) block;
if (soil.fertilise(event.world, event.x, event.y, event.z, EnumSoilType.LOAM)) {
event.setResult(Event.Result.ALLOW);
}
}
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (tile instanceof TileEntityFlower && ((TileEntityFlower) tile).onBonemeal()) {
event.setResult(Event.Result.ALLOW);
}
}
@Mod.EventHandler
public void onIMC(FMLInterModComms.IMCEvent event) {
for (FMLInterModComms.IMCMessage message : event.getMessages()) {
@@ -333,4 +212,138 @@ public class Botany extends AbstractMod {
super(Botany.instance);
}
}
public static class EventHandler {
@SubscribeEvent
public void onShearFlower(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
return;
}
if (event.entityPlayer != null && event.entityPlayer.getHeldItem() != null
&& event.entityPlayer.getHeldItem().getItem() == Items.shears) {
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (tile instanceof TileEntityFlower tileFlower) {
tileFlower.onShear();
event.entityPlayer.getHeldItem().damageItem(1, event.entityPlayer);
}
}
if (event.entityPlayer != null && event.entityPlayer.getHeldItem() != null
&& event.entityPlayer.getHeldItem().getItem() == Botany.pollen) {
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (tile instanceof TileEntityFlower tileFlower) {
IFlower pollen = BotanyCore.getFlowerRoot().getMember(event.entityPlayer.getHeldItem());
if (pollen != null && tileFlower.canMateWith(pollen)) {
tileFlower.mateWith(pollen);
if (!event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem = event.entityPlayer.getHeldItem();
heldItem.stackSize--;
}
}
}
}
}
@SubscribeEvent
public void onFertiliseSoil(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK || event.world == null) {
return;
}
if (event.entityPlayer == null || event.entityPlayer.getHeldItem() == null) {
return;
}
int y = event.y;
Block block = event.world.getBlock(event.x, y, event.z);
if (!Gardening.isSoil(block)) {
block = event.world.getBlock(event.x, --y, event.z);
}
if (!Gardening.isSoil(block)) {
return;
}
IBlockSoil soil = (IBlockSoil) block;
if (Gardening.isNutrientFertiliser(event.entityPlayer.getHeldItem())
&& soil.getType(event.world, event.x, y, event.z) != EnumSoilType.FLOWERBED) {
EnumSoilType type = soil.getType(event.world, event.x, y, event.z);
int next = Math
.min(type.ordinal() + Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 2);
if (soil.fertilise(event.world, event.x, y, event.z, EnumSoilType.values()[next])
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem = event.entityPlayer.getHeldItem();
heldItem.stackSize--;
return;
}
}
if (Gardening.isAcidFertiliser(event.entityPlayer.getHeldItem())
&& soil.getPH(event.world, event.x, y, event.z) != EnumAcidity.ACID) {
EnumAcidity pH = soil.getPH(event.world, event.x, y, event.z);
int next = Math
.max(pH.ordinal() - Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 0);
if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.values()[next])
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem2 = event.entityPlayer.getHeldItem();
heldItem2.stackSize--;
return;
}
}
if (Gardening.isAlkalineFertiliser(event.entityPlayer.getHeldItem())
&& soil.getPH(event.world, event.x, y, event.z) != EnumAcidity.ALKALINE) {
EnumAcidity pH = soil.getPH(event.world, event.x, y, event.z);
int next = Math
.min(pH.ordinal() + Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 2);
if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.values()[next])
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem3 = event.entityPlayer.getHeldItem();
heldItem3.stackSize--;
return;
}
}
if (Gardening.isWeedkiller(event.entityPlayer.getHeldItem())
&& Gardening.addWeedKiller(event.world, event.x, y, event.z)
&& !event.entityPlayer.capabilities.isCreativeMode) {
ItemStack heldItem4 = event.entityPlayer.getHeldItem();
heldItem4.stackSize--;
}
}
@SubscribeEvent
public void plantVanilla(BlockEvent.PlaceEvent event) {
World world = event.world;
int x = event.x;
int y = event.y;
int z = event.z;
Block block = world.getBlock(x, y - 1, z);
if (!(block instanceof IBlockSoil)) {
return;
}
IFlower flower = BotanyCore.getFlowerRoot().getConversion(event.itemInHand);
if (flower != null) {
Gardening.plant(world, x, y, z, flower, event.player.getGameProfile());
}
}
@SubscribeEvent
public void onBonemeal(BonemealEvent event) {
Block block = event.world.getBlock(event.x, event.y, event.z);
if (Gardening.isSoil(block)) {
IBlockSoil soil = (IBlockSoil) block;
if (soil.fertilise(event.world, event.x, event.y, event.z, EnumSoilType.LOAM)) {
event.setResult(Event.Result.ALLOW);
}
}
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (tile instanceof TileEntityFlower && ((TileEntityFlower) tile).onBonemeal()) {
event.setResult(Event.Result.ALLOW);
}
}
}
}
@@ -167,7 +167,16 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa
@Override
@SideOnly(Side.CLIENT)
public int getRenderColor(int meta) {
return colorMultiplier(meta);
final BlockType type = this.getType(meta);
if (!MultipassBlockRenderer.isRendering()) {
return type.color1.getColor(false);
}
final int layer = MultipassBlockRenderer.getLayer();
if (layer == 0) return 0xffffff;
if (layer == 1) return type.color1.getColor(false);
if (layer == 2) return type.color2.getColor(false);
return 0xffffff;
}
@Override
@@ -34,6 +34,7 @@ public class BlockStained extends Block implements IBlockMetadata {
public BlockStained() {
super(Material.glass);
setHardness(0.3f);
setCreativeTab(CreativeTabBotany.instance);
setBlockName("stained");
}
@@ -1,5 +1,7 @@
package binnie.botany.flower;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.block.Block;
@@ -39,6 +41,8 @@ public abstract class ItemBotany extends Item {
setCreativeTab(CreativeTabBotany.instance);
setUnlocalizedName(name);
hasSubtypes = true;
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,5 +1,7 @@
package binnie.botany.flower;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -25,6 +27,8 @@ public class ItemInsulatedTube extends Item {
setUnlocalizedName("insulatedTube");
setCreativeTab(CreativeTabBotany.instance);
setHasSubtypes(true);
registerItem(this, getUnlocalizedName().substring(5));
}
public static ItemStack getInsulateStack(ItemStack stack) {
@@ -1,5 +1,7 @@
package binnie.botany.gardening;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
@@ -28,6 +30,8 @@ public class ItemSoilMeter extends Item {
setCreativeTab(CreativeTabBotany.instance);
setUnlocalizedName("soilMeter");
setMaxStackSize(1);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,5 +1,7 @@
package binnie.botany.gardening;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
@@ -28,6 +30,8 @@ public class ItemTrowel extends Item {
setCreativeTab(CreativeTabBotany.instance);
setUnlocalizedName("trowel" + material);
locName = "trowel" + material;
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -12,7 +12,6 @@ import net.minecraftforge.oredict.RecipeSorter;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import binnie.Binnie;
import binnie.botany.Botany;
import binnie.botany.CreativeTabBotany;
import binnie.botany.api.EnumAcidity;
@@ -37,6 +36,7 @@ import binnie.core.block.ItemMetadata;
import binnie.core.block.ItemMetadataRenderer;
import binnie.core.block.MultipassItemRenderer;
import binnie.core.block.TileEntityMetadata;
import binnie.core.item.ItemMisc;
import cpw.mods.fml.common.registry.GameRegistry;
public class ModuleGardening implements IInitializable {
@@ -75,7 +75,7 @@ public class ModuleGardening implements IInitializable {
Botany.trowelIron = new ItemTrowel(Item.ToolMaterial.IRON, "Iron");
Botany.trowelDiamond = new ItemTrowel(Item.ToolMaterial.EMERALD, "Diamond");
Botany.trowelGold = new ItemTrowel(Item.ToolMaterial.GOLD, "Gold");
Botany.misc = Binnie.Item.registerMiscItems(BotanyItems.values(), CreativeTabBotany.instance);
Botany.misc = new ItemMisc(CreativeTabBotany.instance, BotanyItems.values());
Botany.pigment = new ItemPigment();
Botany.clay = new ItemClay();
@@ -1,5 +1,7 @@
package binnie.botany.genetics;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -25,6 +27,8 @@ public class ItemDictionary extends Item {
setCreativeTab(CreativeTabBotany.instance);
setUnlocalizedName("database");
setMaxStackSize(1);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,5 +1,7 @@
package binnie.botany.items;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -22,6 +24,8 @@ public class ItemClay extends Item {
setUnlocalizedName("clay");
setHasSubtypes(true);
setCreativeTab(CreativeTabBotany.instance);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,5 +1,7 @@
package binnie.botany.items;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -22,6 +24,8 @@ public class ItemPigment extends Item {
setUnlocalizedName("pigment");
setHasSubtypes(true);
setCreativeTab(CreativeTabBotany.instance);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
+1 -42
View File
@@ -1,15 +1,9 @@
package binnie.core;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import net.minecraftforge.common.MinecraftForge;
import binnie.core.gui.IBinnieGUID;
import binnie.core.mod.parser.FieldParser;
import binnie.core.network.BinniePacketHandler;
import binnie.core.network.IPacketID;
import binnie.core.network.IPacketProvider;
@@ -22,14 +16,11 @@ import cpw.mods.fml.relauncher.Side;
public abstract class AbstractMod implements IPacketProvider, IInitializable {
private SimpleNetworkWrapper wrapper;
private final LinkedHashSet<Field> fields;
protected final List<IInitializable> modules;
public AbstractMod() {
fields = new LinkedHashSet<>();
modules = new ArrayList<>();
BinnieCore.registerMod(this);
MinecraftForge.EVENT_BUS.register(this);
}
public boolean isActive() {
@@ -68,22 +59,6 @@ public abstract class AbstractMod implements IPacketProvider, IInitializable {
for (IInitializable module : modules) {
module.preInit();
}
// TODO what does it mean?
Collections.addAll(fields, getClass().getFields());
for (Class<?> cls : getClass().getClasses()) {
Collections.addAll(fields, getClass().getFields());
}
for (IInitializable module : modules) {
Collections.addAll(fields, module.getClass().getFields());
}
for (Field field4 : fields) {
try {
FieldParser.preInitParse(field4, this);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
@Override
@@ -99,14 +74,6 @@ public abstract class AbstractMod implements IPacketProvider, IInitializable {
for (IInitializable module : modules) {
module.init();
}
for (Field field : fields) {
try {
FieldParser.initParse(field, this);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
@Override
@@ -119,18 +86,10 @@ public abstract class AbstractMod implements IPacketProvider, IInitializable {
for (IInitializable module : modules) {
module.postInit();
}
for (Field field : fields) {
try {
FieldParser.postInitParse(field, this);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
protected void addModule(IInitializable init) {
modules.add(init);
MinecraftForge.EVENT_BUS.register(init);
init.registerEventHandler();
}
}
+36 -31
View File
@@ -5,13 +5,14 @@ import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraftforge.client.event.TextureStitchEvent;
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;
@@ -22,8 +23,6 @@ import binnie.core.liquid.FluidContainer;
import binnie.core.liquid.ItemFluidContainer;
import binnie.core.machines.MachineGroup;
import binnie.core.machines.storage.ModuleStorage;
import binnie.core.mod.parser.FieldParser;
import binnie.core.mod.parser.ItemParser;
import binnie.core.network.BinnieCorePacketID;
import binnie.core.network.BinniePacketHandler;
import binnie.core.network.IPacketID;
@@ -69,6 +68,10 @@ public class BinnieCore extends AbstractMod {
public static ItemGenesis genesis;
public static ItemFieldKit fieldKit;
public BinnieCore() {
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
for (ManagerBase baseManager : Binnie.Managers) {
@@ -76,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());
@@ -106,7 +111,6 @@ public class BinnieCore extends AbstractMod {
Item item = new ItemFluidContainer(container);
GameRegistry.registerItem(item, item.getUnlocalizedName().substring(5));
}
FieldParser.parsers.add(new ItemParser());
super.preInit();
}
@@ -161,23 +165,6 @@ public class BinnieCore extends AbstractMod {
return list;
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void handleSpeciesDiscovered(ForestryEvent.SpeciesDiscovered event) {
try {
EntityPlayerMP player = MinecraftServer.getServer().getConfigurationManager()
.func_152612_a(event.username.getName());
if (player == null) {
return;
}
event.tracker.synchToPlayer(player);
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("species", event.species.getUID());
} catch (Exception ex) {
// ignored
}
}
@Override
public String getChannel() {
return "BIN";
@@ -198,15 +185,6 @@ public class BinnieCore extends AbstractMod {
return BinnieCorePacketID.values();
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void handleTextureRemap(TextureStitchEvent.Pre event) {
if (event.map.getTextureType() == 0) {
Binnie.Liquid.reloadIcons(event.map);
}
Binnie.Resource.registerIcons(event.map, event.map.getTextureType());
}
@Override
protected Class<? extends BinniePacketHandler> getPacketHandler() {
return PacketHandler.class;
@@ -223,4 +201,31 @@ public class BinnieCore extends AbstractMod {
super(instance);
}
}
public static class EventHandler {
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void handleSpeciesDiscovered(ForestryEvent.SpeciesDiscovered event) {
try {
EntityPlayerMP player = MinecraftServer.getServer().getConfigurationManager()
.func_152612_a(event.username.getName());
if (player == null) {
return;
}
event.tracker.synchToPlayer(player);
} catch (Exception ex) {
// ignored
}
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void handleTextureRemap(TextureStitchEvent.Pre event) {
if (event.map.getTextureType() == 0) {
Binnie.Liquid.reloadIcons(event.map);
}
Binnie.Resource.registerIcons(event.map, event.map.getTextureType());
}
}
}
@@ -7,4 +7,6 @@ public interface IInitializable {
void init();
void postInit();
default void registerEventHandler() {}
}
@@ -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,30 +24,67 @@ public class MultipassBlockRenderer implements ISimpleBlockRenderingHandler {
return MultipassBlockRenderer.layer;
}
public static boolean isRendering() {
return MultipassBlockRenderer.rendering;
}
private static int getPassesSafe(Block block) {
try {
return ((IMultipassBlock) block).getNumberOfPasses();
} catch (Throwable t) {
return 1;
}
}
private static int getColorSafe(Block block, int meta) {
try {
if (block instanceof IMultipassBlock) {
try {
java.lang.reflect.Method m = block.getClass().getMethod("colorMultiplier", int.class);
Object out = m.invoke(block, Integer.valueOf(meta));
if (out instanceof Integer) {
return ((Integer) out).intValue();
}
} catch (Throwable ignored) {}
}
return block.getRenderColor(meta);
} catch (Throwable t) {
return 16777215;
}
}
@Override
public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {
block.setBlockBoundsForItemRender();
renderer.setRenderBoundsFromBlock(block);
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
MultipassBlockRenderer.rendering = true;
MultipassBlockRenderer.layer = 0;
while (MultipassBlockRenderer.layer < ((IMultipassBlock) block).getNumberOfPasses()) {
while (MultipassBlockRenderer.layer < getPassesSafe(block)) {
renderItem(block, renderer, meta);
MultipassBlockRenderer.layer++;
}
MultipassBlockRenderer.layer = 0;
MultipassBlockRenderer.rendering = false;
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
RenderBlocks renderer) {
boolean r = true;
MultipassBlockRenderer.rendering = true;
MultipassBlockRenderer.layer = 0;
while (MultipassBlockRenderer.layer < ((IMultipassBlock) block).getNumberOfPasses()) {
r = renderer.renderStandardBlock(block, x, y, z);
while (MultipassBlockRenderer.layer < getPassesSafe(block)) {
try {
r = renderer.renderStandardBlock(block, x, y, z);
} catch (Throwable t) {
return false;
}
MultipassBlockRenderer.layer++;
}
MultipassBlockRenderer.layer = 0;
MultipassBlockRenderer.rendering = false;
return r;
}
@@ -61,7 +99,7 @@ public class MultipassBlockRenderer implements ISimpleBlockRenderingHandler {
}
public void renderItem(Block block, RenderBlocks renderer, int meta) {
setColor(((IMultipassBlock) block).colorMultiplier(meta));
setColor(getColorSafe(block, meta));
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.setNormal(0.0f, -1.0f, 0.0f);
@@ -76,12 +76,14 @@ public class TileEntityMetadata extends TileEntity {
}
public static ItemStack getItemStack(Block block, int damage) {
NBTTagCompound tag = new NBTTagCompound();
tag.setInteger("meta", damage);
ItemStack item = new ItemStack(block, 1, 0);
item.setItemDamage(Math.min(damage, 16387));
item.setTagCompound(tag);
if (0 <= damage && damage < Short.MAX_VALUE) {
item.setItemDamage(damage);
} else {
NBTTagCompound tag = new NBTTagCompound();
tag.setInteger("meta", damage);
item.setTagCompound(tag);
}
return item;
}
@@ -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;
}
@@ -91,7 +91,7 @@ public interface IWidget {
void callEvent(Event event);
void recieveEvent(Event event);
void receiveEvent(Event event);
void onUpdateClient();
@@ -235,11 +235,11 @@ public class Widget implements IWidget {
@Override
public void callEvent(Event event) {
getSuperParent().recieveEvent(event);
getSuperParent().receiveEvent(event);
}
@Override
public void recieveEvent(Event event) {
public void receiveEvent(Event event) {
for (EventHandler handler : globalEventHandlers) {
if (handler.handles(event)) {
handler.onEvent(event);
@@ -248,7 +248,7 @@ public class Widget implements IWidget {
try {
for (IWidget child : getWidgets()) {
child.recieveEvent(event);
child.receiveEvent(event);
}
} catch (ConcurrentModificationException e) {
// ignored
@@ -12,6 +12,7 @@ import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import binnie.Binnie;
import binnie.core.AbstractMod;
@@ -33,6 +34,7 @@ import binnie.core.craftgui.resource.minecraft.CraftGUITexture;
import binnie.core.craftgui.resource.minecraft.PaddedTexture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.machines.inventory.SlotValidator;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extrabees.core.ExtraBeeTexture;
import binnie.extrabees.gui.ExtraBeeGUITexture;
@@ -113,20 +115,26 @@ public class WindowFieldKit extends Window {
@Override
public void initialiseClient() {
final NBTTagList actions = new NBTTagList();
setTitle(getName());
CraftGUI.render.stylesheet(new StyleSheetPunnett());
getWindowInventory().createSlot(0);
getWindowInventory().createSlot(1);
setupValidators();
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
IPoint handGlass = new IPoint(16.0f, 32.0f);
GlassControl = new ControlImage(
this,
handGlass.x(),
handGlass.y(),
new StandardTexture(0, 160, 96, 96, ExtraBeeTexture.GUIPunnett));
new ControlSlot(this, handGlass.x() + 54.0f, handGlass.y() + 26.0f).assign(InventoryType.Window, 0);
new ControlSlot(this, 208.0f, 8.0f).assign(InventoryType.Window, 1);
new ControlSlot(this, handGlass.x() + 54.0f, handGlass.y() + 26.0f).assign(actions, InventoryType.Window, 0);
new ControlSlot(this, 208.0f, 8.0f).assign(actions, InventoryType.Window, 1);
MessageCraftGUI.sendToServer(actions);
(text = new ControlText(this, new IPoint(232.0f, 13.0f), I18N.localise("binniecore.gui.tooltip.paper")))
.setColor(0x222222);
(text = new ControlText(this, new IArea(0.0f, 120.0f, w(), 24.0f), "", TextJustification.MIDDLE_CENTER))
@@ -285,8 +293,8 @@ public class WindowFieldKit extends Window {
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.recieveGuiNBT(side, player, name, nbt);
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.receiveGuiNBT(side, player, name, nbt);
if (side != Side.SERVER || !name.equals("analyse")) {
return;
}
@@ -63,7 +63,7 @@ public class WindowGenesis extends Window {
@Override
public void initialiseClient() {
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).createAndRegister();
setTitle(getName());
ControlTabBar<BreedingSystem> tabSystems = new BreedingSystemControlTabBar();
@@ -175,8 +175,8 @@ public class WindowGenesis extends Window {
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.recieveGuiNBT(side, player, name, nbt);
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.receiveGuiNBT(side, player, name, nbt);
if (side == Side.SERVER && name.equals("genesis")) {
ItemStack stack = ItemStack.loadItemStackFromNBT(nbt);
InventoryPlayer playerInv = player.inventory;
@@ -1,5 +1,7 @@
package binnie.core.craftgui.minecraft;
import static net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -7,12 +9,14 @@ import java.util.Map;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import com.mojang.authlib.GameProfile;
@@ -36,43 +40,71 @@ import cpw.mods.fml.relauncher.Side;
public class ContainerCraftGUI extends Container {
// Action type is one of the action constants below
public final static String ACTION_TYPE = "type";
// Action constants
public final static String ACTION_BATCH = "batch";
public final static String SLOT_REG = "slot-reg";
public final static String TANK_CLICK = "tank-click";
public final static String TANK_UPDATE = "tank-update-";
public final static String POWER_UPDATE = "power-update";
public final static String PROCESS_UPDATE = "process-update";
public final static String ERROR_UPDATE = "error-update";
public final static String MOUSE_OVER_SLOT = "mouse-over-slot";
public final static String SHIFT_CLICK_INFO = "shift-click-info";
// Error type is one of the error constants below
public final static String ERROR_TYPE = "type";
// Error constants
public static final byte CANNOT_WORK = (byte) 0;
public static final byte CANNOT_PROGRESS = (byte) 1;
// Slot constants
public static final String SLOT_TYPE = "t";
public static final String SLOT_INDEX = "i";
public static final String SLOT_NUMBER = "n";
// Uncategorized constants
public static final String ACTIONS = "actions";
private static final String USERNAME = "username";
private static final String SLOT_ID = "id";
private static final String SLOT = "slot";
private static final String SLOTS = "slots";
private static final String TANK = "tank";
private static final String ORIGIN = "origin";
private static final String NAME = "name";
private final Window window;
private final Map<String, NBTTagCompound> syncedNBT;
private final Map<String, NBTTagCompound> sentNBT;
private final Map<Integer, TankInfo> syncedTanks;
private PowerInfo syncedPower;
private ProcessInfo syncedProcess;
private int errorType;
private ErrorState error;
private int mousedOverSlotNumber;
private final Map<String, NBTTagCompound> syncedNBT = new HashMap<>();
private final Map<String, NBTTagCompound> sentNBT = new HashMap<>();
private final Map<Integer, TankInfo> syncedTanks = new HashMap<>();
private PowerInfo syncedPower = new PowerInfo();
private ProcessInfo syncedProcess = new ProcessInfo();
private int errorType = 0;
private ErrorState error = null;
private int mousedOverSlotNumber = -1;
public ContainerCraftGUI(Window window) {
this.window = window;
syncedNBT = new HashMap<>();
sentNBT = new HashMap<>();
syncedTanks = new HashMap<>();
syncedPower = new PowerInfo();
syncedProcess = new ProcessInfo();
errorType = 0;
error = null;
mousedOverSlotNumber = -1;
IMachine machine = Machine.getMachine(window.getInventory());
if (getSide() != Side.SERVER) {
return;
}
if (!window.isServer()) return;
// WARNING: The client side expects `ArrayList` and the server expects `ListMap`
inventoryItemStacks = new ListMap<>();
inventorySlots = new ListMap<>();
if (machine == null) {
return;
}
IInventory entityInventory = window.getInventory();
IMachine machine = Machine.getMachine(entityInventory);
if (machine == null) return;
GameProfile user = machine.getOwner();
if (user != null) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("username", user.getName());
sendNBTToClient("username", nbt);
}
if (user == null) return;
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString(USERNAME, user.getName());
sendNBTToClient(USERNAME, nbt);
}
@Override
@@ -86,54 +118,47 @@ public class ContainerCraftGUI extends Container {
@Override
public Slot getSlot(int index) {
if (index < 0 || index >= inventorySlots.size()) {
return null;
}
return inventorySlots.get(index);
return index < 0 || index >= inventorySlots.size() ? null : inventorySlots.get(index);
}
@Override
public void putStackInSlot(int index, ItemStack stack) {
if (getSlot(index) != null) {
getSlot(index).putStack(stack);
}
final Slot slot = getSlot(index);
if (slot != null) slot.putStack(stack);
}
@Override
public void putStacksInSlots(ItemStack[] par1ArrayOfItemStack) {
for (int i = 0; i < par1ArrayOfItemStack.length; ++i) {
if (getSlot(i) != null) {
getSlot(i).putStack(par1ArrayOfItemStack[i]);
}
final Slot slot = getSlot(i);
if (slot != null) slot.putStack(par1ArrayOfItemStack[i]);
}
}
@Override
public void onContainerClosed(EntityPlayer player) {
super.onContainerClosed(player);
WindowInventory inventory = window.getWindowInventory();
for (int i = 0; i < inventory.getSizeInventory(); ++i) {
if (!inventory.dispenseOnClose(i)) {
continue;
}
WindowInventory windowInventory = window.getWindowInventory();
InventoryPlayer playerInventory = player.inventory;
ItemStack stack = inventory.getStackInSlot(i);
if (stack == null) {
continue;
}
for (int i = 0; i < windowInventory.getSizeInventory(); ++i) {
if (!windowInventory.dispenseOnClose(i)) continue;
stack = new TransferRequest(stack, player.inventory).transfer(true);
if (stack != null) {
player.dropPlayerItemWithRandomChoice(stack, false);
}
final ItemStack stack = windowInventory.getStackInSlot(i);
if (stack == null) continue;
final ItemStack newStack = new TransferRequest(stack, playerInventory).transfer(true);
if (newStack == null) continue;
player.dropPlayerItemWithRandomChoice(newStack, false);
}
}
@Override
public ItemStack slotClick(int slotNum, int mouseButton, int modifier, EntityPlayer player) {
Slot slot = getSlot(slotNum);
if (slot instanceof CustomSlot && ((CustomSlot) slot).handleClick()) {
((CustomSlot) slot).onSlotClick(this, mouseButton, modifier, player);
if (slot instanceof CustomSlot customSlot && customSlot.handleClick()) {
customSlot.onSlotClick(this, mouseButton, modifier, player);
return player.inventory.getItemStack();
}
return super.slotClick(slotNum, mouseButton, modifier, player);
@@ -151,45 +176,40 @@ public class ContainerCraftGUI extends Container {
}
sentNBT.clear();
}
IInventory inventory = window.getInventory();
return inventory == null || inventory.isUseableByPlayer(player);
IInventory entityInventory = window.getInventory();
return entityInventory == null || entityInventory.isUseableByPlayer(player);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int slotID) {
return shiftClick(player, slotID);
shiftClick(player, slotID);
return null;
}
private ItemStack shiftClick(EntityPlayer player, int index) {
private void shiftClick(EntityPlayer player, int index) {
TransferRequest request = getShiftClickRequest(player, index);
if (request == null) {
return null;
}
if (request == null) return;
ItemStack stack = request.transfer(true);
Slot shiftClickedSlot = inventorySlots.get(index);
shiftClickedSlot.putStack(stack);
shiftClickedSlot.onSlotChanged();
return null;
}
private TransferRequest getShiftClickRequest(EntityPlayer player, int index) {
if (index < 0) {
return null;
}
if (index < 0) return null;
Slot shiftClickedSlot = (Slot) inventorySlots.get(index);
Slot shiftClickedSlot = inventorySlots.get(index);
ItemStack itemstack = null;
if (shiftClickedSlot.getHasStack()) {
itemstack = shiftClickedSlot.getStack().copy();
}
IInventory playerInventory = player.inventory;
IInventory containerInventory = window.getInventory();
IInventory entityInventory = window.getInventory();
IInventory windowInventory = window.getWindowInventory();
IInventory fromPlayer = (containerInventory == null) ? windowInventory : containerInventory;
IInventory fromPlayer = (entityInventory == null) ? windowInventory : entityInventory;
int[] target = new int[36];
for (int i = 0; i < 36; ++i) {
for (int i = 0; i < target.length; ++i) {
target[i] = i;
}
@@ -201,108 +221,116 @@ public class ContainerCraftGUI extends Container {
.setTargetSlots(target);
}
if (window instanceof IWindowAffectsShiftClick) {
((IWindowAffectsShiftClick) window).alterRequest(request);
if (window instanceof IWindowAffectsShiftClick iWindowAffectsShiftClick) {
iWindowAffectsShiftClick.alterRequest(request);
}
return request;
}
@SuppressWarnings("UnusedReturnValue")
public ItemStack tankClick(EntityPlayer player, int slotID) {
if (player.inventory.getItemStack() == null) {
return null;
}
if (player.inventory.getItemStack() == null) return null;
ItemStack heldItem = player.inventory.getItemStack().copy();
heldItem = new TransferRequest(heldItem, window.getInventory()).setOrigin(player.inventory)
.setTargetSlots(new int[0]).setTargetTanks(new int[] { slotID }).transfer(true);
IInventory entityInventory = window.getInventory();
heldItem = new TransferRequest(heldItem, entityInventory).setOrigin(player.inventory).setTargetSlots(new int[0])
.setTargetTanks(new int[] { slotID }).transfer(true);
player.inventory.setItemStack(heldItem);
if (player instanceof EntityPlayerMP) {
((EntityPlayerMP) player).updateHeldItem();
if (player instanceof EntityPlayerMP entityPlayerMP) {
entityPlayerMP.updateHeldItem();
}
return heldItem;
}
public boolean handleNBT(Side side, EntityPlayer player, String name, NBTTagCompound action) {
if (side == Side.SERVER) {
if (name.equals("tank-click")) {
tankClick(player, action.getByte("id"));
}
if (name.equals("slot-reg")) {
int type = action.getByte("t");
int index = action.getShort("i");
int slotNumber = action.getShort("n");
getOrCreateSlot(InventoryType.values()[type % 4], index, slotNumber);
public void handleNBT(Side side, EntityPlayer player, NBTTagCompound action) {
final String actionType = action.getString(ACTION_TYPE);
for (ICrafting crafterObject : crafters) {
crafterObject.sendContainerAndContentsToPlayer(this, getInventory());
if (side == Side.SERVER) {
switch (actionType) {
case TANK_CLICK -> tankClick(player, action.getByte(SLOT_ID));
case SLOT_REG -> {
final int slotType = action.getByte(SLOT_TYPE);
final int slotIndex = action.getShort(SLOT_INDEX);
final int slotNumber = action.getShort(SLOT_NUMBER);
createSlot(InventoryType.values()[slotType % 4], slotIndex, slotNumber);
for (ICrafting crafterObject : crafters) {
crafterObject.sendContainerAndContentsToPlayer(this, getInventory());
}
}
}
}
if (name.contains("tank-update")) {
onTankUpdate(action);
} else if (name.equals("power-update")) {
onPowerUpdate(action);
} else if (name.equals("process-update")) {
onProcessUpdate(action);
} else if (name.equals("error-update")) {
onErrorUpdate(action);
} else if (name.equals("mouse-over-slot")) {
onMouseOverSlot(player, action);
} else if (name.equals("shift-click-info")) {
onRecieveShiftClickHighlights(player, action);
switch (actionType) {
case POWER_UPDATE -> onPowerUpdate(action);
case PROCESS_UPDATE -> onProcessUpdate(action);
case ERROR_UPDATE -> onErrorUpdate(action);
case MOUSE_OVER_SLOT -> onMouseOverSlot(player, action);
case SHIFT_CLICK_INFO -> onReceiveShiftClickHighlights(action);
default -> {
if (actionType.contains(TANK_UPDATE)) onTankUpdate(action);
}
}
return false;
}
@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
ITankMachine tanks = Machine.getInterface(ITankMachine.class, window.getInventory());
IPoweredMachine powered = Machine.getInterface(IPoweredMachine.class, window.getInventory());
IErrorStateSource error = Machine.getInterface(IErrorStateSource.class, window.getInventory());
IProcess process = Machine.getInterface(IProcess.class, window.getInventory());
if (tanks != null && window.isServer()) {
for (int i = 0; i < tanks.getTankInfos().length; ++i) {
TankInfo tank = tanks.getTankInfos()[i];
if (!getTankInfo(i).equals(tank)) {
syncedNBT.put("tank-update-" + i, createTankNBT(i, tank));
syncedTanks.put(i, tank);
}
IInventory entityInventory = window.getInventory();
ITankMachine tanks = Machine.getInterface(ITankMachine.class, entityInventory);
IPoweredMachine powered = Machine.getInterface(IPoweredMachine.class, entityInventory);
IErrorStateSource error = Machine.getInterface(IErrorStateSource.class, entityInventory);
IProcess process = Machine.getInterface(IProcess.class, entityInventory);
if (window.isServer() && tanks != null) {
final TankInfo[] tankInfos = tanks.getTankInfos();
for (int i = 0; i < tankInfos.length; ++i) {
final TankInfo tank = tankInfos[i];
if (this.getTankInfo(i).equals(tank)) continue;
syncedNBT.put(TANK_UPDATE + i, createTankNBT(i, tank));
syncedTanks.put(i, tank);
}
}
if (powered != null && window.isServer()) {
syncedNBT.put("power-update", createPowerNBT(powered.getPowerInfo()));
}
if (process != null && window.isServer()) {
syncedNBT.put("process-update", createProcessNBT(process.getInfo()));
}
if (error != null && window.isServer()) {
syncedNBT.put("error-update", createErrorNBT(error));
if (window.isServer()) {
if (powered != null) syncedNBT.put(POWER_UPDATE, createPowerNBT(powered.getPowerInfo()));
if (process != null) syncedNBT.put(PROCESS_UPDATE, createProcessNBT(process.getInfo()));
if (error != null) syncedNBT.put(ERROR_UPDATE, createErrorNBT(error));
}
INetwork.SendGuiNBT machineSync = Machine.getInterface(INetwork.SendGuiNBT.class, window.getInventory());
if (machineSync != null) {
machineSync.sendGuiNBT(syncedNBT);
}
INetwork.SendGuiNBT machineSync = Machine.getInterface(INetwork.SendGuiNBT.class, entityInventory);
if (machineSync != null) machineSync.sendGuiNBT(syncedNBT);
Map<String, NBTTagCompound> sentThisTime = new HashMap<>();
for (Map.Entry<String, NBTTagCompound> nbt : syncedNBT.entrySet()) {
nbt.getValue().setString("type", nbt.getKey());
boolean shouldSend = true;
NBTTagCompound lastSent = sentNBT.get(nbt.getKey());
if (lastSent != null) {
shouldSend = !lastSent.equals(nbt.getValue());
}
NBTTagList actions = new NBTTagList();
if (shouldSend) {
for (Object crafter : crafters) {
if (crafter instanceof EntityPlayerMP playerMP) {
BinnieCore.proxy.sendToPlayer(new MessageContainerUpdate(nbt.getValue()), playerMP);
}
}
sentThisTime.put(nbt.getKey(), nbt.getValue());
for (Map.Entry<String, NBTTagCompound> entry : syncedNBT.entrySet()) {
final String actionType = entry.getKey();
final NBTTagCompound action = entry.getValue();
final NBTTagCompound actionPrev = sentNBT.get(actionType);
action.setString(ACTION_TYPE, actionType);
if (action.equals(actionPrev)) continue;
actions.appendTag(action);
sentThisTime.put(actionType, action);
}
NBTTagCompound actionsBatch = new NBTTagCompound();
actionsBatch.setString(ACTION_TYPE, ACTION_BATCH);
actionsBatch.setTag(ACTIONS, actions);
for (ICrafting crafter : crafters) {
if (crafter instanceof EntityPlayerMP playerMP) {
final MessageContainerUpdate packet = new MessageContainerUpdate(actionsBatch);
BinnieCore.proxy.sendToPlayer(packet, playerMP);
}
}
@@ -314,10 +342,10 @@ public class ContainerCraftGUI extends Container {
NBTTagCompound nbt = new NBTTagCompound();
ErrorState state = null;
if (error.canWork() != null) {
nbt.setByte("type", (byte) 0);
nbt.setByte(ERROR_TYPE, CANNOT_WORK);
state = error.canWork();
} else if (error.canProgress() != null) {
nbt.setByte("type", (byte) 1);
nbt.setByte(ERROR_TYPE, CANNOT_PROGRESS);
state = error.canProgress();
}
@@ -342,19 +370,20 @@ public class ContainerCraftGUI extends Container {
public NBTTagCompound createTankNBT(int tank, TankInfo tankInfo) {
NBTTagCompound nbt = new NBTTagCompound();
tankInfo.writeToNBT(nbt);
nbt.setByte("tank", (byte) tank);
nbt.setByte(TANK, (byte) tank);
return nbt;
}
public void onTankUpdate(NBTTagCompound nbt) {
int tankID = nbt.getByte("tank");
int tankID = nbt.getByte(TANK);
TankInfo tank = new TankInfo();
tank.readFromNBT(nbt);
syncedTanks.put(tankID, tank);
}
public void onProcessUpdate(NBTTagCompound nbt) {
(syncedProcess = new ProcessInfo()).readFromNBT(nbt);
syncedProcess = new ProcessInfo();
syncedProcess.readFromNBT(nbt);
}
public void onPowerUpdate(NBTTagCompound nbt) {
@@ -375,8 +404,8 @@ public class ContainerCraftGUI extends Container {
}
public void onErrorUpdate(NBTTagCompound nbt) {
errorType = nbt.getByte("type");
if (nbt.hasKey("name")) {
errorType = nbt.getByte(ERROR_TYPE);
if (nbt.hasKey(NAME)) {
error = new ErrorState("", "");
error.readFromNBT(nbt);
} else {
@@ -403,20 +432,18 @@ public class ContainerCraftGUI extends Container {
}
public void setMouseOverSlot(Slot slot) {
if (slot.slotNumber == mousedOverSlotNumber) {
return;
}
if (slot.slotNumber == mousedOverSlotNumber) return;
mousedOverSlotNumber = slot.slotNumber;
ControlSlot.highlighting.get(EnumHighlighting.SHIFT_CLICK).clear();
NBTTagCompound nbt = new NBTTagCompound();
nbt.setShort("slot", (short) slot.slotNumber);
window.sendClientAction("mouse-over-slot", nbt);
nbt.setShort(SLOT, (short) slot.slotNumber);
window.sendClientAction(MOUSE_OVER_SLOT, nbt);
}
private void onMouseOverSlot(EntityPlayer player, NBTTagCompound data) {
int slotnumber = data.getShort("slot");
TransferRequest request = getShiftClickRequest(player, slotnumber);
int slotNumber = data.getShort(SLOT);
TransferRequest request = getShiftClickRequest(player, slotNumber);
if (request == null) {
return;
}
@@ -424,8 +451,8 @@ public class ContainerCraftGUI extends Container {
request.transfer(false);
NBTTagCompound nbt = new NBTTagCompound();
List<Integer> slots = new ArrayList<>();
for (TransferRequest.TransferSlot tslot : request.getInsertedSlots()) {
Slot slot = getSlot(tslot.inventory, tslot.id);
for (TransferRequest.TransferSlot transferSlot : request.getInsertedSlots()) {
Slot slot = getSlot(transferSlot.inventory, transferSlot.id);
if (slot != null) {
slots.add(slot.slotNumber);
}
@@ -436,15 +463,15 @@ public class ContainerCraftGUI extends Container {
array[i] = slots.get(i);
}
nbt.setIntArray("slots", array);
nbt.setShort("origin", (short) slotnumber);
syncedNBT.put("shift-click-info", nbt);
nbt.setIntArray(SLOTS, array);
nbt.setShort(ORIGIN, (short) slotNumber);
syncedNBT.put(SHIFT_CLICK_INFO, nbt);
}
private void onRecieveShiftClickHighlights(EntityPlayer player, NBTTagCompound data) {
private void onReceiveShiftClickHighlights(NBTTagCompound data) {
ControlSlot.highlighting.get(EnumHighlighting.SHIFT_CLICK).clear();
for (int slotnumber : data.getIntArray("slots")) {
ControlSlot.highlighting.get(EnumHighlighting.SHIFT_CLICK).add(slotnumber);
for (int slotIndex : data.getIntArray(SLOTS)) {
ControlSlot.highlighting.get(EnumHighlighting.SHIFT_CLICK).add(slotIndex);
}
}
@@ -458,58 +485,50 @@ public class ContainerCraftGUI extends Container {
return null;
}
public void recieveNBT(Side side, EntityPlayer player, NBTTagCompound action) {
String name = action.getString("type");
if (handleNBT(side, player, name, action)) {
public void receiveNBT(Side side, EntityPlayer player, NBTTagCompound action) {
String actionType = action.getString(ACTION_TYPE);
if (actionType.equals(ACTION_BATCH)) {
NBTTagList actionsBatch = action.getTagList(ACTIONS, TAG_COMPOUND);
for (int i = 0; i < actionsBatch.tagCount(); i++) {
receiveNBT(side, player, actionsBatch.getCompoundTagAt(i));
}
return;
}
window.recieveGuiNBT(getSide(), player, name, action);
INetwork.RecieveGuiNBT machine = Machine.getInterface(INetwork.RecieveGuiNBT.class, window.getInventory());
if (machine != null) {
machine.recieveGuiNBT(getSide(), player, name, action);
}
handleNBT(side, player, action);
window.receiveGuiNBT(getSide(), player, actionType, action);
INetwork.ReceiveGuiNBT machine = Machine.getInterface(INetwork.ReceiveGuiNBT.class, window.getInventory());
if (machine == null) return;
machine.receiveGuiNBT(getSide(), player, actionType, action);
}
public Slot getOrCreateSlot(InventoryType type, int index) {
IInventory inventory = getInventory(type);
Slot slot = getSlot(inventory, index);
public Slot getOrCreateSlot(InventoryType inventoryType, int slotIndex) {
final IInventory inventory = getInventory(inventoryType);
Slot slot = getSlot(inventory, slotIndex);
if (slot == null) {
slot = new CustomSlot(inventory, index);
slot = new CustomSlot(inventory, slotIndex);
addSlotToContainer(slot);
}
NBTTagCompound nbt = new NBTTagCompound();
nbt.setByte("t", (byte) type.ordinal());
nbt.setShort("i", (short) index);
nbt.setShort("n", (short) slot.slotNumber);
window.sendClientAction("slot-reg", nbt);
return slot;
}
protected IInventory getInventory(InventoryType type) {
if (type == InventoryType.Machine) {
return window.getInventory();
}
if (type == InventoryType.Player) {
return window.getPlayer().inventory;
}
if (type == InventoryType.Window) {
return window.getWindowInventory();
}
return null;
return switch (type) {
case Machine -> window.getInventory();
case Player -> window.getPlayer().inventory;
case Window -> window.getWindowInventory();
default -> null;
};
}
private Slot getOrCreateSlot(InventoryType type, int index, int slotNumber) {
IInventory inventory = getInventory(type);
if (inventorySlots.get(slotNumber) != null) {
return null;
}
private void createSlot(InventoryType type, int index, int slotNumber) {
if (inventorySlots.get(slotNumber) != null) return;
IInventory inventory = getInventory(type);
Slot slot = new CustomSlot(inventory, index);
slot.slotNumber = slotNumber;
inventorySlots.add(slotNumber, slot);
inventoryItemStacks.add(slotNumber, null);
return slot;
}
}
@@ -48,7 +48,7 @@ import binnie.core.resource.ResourceType;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public abstract class Window extends TopLevelWidget implements INetwork.RecieveGuiNBT {
public abstract class Window extends TopLevelWidget implements INetwork.ReceiveGuiNBT {
protected float titleButtonLeft;
protected float titleButtonRight;
@@ -291,7 +291,7 @@ public abstract class Window extends TopLevelWidget implements INetwork.RecieveG
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
if (side == Side.CLIENT && name.equals("username")) {
float w = w();
float titleButtonRight = this.titleButtonRight + 16.0f;
@@ -3,9 +3,13 @@ package binnie.core.craftgui.minecraft.control;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.nbt.NBTTagList;
import binnie.core.craftgui.IWidget;
import binnie.core.craftgui.controls.core.Control;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.resource.minecraft.CraftGUITexture;
import binnie.core.network.packet.MessageCraftGUI;
public class ControlPlayerInventory extends Control {
@@ -21,23 +25,24 @@ public class ControlPlayerInventory extends Control {
slots = new ArrayList<>();
for (int row = 0; row < 3; ++row) {
for (int column = 0; column < 9; ++column) {
ControlSlot slot = new ControlSlot(this, (wide ? 58 : 0) + column * 18, row * 18);
ControlSlot slot = new ControlSlot(this, (wide ? 58 : 0) + column * 18, row * 18)
.setSlotTexture(CraftGUITexture.SlotInventory);
slots.add(slot);
}
}
if (wide) {
for (int i1 = 0; i1 < 9; ++i1) {
ControlSlot slot2 = new ControlSlot(this, i1 % 3 * 18, i1 / 3 * 18);
ControlSlot slot2 = new ControlSlot(this, i1 % 3 * 18, i1 / 3 * 18)
.setSlotTexture(CraftGUITexture.SlotInventory);
slots.add(slot2);
}
} else {
for (int i1 = 0; i1 < 9; ++i1) {
ControlSlot slot2 = new ControlSlot(this, i1 * 18, 58.0f);
ControlSlot slot2 = new ControlSlot(this, i1 * 18, 58.0f).setSlotTexture(CraftGUITexture.SlotInventory);
slots.add(slot2);
}
}
create();
}
public ControlPlayerInventory(IWidget parent) {
@@ -49,32 +54,33 @@ public class ControlPlayerInventory extends Control {
slots = new ArrayList<>();
for (int row = 0; row < 6; ++row) {
for (int column = 0; column < 6; ++column) {
ControlSlot slot = new ControlSlot(this, column * 18, row * 18);
ControlSlot slot = new ControlSlot(this, column * 18, row * 18)
.setSlotTexture(CraftGUITexture.SlotInventory);
slots.add(slot);
}
}
create();
}
public void create() {
public ControlPlayerInventory create(NBTTagList actions) {
for (int row = 0; row < 3; ++row) {
for (int column = 0; column < 9; ++column) {
ControlSlot slot = slots.get(column + row * 9);
slot.assign(InventoryType.Player, 9 + column + row * 9);
slot.assign(actions, InventoryType.Player, 9 + column + row * 9);
}
}
for (int i1 = 0; i1 < 9; ++i1) {
ControlSlot slot2 = slots.get(27 + i1);
slot2.assign(InventoryType.Player, i1);
slot2.assign(actions, InventoryType.Player, i1);
}
return this;
}
public ControlSlot getSlot(int i) {
if (i < 0 || i >= slots.size()) {
return null;
}
return slots.get(i);
public ControlPlayerInventory createAndRegister() {
final NBTTagList actions = new NBTTagList();
create(actions);
MessageCraftGUI.sendToServer(actions);
return this;
}
}
@@ -1,5 +1,11 @@
package binnie.core.craftgui.minecraft.control;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.ACTION_TYPE;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.SLOT_INDEX;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.SLOT_NUMBER;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.SLOT_REG;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.SLOT_TYPE;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -10,6 +16,8 @@ import net.minecraft.client.multiplayer.PlayerControllerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.IIcon;
import binnie.core.craftgui.CraftGUI;
@@ -26,6 +34,7 @@ import binnie.core.craftgui.resource.minecraft.CraftGUITexture;
import binnie.core.machines.inventory.InventorySlot;
import binnie.core.machines.inventory.MachineSide;
import binnie.core.machines.inventory.SlotValidator;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
public class ControlSlot extends ControlSlotBase {
@@ -40,10 +49,12 @@ public class ControlSlot extends ControlSlotBase {
}
public Slot slot;
private CraftGUITexture slotTexture;
public ControlSlot(IWidget parent, float x, float y) {
super(parent, x, y);
slot = null;
slotTexture = CraftGUITexture.Slot;
addSelfEventHandler(new EventMouse.Down.Handler() {
@Override
@@ -71,11 +82,17 @@ public class ControlSlot extends ControlSlotBase {
public ControlSlot(IWidget parent, int x, int y, Slot slot) {
super(parent, x, y);
this.slot = slot;
slotTexture = CraftGUITexture.Slot;
}
public ControlSlot setSlotTexture(CraftGUITexture texture) {
slotTexture = texture == null ? CraftGUITexture.Slot : texture;
return this;
}
@Override
public void onRenderBackground() {
CraftGUI.render.texture(CraftGUITexture.Slot, IPoint.ZERO);
CraftGUI.render.texture(slotTexture, IPoint.ZERO);
if (slot == null) {
return;
}
@@ -179,14 +196,28 @@ public class ControlSlot extends ControlSlotBase {
return null;
}
public ControlSlot assign(int index) {
return assign(InventoryType.Machine, index);
/// Assign a slot and register it immediately. Should be used when no other actions need to be sent.
@SuppressWarnings("UnusedReturnValue")
public ControlSlot assignAndRegister(InventoryType inventoryType, int slotIndex) {
final NBTTagList actions = new NBTTagList();
assign(actions, inventoryType, slotIndex);
MessageCraftGUI.sendToServer(actions);
return this;
}
public ControlSlot assign(InventoryType inventory, int index) {
if (slot == null) {
slot = ((Window) getSuperParent()).getContainer().getOrCreateSlot(inventory, index);
}
/// Assign a slot and defer registration using an `NBTTagList`.
/// Use in combination with {@link MessageCraftGUI#sendToServer(NBTTagList)}.
public ControlSlot assign(NBTTagList actions, InventoryType inventoryType, int slotIndex) {
if (slot == null) slot = ((Window) getSuperParent()).getContainer().getOrCreateSlot(inventoryType, slotIndex);
NBTTagCompound slotReg = new NBTTagCompound();
slotReg.setString(ACTION_TYPE, SLOT_REG);
slotReg.setByte(SLOT_TYPE, (byte) inventoryType.ordinal());
slotReg.setShort(SLOT_INDEX, (short) slotIndex);
slotReg.setShort(SLOT_NUMBER, (short) slot.slotNumber);
actions.appendTag(slotReg);
return this;
}
@@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraft.nbt.NBTTagList;
import binnie.core.craftgui.IWidget;
import binnie.core.craftgui.controls.core.Control;
import binnie.core.craftgui.minecraft.InventoryType;
@@ -26,15 +28,14 @@ public class ControlSlotArray extends Control implements Iterable<ControlSlot> {
return new ControlSlot(this, x, y);
}
public ControlSlotArray create(int[] index) {
return create(InventoryType.Machine, index);
}
public ControlSlotArray create(InventoryType type, int[] index) {
public ControlSlotArray create(NBTTagList actions, InventoryType inventoryType, int[] index) {
int i = 0;
for (ControlSlot slot : slots) {
slot.assign(type, index[i++]);
for (ControlSlot controlSlot : slots) {
final int slotIndex = index[i];
controlSlot.assign(actions, inventoryType, slotIndex);
i++;
}
return this;
}
@@ -10,6 +10,7 @@ public enum CraftGUITexture {
Button("button"),
ButtonHighlighted("button.highlighted"),
Slot("slot"),
SlotInventory("slot.inventory"),
SlotBorder("slot.border"),
SlotOverlay("slot.overlay"),
SlotCharge("slot.charge"),
@@ -57,7 +57,7 @@ public abstract class BreedingSystem implements IItemStackRepresentative {
public BreedingSystem() {
Binnie.Genetics.registerBreedingSystem(this);
MinecraftForge.EVENT_BUS.register(this);
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
public String getChromosomeName(IChromosomeType chromo) {
@@ -294,13 +294,16 @@ public abstract class BreedingSystem implements IItemStackRepresentative {
public abstract Class<? extends IBreedingTracker> getTrackerClass();
@SubscribeEvent
public void onSyncBreedingTracker(ForestryEvent.SyncedBreedingTracker event) {
IBreedingTracker tracker = event.tracker;
if (!getTrackerClass().isInstance(tracker)) {
return;
public class EventHandler {
@SubscribeEvent
public void onSyncBreedingTracker(ForestryEvent.SyncedBreedingTracker event) {
IBreedingTracker tracker = event.tracker;
if (!getTrackerClass().isInstance(tracker)) {
return;
}
syncTracker(tracker);
}
syncTracker(tracker);
}
public void syncTracker(IBreedingTracker tracker) {
@@ -9,6 +9,7 @@ import java.util.Map;
import java.util.TreeSet;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.WorldEvent;
import binnie.Binnie;
@@ -67,6 +68,11 @@ public class ManagerGenetics extends ManagerBase {
refreshData();
}
@Override
public void registerEventHandler() {
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
public ITreeRoot getTreeRoot() {
return (ITreeRoot) AlleleManager.alleleRegistry.getSpeciesRoot("rootTrees");
}
@@ -140,11 +146,6 @@ public class ManagerGenetics extends ManagerBase {
return (system == null) ? null : system.getConversion(stack);
}
@SubscribeEvent
public void onWorldLoad(WorldEvent.Load event) {
refreshData();
}
private void refreshData() {
loadAlleles();
for (BreedingSystem system : Binnie.Genetics.getActiveSystems()) {
@@ -219,4 +220,12 @@ public class ManagerGenetics extends ManagerBase {
return o1.getUID().compareTo(o2.getUID());
}
}
public class EventHandler {
@SubscribeEvent
public void onWorldLoad(WorldEvent.Load event) {
refreshData();
}
}
}
@@ -1,5 +1,7 @@
package binnie.core.item;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
@@ -25,6 +27,8 @@ public class ItemGenesis extends Item {
setCreativeTab(Tabs.tabApiculture);
setUnlocalizedName("genesis");
setMaxStackSize(1);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
+6 -2
View File
@@ -1,5 +1,7 @@
package binnie.core.item;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -16,11 +18,13 @@ public class ItemMisc extends Item {
private final IItemMisc[] items;
protected ItemMisc(CreativeTabs tab, IItemMisc[] items2) {
public ItemMisc(CreativeTabs tab, IItemMisc[] items) {
setCreativeTab(tab);
setHasSubtypes(true);
setUnlocalizedName("misc");
items = items2;
this.items = items;
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,10 +0,0 @@
package binnie.core.item;
import net.minecraft.creativetab.CreativeTabs;
public class ManagerItem {
public ItemMisc registerMiscItems(IItemMisc[] items, CreativeTabs tab) {
return new ItemMisc(tab, items);
}
}
+34 -25
View File
@@ -6,6 +6,7 @@ import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import binnie.botany.Botany;
@@ -49,36 +50,44 @@ public class ModuleItems implements IInitializable {
new ItemStack(Items.dye, 1));
}
@SubscribeEvent
public void onUseFieldKit(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
return;
}
@Override
public void registerEventHandler() {
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
EntityPlayer player = event.entityPlayer;
if (player != null && player.getHeldItem() != null
&& player.getHeldItem().getItem() == BinnieCore.fieldKit
&& player.isSneaking()) {
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (!(tile instanceof TileEntityFlower tileFlower)) {
public static class EventHandler {
@SubscribeEvent
public void onUseFieldKit(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
return;
}
IFlower flower = tileFlower.getFlower();
if (flower == null) {
return;
}
EntityPlayer player = event.entityPlayer;
if (player != null && player.getHeldItem() != null
&& player.getHeldItem().getItem() == BinnieCore.fieldKit
&& player.isSneaking()) {
TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
if (!(tile instanceof TileEntityFlower tileFlower)) {
return;
}
NBTTagCompound info = new NBTTagCompound();
info.setString("Species", flower.getGenome().getPrimary().getUID());
info.setString("Species2", flower.getGenome().getSecondary().getUID());
info.setFloat("Age", flower.getAge() / flower.getGenome().getLifespan());
info.setShort("Colour", (short) flower.getGenome().getPrimaryColor().getID());
info.setShort("Colour2", (short) flower.getGenome().getSecondaryColor().getID());
info.setBoolean("Wilting", flower.isWilted());
info.setBoolean("Flowered", flower.hasFlowered());
Botany.proxy.sendToPlayer(new MessageNBT(PacketID.FieldKit.ordinal(), info), event.entityPlayer);
event.entityPlayer.getHeldItem().damageItem(1, event.entityPlayer);
IFlower flower = tileFlower.getFlower();
if (flower == null) {
return;
}
NBTTagCompound info = new NBTTagCompound();
info.setString("Species", flower.getGenome().getPrimary().getUID());
info.setString("Species2", flower.getGenome().getSecondary().getUID());
info.setFloat("Age", flower.getAge() / flower.getGenome().getLifespan());
info.setShort("Colour", (short) flower.getGenome().getPrimaryColor().getID());
info.setShort("Colour2", (short) flower.getGenome().getSecondaryColor().getID());
info.setBoolean("Wilting", flower.isWilted());
info.setBoolean("Flowered", flower.hasFlowered());
Botany.proxy.sendToPlayer(new MessageNBT(PacketID.FieldKit.ordinal(), info), event.entityPlayer);
event.entityPlayer.getHeldItem().damageItem(1, event.entityPlayer);
}
}
}
}
@@ -277,16 +277,16 @@ public class Machine implements INetworkedEntity, INBTTagable, INetwork.TilePack
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
for (INetwork.RecieveGuiNBT recieve : getInterfaces(INetwork.RecieveGuiNBT.class)) {
recieve.recieveGuiNBT(side, player, name, nbt);
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
for (INetwork.ReceiveGuiNBT receive : getInterfaces(INetwork.ReceiveGuiNBT.class)) {
receive.receiveGuiNBT(side, player, name, nbt);
}
}
@Override
public void sendGuiNBT(Map<String, NBTTagCompound> nbts) {
for (INetwork.SendGuiNBT recieve : getInterfaces(INetwork.SendGuiNBT.class)) {
recieve.sendGuiNBT(nbts);
for (INetwork.SendGuiNBT receive : getInterfaces(INetwork.SendGuiNBT.class)) {
receive.sendGuiNBT(nbts);
}
}
}
@@ -50,7 +50,7 @@ public class MachineComponent implements INBTTagable {
return new MachinePayload(Binnie.Machine.getNetworkID(getClass()));
}
public void recieveData(MachinePayload payload) {}
public void receiveData(MachinePayload payload) {}
public MachineUtil getUtil() {
return getMachine().getMachineUtil();
@@ -32,6 +32,11 @@ public abstract class MachinePackage {
return I18N.localise(group.getMod().getModID() + ".machine." + group.getShortUID() + "." + getUID());
}
public String getGuiDisplayName() {
String guiKey = group.getMod().getModID() + ".machine." + group.getShortUID() + "." + getUID() + ".title";
return I18N.canLocalise(guiKey) ? I18N.localise(guiKey) : getDisplayName();
}
public Integer getMetadata() {
return metadata;
}
@@ -49,7 +49,7 @@ public class ComponentChargedSlots extends MachineComponent implements INetwork.
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
if (!name.equals("slot-charges")) {
return;
}
@@ -1,7 +1,6 @@
package binnie.core.machines.inventory;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
@@ -16,10 +15,13 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import binnie.core.machines.IMachine;
import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap;
public class ComponentInventorySlots extends ComponentInventory implements IInventoryMachine, IInventorySlots {
private final Map<Integer, InventorySlot> inventory = new LinkedHashMap<>();
private final Int2ObjectLinkedOpenHashMap<InventorySlot> inventory = new Int2ObjectLinkedOpenHashMap<>();
private int cachedSize = 0;
private int[] cachedAccessibleSlots = null;
public ComponentInventorySlots(IMachine machine) {
super(machine);
@@ -27,25 +29,20 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
@Override
public int getSizeInventory() {
int size = 0;
for (Integer index : inventory.keySet()) {
size = Math.max(size, index + 1);
}
return size;
return cachedSize;
}
@Override
public ItemStack getStackInSlot(int index) {
if (inventory.containsKey(index)) {
return inventory.get(index).getContent();
}
return null;
InventorySlot slot = inventory.get(index);
return slot != null ? slot.getContent() : null;
}
@Override
public ItemStack decrStackSize(int index, int amount) {
if (inventory.containsKey(index)) {
ItemStack stack = inventory.get(index).decrStackSize(amount);
InventorySlot slot = inventory.get(index);
if (slot != null) {
ItemStack stack = slot.decrStackSize(amount);
markDirty();
return stack;
}
@@ -59,8 +56,9 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
@Override
public void setInventorySlotContents(int index, ItemStack itemStack) {
if (inventory.containsKey(index) && (itemStack == null || inventory.get(index).isValid(itemStack))) {
inventory.get(index).setContent(itemStack);
InventorySlot slot = inventory.get(index);
if (slot != null && (itemStack == null || slot.isValid(itemStack))) {
slot.setContent(itemStack);
}
markDirty();
}
@@ -113,7 +111,7 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
public void writeToNBT(NBTTagCompound nbttagcompound) {
super.writeToNBT(nbttagcompound);
NBTTagList inventoryNBT = new NBTTagList();
for (Map.Entry<Integer, InventorySlot> entry : inventory.entrySet()) {
for (Map.Entry<Integer, InventorySlot> entry : inventory.int2ObjectEntrySet()) {
NBTTagCompound slotNBT = new NBTTagCompound();
slotNBT.setInteger("id", entry.getKey());
entry.getValue().writeToNBT(slotNBT);
@@ -125,6 +123,8 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
@Override
public InventorySlot addSlot(int index, String unlocalizedName) {
inventory.put(index, new InventorySlot(index, unlocalizedName));
cachedSize = Math.max(cachedSize, index + 1);
cachedAccessibleSlots = null;
return getSlot(index);
}
@@ -138,10 +138,7 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
@Override
public InventorySlot getSlot(int index) {
if (inventory.containsKey(index)) {
return inventory.get(index);
}
return null;
return inventory.get(index);
}
@Override
@@ -151,7 +148,7 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
@Override
public InventorySlot[] getSlots(int[] indexes) {
List<InventorySlot> list = new ArrayList<>();
List<InventorySlot> list = new ArrayList<>(indexes.length);
for (int i : indexes) {
if (getSlot(i) != null) {
list.add(getSlot(i));
@@ -213,18 +210,20 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
@Override
public int[] getAccessibleSlotsFromSide(int var1) {
List<Integer> slots = new ArrayList<>();
for (InventorySlot slot : inventory.values()) {
if (slot.canInsert() || slot.canExtract()) {
slots.add(slot.getIndex());
if (cachedAccessibleSlots == null) {
List<Integer> slots = new ArrayList<>();
for (InventorySlot slot : inventory.values()) {
if (slot.canInsert() || slot.canExtract()) {
slots.add(slot.getIndex());
}
}
cachedAccessibleSlots = new int[slots.size()];
for (int i = 0; i < slots.size(); ++i) {
cachedAccessibleSlots[i] = slots.get(i);
}
}
int[] ids = new int[slots.size()];
for (int i = 0; i < slots.size(); ++i) {
ids[i] = slots.get(i);
}
return ids;
return cachedAccessibleSlots;
}
@Override
@@ -234,6 +233,7 @@ public class ComponentInventorySlots extends ComponentInventory implements IInve
@Override
public boolean canExtractItem(int slot, ItemStack itemstack, int direction) {
return getSlot(slot).canExtract(ForgeDirection.getOrientation(direction));
InventorySlot iSlot = getSlot(slot);
return iSlot != null && iSlot.canExtract(ForgeDirection.getOrientation(direction));
}
}
@@ -21,11 +21,11 @@ public interface INetwork {
void syncFromNBT(NBTTagCompound nbt);
}
interface RecieveGuiNBT {
interface ReceiveGuiNBT {
void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt);
void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt);
}
interface GuiNBT extends RecieveGuiNBT, SendGuiNBT {
interface GuiNBT extends ReceiveGuiNBT, SendGuiNBT {
}
}
@@ -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;
}
}
@@ -69,7 +69,7 @@ class ComponentCompartmentInventory extends ComponentInventorySlots implements I
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
if (name.equals("comp-tabs")) {
NBTTagList tags = nbt.getTagList("tabs", 10);
for (int i = 0; i < tags.tagCount(); ++i) {
@@ -15,6 +15,7 @@ import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.BinnieCore;
@@ -42,6 +43,7 @@ import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.Dialog;
import binnie.core.craftgui.minecraft.EnumColor;
import binnie.core.craftgui.minecraft.IWindowAffectsShiftClick;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.MinecraftGUI;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlItemDisplay;
@@ -55,6 +57,7 @@ import binnie.core.craftgui.resource.minecraft.CraftGUITexture;
import binnie.core.craftgui.window.Panel;
import binnie.core.machines.Machine;
import binnie.core.machines.transfer.TransferRequest;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.genetics.craftgui.WindowMachine;
import cpw.mods.fml.relauncher.Side;
@@ -80,7 +83,7 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
@Override
public void initialiseClient() {
setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
setTitle(Machine.getMachine(getInventory()).getPackage().getGuiDisplayName());
int x = 16;
int y = 32;
ComponentCompartmentInventory inv = Machine.getMachine(getInventory())
@@ -187,7 +190,11 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
for (int k = 0; k < inv.getPageSize(); ++k) {
slotsIDs[k] = i++;
}
new ControlSlotArray(thisPage, 8, 8, inv.getPageSize() / 5, 5).create(slotsIDs);
final NBTTagList actions = new NBTTagList();
new ControlSlotArray(thisPage, 8, 8, inv.getPageSize() / 5, 5)
.create(actions, InventoryType.Machine, slotsIDs);
MessageCraftGUI.sendToServer(actions);
}
x += compartmentPageWidth;
if (tabs2.length > 0) {
@@ -245,7 +252,7 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
setSize(new IPoint(Math.max(32 + compartmentWidth, 252), h()));
controlCompartment.setPosition(new IPoint((w() - controlCompartment.w()) / 2.0f, controlCompartment.y()));
new ControlPlayerInventory(this, true);
new ControlPlayerInventory(this, true).createAndRegister();
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);
@@ -367,7 +374,7 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
};
slotGrid = new Control(scroll, 1.0f, 1.0f, 108.0f, 18.0f);
scroll.setScrollableContent(slotGrid);
new ControlPlayerInventory(this, true);
new ControlPlayerInventory(this, true).createAndRegister();
new ControlTextEdit(this, 16.0f, 16.0f, 100.0f, 14.0f).addEventHandler(new EventTextEdit.Handler() {
@Override
@@ -459,8 +466,10 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
slotGrid.deleteAllChildren();
slotGrid.setSize(new IPoint(width, height));
final NBTTagList actions = new NBTTagList();
for (int k : slotIds.keySet()) {
new ControlSlot(slotGrid, x, y).assign(k);
new ControlSlot(slotGrid, x, y).assign(actions, InventoryType.Machine, k);
x += 18;
if (x >= 108) {
x = 0;
@@ -468,6 +477,8 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
}
}
MessageCraftGUI.sendToServer(actions);
while (y < 108 || x != 0) {
new ControlSlot(slotGrid, x, y);
x += 18;
@@ -488,14 +499,16 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
public void updateTabs() {
CompartmentTab tab = getCurrentTab();
tabName.setValue(tab.getName());
if (!tabName.isFocused()) {
tabName.setValue(tab.getName());
}
tabIcon.setItemStack(tab.getIcon());
tabColour.setValue(tab.getColor());
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.recieveGuiNBT(side, player, name, nbt);
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.receiveGuiNBT(side, player, name, nbt);
if (name.equals("tab-change")) {
currentTab = nbt.getByte("i");
}
@@ -1,52 +0,0 @@
package binnie.core.mod.parser;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import binnie.core.AbstractMod;
public abstract class FieldParser {
public static Collection<FieldParser> parsers = new ArrayList<>();
public abstract boolean isHandled(Field field, AbstractMod mod);
public void preInit(Field field, AbstractMod mod) throws IllegalArgumentException, IllegalAccessException {
// ignored
}
public void init(Field field, AbstractMod mod) throws IllegalArgumentException, IllegalAccessException {
// ignored
}
public void postInit(Field field, AbstractMod mod) throws IllegalArgumentException, IllegalAccessException {
// ignored
}
public static void preInitParse(Field field, AbstractMod mod)
throws IllegalArgumentException, IllegalAccessException {
for (FieldParser parser : FieldParser.parsers) {
if (parser.isHandled(field, mod)) {
parser.preInit(field, mod);
}
}
}
public static void initParse(Field field, AbstractMod mod) throws IllegalArgumentException, IllegalAccessException {
for (FieldParser parser : FieldParser.parsers) {
if (parser.isHandled(field, mod)) {
parser.init(field, mod);
}
}
}
public static void postInitParse(Field field, AbstractMod mod)
throws IllegalArgumentException, IllegalAccessException {
for (FieldParser parser : FieldParser.parsers) {
if (parser.isHandled(field, mod)) {
parser.postInit(field, mod);
}
}
}
}
@@ -1,24 +0,0 @@
package binnie.core.mod.parser;
import java.lang.reflect.Field;
import net.minecraft.item.Item;
import binnie.core.AbstractMod;
import cpw.mods.fml.common.registry.GameRegistry;
public class ItemParser extends FieldParser {
@Override
public boolean isHandled(Field field, AbstractMod mod) {
return Item.class.isAssignableFrom(field.getType());
}
@Override
public void preInit(Field field, AbstractMod mod) throws IllegalArgumentException, IllegalAccessException {
Item item = (Item) field.get(null);
if (item != null) {
GameRegistry.registerItem(item, item.getUnlocalizedName().substring(5));
}
}
}
@@ -1,6 +1,7 @@
package binnie.core.network;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.tileentity.TileEntity;
@@ -27,41 +28,71 @@ public enum BinnieCorePacketID implements IPacketID {
@Override
public void onMessage(MessageBinnie message, MessageContext context) {
if (this == BinnieCorePacketID.NetworkEntityUpdate) {
MessageUpdate packet = new MessageUpdate(message);
TileEntity tile = packet.getTileEntity(BinnieCore.proxy.getWorld());
if (tile instanceof INetworkedEntity) {
((INetworkedEntity) tile).readFromPacket(packet.payload);
switch (this) {
case NetworkEntityUpdate -> processNetworkEntityUpdate(message);
case TileMetadata -> processTileMetadata(message);
case CraftGUIAction -> processCraftGUIAction(message, context);
case TileDescriptionSync -> processTileDescriptionSync(message, context);
}
}
private static void processNetworkEntityUpdate(MessageBinnie message) {
final MessageUpdate packet = new MessageUpdate(message);
final TileEntity tile = packet.getTileEntity(BinnieCore.proxy.getWorld());
if (tile instanceof INetworkedEntity iNetworkedEntity) {
iNetworkedEntity.readFromPacket(packet.payload);
}
}
private static void processTileMetadata(MessageBinnie message) {
final MessageMetadata packet = new MessageMetadata(message);
final TileEntity tile = packet.getTileEntity(BinnieCore.proxy.getWorld());
if (tile instanceof TileEntityMetadata tileEntityMetadata) {
tileEntityMetadata.setTileMetadata(packet.meta, true);
}
}
private static void processCraftGUIAction(MessageBinnie message, MessageContext context) {
final MessageCraftGUI packet = new MessageCraftGUI(message);
final NBTTagCompound tagCompound = packet.getTagCompound();
if (tagCompound == null) return;
if (context.side == Side.CLIENT) {
final EntityPlayer player = BinnieCore.proxy.getPlayer();
if (player.openContainer instanceof ContainerCraftGUI gui) {
gui.receiveNBT(Side.CLIENT, player, tagCompound);
}
} else if (this == BinnieCorePacketID.TileMetadata) {
MessageMetadata packet = new MessageMetadata(message);
TileEntity tile = packet.getTileEntity(BinnieCore.proxy.getWorld());
if (tile instanceof TileEntityMetadata) {
((TileEntityMetadata) tile).setTileMetadata(packet.meta, true);
}
} else if (this == BinnieCorePacketID.CraftGUIAction) {
if (context.side == Side.CLIENT) {
MessageCraftGUI packet = new MessageCraftGUI(message);
EntityPlayer player = BinnieCore.proxy.getPlayer();
if (player.openContainer instanceof ContainerCraftGUI && packet.getTagCompound() != null) {
((ContainerCraftGUI) player.openContainer).recieveNBT(Side.CLIENT, player, packet.getTagCompound());
}
} else if (context.netHandler instanceof NetHandlerPlayServer) {
MessageCraftGUI packet = new MessageCraftGUI(message);
EntityPlayer player = ((NetHandlerPlayServer) context.netHandler).playerEntity;
if (player.openContainer instanceof ContainerCraftGUI && packet.getTagCompound() != null) {
((ContainerCraftGUI) player.openContainer).recieveNBT(Side.SERVER, player, packet.getTagCompound());
}
}
} else if (this == BinnieCorePacketID.TileDescriptionSync && context.side == Side.CLIENT) {
MessageTileNBT packet = new MessageTileNBT(message);
TileEntity tile = packet.getTarget(BinnieCore.proxy.getWorld());
if (tile != null && packet.getTagCompound() != null) {
IMachine machine = Machine.getMachine(tile);
if (machine instanceof INetwork.TilePacketSync tps) {
tps.syncFromNBT(packet.getTagCompound());
} else {
if (context.netHandler instanceof NetHandlerPlayServer server) {
final EntityPlayer player = server.playerEntity;
if (player.openContainer instanceof ContainerCraftGUI gui) {
gui.receiveNBT(Side.SERVER, player, tagCompound);
}
}
}
}
private static void processTileDescriptionSync(MessageBinnie message, MessageContext context) {
if (!context.side.isClient()) return;
final MessageTileNBT packet = new MessageTileNBT(message);
final NBTTagCompound tagCompound = packet.getTagCompound();
if (tagCompound == null) return;
final TileEntity tile = packet.getTarget(BinnieCore.proxy.getWorld());
if (tile == null) return;
final IMachine machine = Machine.getMachine(tile);
if (machine instanceof INetwork.TilePacketSync tps) {
tps.syncFromNBT(tagCompound);
}
}
}
@@ -1,7 +1,13 @@
package binnie.core.network.packet;
import net.minecraft.nbt.NBTTagCompound;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.ACTIONS;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.ACTION_BATCH;
import static binnie.core.craftgui.minecraft.ContainerCraftGUI.ACTION_TYPE;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import binnie.core.BinnieCore;
import binnie.core.network.BinnieCorePacketID;
public class MessageCraftGUI extends MessageNBT {
@@ -13,4 +19,12 @@ public class MessageCraftGUI extends MessageNBT {
public MessageCraftGUI(NBTTagCompound action) {
super(BinnieCorePacketID.CraftGUIAction.ordinal(), action);
}
public static void sendToServer(NBTTagList actions) {
NBTTagCompound actionsBatch = new NBTTagCompound();
actionsBatch.setString(ACTION_TYPE, ACTION_BATCH);
actionsBatch.setTag(ACTIONS, actions);
final MessageCraftGUI packet = new MessageCraftGUI(actionsBatch);
BinnieCore.proxy.sendToServer(packet);
}
}
+11 -8
View File
@@ -2,7 +2,6 @@ package binnie.extrabees;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import com.gtnewhorizon.gtnhlib.config.ConfigException;
import com.gtnewhorizon.gtnhlib.config.ConfigurationManager;
@@ -11,6 +10,7 @@ import binnie.core.AbstractMod;
import binnie.core.BinnieCore;
import binnie.core.Tags;
import binnie.core.gui.IBinnieGUID;
import binnie.core.item.ItemMisc;
import binnie.core.network.BinniePacketHandler;
import binnie.core.proxy.IProxyCore;
import binnie.extrabees.apiary.ModuleApiary;
@@ -18,7 +18,11 @@ import binnie.extrabees.config.EBConfig;
import binnie.extrabees.core.ExtraBeeGUID;
import binnie.extrabees.core.ModuleCore;
import binnie.extrabees.genetics.ModuleGenetics;
import binnie.extrabees.genetics.items.ItemDictionary;
import binnie.extrabees.liquids.ModuleLiquids;
import binnie.extrabees.products.ItemHoneyComb;
import binnie.extrabees.products.ItemHoneyDrop;
import binnie.extrabees.products.ItemPropolis;
import binnie.extrabees.products.ModuleProducts;
import binnie.extrabees.proxy.ExtraBeesProxy;
import binnie.extrabees.worldgen.ModuleGeneration;
@@ -33,8 +37,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
name = ExtraBees.EB_MOD_NAME,
version = Tags.VERSION,
useMetadata = true,
dependencies = "after:BinnieCore",
guiFactory = "binnie.extrabees.config.EBConfigGUIFactory")
dependencies = "after:BinnieCore")
public class ExtraBees extends AbstractMod {
public static final String EB_MODID = "ExtraBees";
@@ -59,11 +62,11 @@ public class ExtraBees extends AbstractMod {
public static Block hive;
public static Material materialBeehive;
public static Block ectoplasm;
public static Item comb;
public static Item propolis;
public static Item honeyDrop;
public static Item dictionary;
public static Item itemMisc;
public static ItemHoneyComb comb;
public static ItemPropolis propolis;
public static ItemHoneyDrop honeyDrop;
public static ItemDictionary dictionary;
public static ItemMisc itemMisc;
public ExtraBees() {
ExtraBees.instance = this;
@@ -34,12 +34,12 @@ public class ModuleApiary implements IInitializable {
BinnieCore.proxy.createObject("binnie.core.machines.RendererMachine"));
ModuleApiary.blockComponent = machineGroup.getBlock();
AlvearyMutator.addMutationItem(new ItemStack(Blocks.soul_sand), 1.5f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("UranFuel"), 8.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("Plutonium"), 15.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("smallPlutonium"), 9.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("Uran235"), 10.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("smallUran235"), 5.5f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("Uran238"), 2.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("itemUran"), 8.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("itemPlutonium"), 15.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("itemPlutoniumSmall"), 9.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("itemUran235"), 10.0f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("itemUran235small"), 5.5f);
AlvearyMutator.addMutationItem(Mods.ic2.stack("itemUran238"), 2.0f);
AlvearyMutator.addMutationItem(new ItemStack(Items.nether_star), 50.0f);
AlvearyMutator.addMutationItem(new ItemStack(Items.ender_pearl), 2.0f);
AlvearyMutator.addMutationItem(new ItemStack(Items.ender_eye), 4.0f);
@@ -6,14 +6,23 @@ import java.util.List;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import com.mojang.authlib.GameProfile;
import binnie.core.machines.TileEntityMachine;
import binnie.extrabees.apiary.machine.AlvearyMachine;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeHousingInventory;
import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IBeekeepingLogic;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.core.IErrorLogic;
import forestry.api.genetics.IIndividual;
import forestry.api.multiblock.IAlvearyComponent;
import forestry.api.multiblock.IMultiblockComponent;
@@ -21,7 +30,7 @@ import forestry.api.multiblock.IMultiblockController;
import forestry.api.multiblock.IMultiblockLogicAlveary;
import forestry.api.multiblock.MultiblockManager;
public class TileExtraBeeAlveary extends TileEntityMachine implements IAlvearyComponent.Active,
public class TileExtraBeeAlveary extends TileEntityMachine implements IBeeHousing, IAlvearyComponent.Active,
IAlvearyComponent.BeeModifier, IAlvearyComponent.BeeListener, IBeeListener, IBeeModifier {
protected IMultiblockLogicAlveary structureLogic;
@@ -42,11 +51,51 @@ public class TileExtraBeeAlveary extends TileEntityMachine implements IAlvearyCo
return new ChunkCoordinates(xCoord, yCoord, zCoord);
}
@Override
public Iterable<IBeeModifier> getBeeModifiers() {
return getMultiblockLogic().getController().getBeeModifiers();
}
@Override
public Iterable<IBeeListener> getBeeListeners() {
return getMultiblockLogic().getController().getBeeListeners();
}
@Override
public IBeeHousingInventory getBeeInventory() {
return getMultiblockLogic().getController().getBeeInventory();
}
@Override
public IBeekeepingLogic getBeekeepingLogic() {
return getMultiblockLogic().getController().getBeekeepingLogic();
}
@Override
public int getBlockLightValue() {
return getMultiblockLogic().getController().getBlockLightValue();
}
@Override
public boolean canBlockSeeTheSky() {
return getMultiblockLogic().getController().canBlockSeeTheSky();
}
@Override
public World getWorld() {
return null;
}
@Override
public GameProfile getOwner() {
return getMachine().getOwner();
}
@Override
public Vec3 getBeeFXCoordinates() {
return getMultiblockLogic().getController().getBeeFXCoordinates();
}
public List<TileEntity> getAlvearyBlocks() {
LinkedList<TileEntity> tiles = new LinkedList<>();
if (min == null || max == null) {
@@ -226,6 +275,26 @@ public class TileExtraBeeAlveary extends TileEntityMachine implements IAlvearyCo
}
}
@Override
public BiomeGenBase getBiome() {
return getMultiblockLogic().getController().getBiome();
}
@Override
public EnumTemperature getTemperature() {
return getMultiblockLogic().getController().getTemperature();
}
@Override
public EnumHumidity getHumidity() {
return getMultiblockLogic().getController().getHumidity();
}
@Override
public IErrorLogic getErrorLogic() {
return getMultiblockLogic().getController().getErrorLogic();
}
// TODO why its commented?
// boolean init;
// //IStructureLogic structureLogic;
@@ -18,8 +18,7 @@ public class MutatorModifierComponent extends ComponentBeeModifier implements IB
return 1.0f;
}
float mult = AlvearyMutator.getMutationMult(getUtil().getStack(AlvearyMutator.SLOT_MUTATOR));
return Math.min(mult, 15.0f / currentModifier);
return AlvearyMutator.getMutationMult(getUtil().getStack(AlvearyMutator.SLOT_MUTATOR));
}
@Override
@@ -48,8 +48,8 @@ public class TransmissionModifierComponent extends ComponentBeeModifier implemen
}
for (IEnergyHandler handler : handlers) {
int recieved = handler.receiveEnergy(ForgeDirection.NORTH, output, false);
getUtil().getPoweredMachine().receiveEnergy(ForgeDirection.NORTH, -recieved, false);
int received = handler.receiveEnergy(ForgeDirection.NORTH, output, false);
getUtil().getPoweredMachine().receiveEnergy(ForgeDirection.NORTH, -received, false);
energy = getUtil().getPoweredMachine().getEnergyStored(ForgeDirection.NORTH);
if (energy <= 0) {
return;
@@ -1,16 +0,0 @@
package binnie.extrabees.config;
import static binnie.extrabees.ExtraBees.EB_MODID;
import static binnie.extrabees.ExtraBees.EB_MOD_NAME;
import net.minecraft.client.gui.GuiScreen;
import com.gtnewhorizon.gtnhlib.config.ConfigException;
import com.gtnewhorizon.gtnhlib.config.SimpleGuiConfig;
public class EBConfigGUI extends SimpleGuiConfig {
public EBConfigGUI(GuiScreen parent) throws ConfigException {
super(parent, EB_MODID, EB_MOD_NAME, false, EBConfig.class, EBConfigMachines.class);
}
}
@@ -1,13 +0,0 @@
package binnie.extrabees.config;
import net.minecraft.client.gui.GuiScreen;
import com.gtnewhorizon.gtnhlib.config.SimpleGuiFactory;
public class EBConfigGUIFactory implements SimpleGuiFactory {
@Override
public Class<? extends GuiScreen> mainConfigGuiClass() {
return EBConfigGUI.class;
}
}
@@ -1,7 +1,7 @@
package binnie.extrabees.core;
import binnie.Binnie;
import binnie.core.IInitializable;
import binnie.core.item.ItemMisc;
import binnie.extrabees.ExtraBees;
import forestry.api.core.Tabs;
@@ -9,7 +9,7 @@ public class ModuleCore implements IInitializable {
@Override
public void preInit() {
ExtraBees.itemMisc = Binnie.Item.registerMiscItems(ExtraBeeItems.values(), Tabs.tabApiculture);
ExtraBees.itemMisc = new ItemMisc(Tabs.tabApiculture, ExtraBeeItems.values());
}
@Override
@@ -389,34 +389,27 @@ public enum ExtraBeesEffect implements IAlleleBeeEffect {
}
private void onFoodEffect(IBeeGenome genome, IBeeHousing housing) {
for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
if (entity instanceof EntityPlayer player) {
player.getFoodStats().addStats(2, 0.2f);
}
for (EntityPlayer player : getEntities(EntityPlayer.class, genome, housing)) {
player.getFoodStats().addStats(2, 0.2f);
}
}
private void onHungerEffect(IBeeGenome genome, IBeeHousing housing, World world) {
for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
if (entity instanceof EntityPlayer player) {
if (world.rand.nextInt(4) < wearsItems(player)) {
continue;
}
player.getFoodStats().addExhaustion(4.0f);
player.addPotionEffect(new PotionEffect(Potion.hunger.id, 100));
for (EntityPlayer player : getEntities(EntityPlayer.class, genome, housing)) {
if (world.rand.nextInt(4) < wearsItems(player)) {
continue;
}
player.addExhaustion(4.0f);
player.addPotionEffect(new PotionEffect(Potion.hunger.id, 100));
}
}
private void onPotionEffect(IBeeGenome genome, IBeeHousing housing, World world, PotionEffect potion) {
for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
if (entity instanceof EntityPlayer player) {
if (world.rand.nextInt(4) < wearsItems(player)) {
continue;
}
player.addPotionEffect(potion);
for (EntityPlayer player : getEntities(EntityPlayer.class, genome, housing)) {
if (world.rand.nextInt(4) < wearsItems(player)) {
continue;
}
player.addPotionEffect(potion);
}
}
@@ -611,13 +604,16 @@ public enum ExtraBeesEffect implements IAlleleBeeEffect {
public <T extends Entity> List<T> getEntities(Class<T> eClass, IBeeGenome genome, IBeeHousing housing) {
int[] area = genome.getTerritory();
int[] offset = { -Math.round(area[0] / 2f), -Math.round(area[1] / 2f), -Math.round(area[2] / 2f) };
int[] min = { housing.getCoordinates().posX + offset[0], housing.getCoordinates().posY + offset[1],
housing.getCoordinates().posZ + offset[2] };
int[] max = { housing.getCoordinates().posX + offset[0] + area[0],
housing.getCoordinates().posY + offset[1] + area[1],
housing.getCoordinates().posZ + offset[2] + area[2] };
AxisAlignedBB box = AxisAlignedBB.getBoundingBox(min[0], min[1], min[2], max[0], max[1], max[2]);
int offsetX = -Math.round(area[0] / 2f);
int offsetY = -Math.round(area[1] / 2f);
int offsetZ = -Math.round(area[2] / 2f);
int minX = housing.getCoordinates().posX + offsetX;
int minY = housing.getCoordinates().posY + offsetY;
int minZ = housing.getCoordinates().posZ + offsetZ;
int maxX = housing.getCoordinates().posX + offsetX + area[0];
int maxY = housing.getCoordinates().posY + offsetY + area[1];
int maxZ = housing.getCoordinates().posZ + offsetZ + area[2];
AxisAlignedBB box = AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ);
return housing.getWorld().getEntitiesWithinAABB(eClass, box);
}
@@ -1,5 +1,7 @@
package binnie.extrabees.genetics.items;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -25,6 +27,8 @@ public class ItemDictionary extends Item {
setCreativeTab(Tabs.tabApiculture);
setUnlocalizedName("dictionary");
setMaxStackSize(1);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -2,14 +2,16 @@ package binnie.extrabees.gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlPlayerInventory;
import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.machines.Machine;
import binnie.core.machines.TileEntityMachine;
import binnie.core.util.I18N;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.extrabees.ExtraBees;
import cpw.mods.fml.relauncher.Side;
@@ -32,10 +34,11 @@ public class WindowAlvearyFrame extends Window {
@Override
public void initialiseClient() {
setTitle(I18N.localise("extrabees.machine.alveay.frame"));
playerInventory = new ControlPlayerInventory(this);
ControlSlot slot = new ControlSlot(this, 79.0f, 30.0f);
slot.assign(0);
setTitle(machine.getPackage().getGuiDisplayName());
final NBTTagList actions = new NBTTagList();
playerInventory = new ControlPlayerInventory(this).create(actions);
new ControlSlot(this, 79.0f, 30.0f).assign(actions, InventoryType.Machine, 0);
MessageCraftGUI.sendToServer(actions);
}
@Override
@@ -2,14 +2,16 @@ package binnie.extrabees.gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlPlayerInventory;
import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.machines.Machine;
import binnie.core.machines.TileEntityMachine;
import binnie.core.util.I18N;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.extrabees.ExtraBees;
import binnie.extrabees.apiary.machine.hatchery.AlvearyHatchery;
import cpw.mods.fml.relauncher.Side;
@@ -33,10 +35,11 @@ public class WindowAlvearyHatchery extends Window {
@Override
public void initialiseClient() {
setTitle(I18N.localise("extrabees.machine.alveay.hatchery"));
playerInventory = new ControlPlayerInventory(this);
ControlSlotArray slot = new ControlSlotArray(this, 43, 30, 5, 1);
slot.create(AlvearyHatchery.SLOT_LARVAE);
final NBTTagList actions = new NBTTagList();
setTitle(machine.getPackage().getGuiDisplayName());
playerInventory = new ControlPlayerInventory(this).create(actions);
new ControlSlotArray(this, 43, 30, 5, 1).create(actions, InventoryType.Machine, AlvearyHatchery.SLOT_LARVAE);
MessageCraftGUI.sendToServer(actions);
}
@Override
@@ -3,17 +3,21 @@ package binnie.extrabees.gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.controls.ControlText;
import binnie.core.craftgui.geometry.IArea;
import binnie.core.craftgui.geometry.IPoint;
import binnie.core.craftgui.geometry.TextJustification;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlItemDisplay;
import binnie.core.craftgui.minecraft.control.ControlPlayerInventory;
import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.machines.Machine;
import binnie.core.machines.TileEntityMachine;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extrabees.ExtraBees;
import binnie.extrabees.apiary.machine.mutator.AlvearyMutator;
@@ -38,17 +42,18 @@ public class WindowAlvearyMutator extends Window {
@Override
public void initialiseClient() {
setTitle(I18N.localise("extrabees.machine.alveay.mutator"));
playerInventory = new ControlPlayerInventory(this);
ControlSlot slot = new ControlSlot(this, 79.0f, 30.0f);
slot.assign(AlvearyMutator.SLOT_MUTATOR);
final NBTTagList actions = new NBTTagList();
setTitle(machine.getPackage().getGuiDisplayName());
playerInventory = new ControlPlayerInventory(this).create(actions);
new ControlSlot(this, 79.0f, 30.0f).assign(actions, InventoryType.Machine, AlvearyMutator.SLOT_MUTATOR);
new ControlText(
this,
new IArea(0.0f, 52.0f, w(), 16.0f),
I18N.localise("extrabees.machine.alveay.mutator.mutagens"),
TextJustification.MIDDLE_CENTER).setColor(0x555555);
int size = AlvearyMutator.getMutagens().size();
int w = size * 18;
int w = size * 17;
if (size <= 0) {
return;
@@ -58,9 +63,12 @@ public class WindowAlvearyMutator extends Window {
for (ItemStack stack : AlvearyMutator.getMutagens()) {
ControlItemDisplay display = new ControlItemDisplay(this, x, 66.0f);
display.setItemStack(stack);
display.setSize(new IPoint(14, 14));
display.hastooltip = true;
x += 18.0f;
x += 17.0f;
}
MessageCraftGUI.sendToServer(actions);
}
@Override
@@ -2,16 +2,18 @@ package binnie.extrabees.gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlPlayerInventory;
import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.machines.Machine;
import binnie.core.machines.TileEntityMachine;
import binnie.core.util.I18N;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.extrabees.ExtraBees;
import binnie.extrabees.apiary.machine.stimulator.AlvearyStimulator;
import cpw.mods.fml.relauncher.Side;
@@ -35,11 +37,12 @@ public class WindowAlvearyStimulator extends Window {
@Override
public void initialiseClient() {
setTitle(I18N.localise("extrabees.machine.alveay.stimulator"));
final NBTTagList actions = new NBTTagList();
setTitle(machine.getPackage().getGuiDisplayName());
playerInventory = new ControlPlayerInventory(this).create(actions);
new ControlSlot(this, 41.0f, 28.0f).assign(actions, InventoryType.Machine, AlvearyStimulator.SLOT_CIRCUIT);
new ControlEnergyBar(this, 75, 29, 60, 16, Position.LEFT);
ControlSlot slot = new ControlSlot(this, 41.0f, 28.0f);
slot.assign(AlvearyStimulator.SLOT_CIRCUIT);
playerInventory = new ControlPlayerInventory(this);
MessageCraftGUI.sendToServer(actions);
}
@Override
@@ -21,9 +21,8 @@ public class ItemHoneyComb extends ItemProduct {
protected IIcon icon2;
public ItemHoneyComb() {
super(EnumHoneyComb.values());
super("honeyComb", EnumHoneyComb.values());
setCreativeTab(Tabs.tabApiculture);
setUnlocalizedName("honeyComb");
}
public static void addSubtypes() {
@@ -15,9 +15,8 @@ public class ItemHoneyDrop extends ItemProduct {
protected IIcon icon2;
public ItemHoneyDrop() {
super(EnumHoneyDrop.values());
super("honeyDrop", EnumHoneyDrop.values());
setCreativeTab(Tabs.tabApiculture);
setUnlocalizedName("honeyDrop");
}
@Override
@@ -1,5 +1,7 @@
package binnie.extrabees.products;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.creativetab.CreativeTabs;
@@ -12,11 +14,14 @@ public class ItemProduct extends Item {
protected IItemEnum[] types;
public ItemProduct(IItemEnum[] types) {
public ItemProduct(String name, IItemEnum[] types) {
this.types = types;
setMaxStackSize(64);
setMaxDamage(0);
setHasSubtypes(true);
setUnlocalizedName(name);
registerItem(this, getUnlocalizedName().substring(5));
}
public IItemEnum get(ItemStack stack) {
@@ -11,9 +11,8 @@ import forestry.api.core.Tabs;
public class ItemPropolis extends ItemProduct {
public ItemPropolis() {
super(EnumPropolis.values());
super("propolis", EnumPropolis.values());
setCreativeTab(Tabs.tabApiculture);
setUnlocalizedName("propolis");
}
@Override
@@ -97,4 +97,9 @@ public class BlockExtraBeeHive extends Block {
}
return ret;
}
@Override
public int damageDropped(int meta) {
return meta;
}
}
@@ -4,7 +4,6 @@ import static binnie.extratrees.ExtraTrees.EB_MOD_NAME;
import static binnie.extratrees.ExtraTrees.ET_MODID;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import com.gtnewhorizon.gtnhlib.config.ConfigException;
import com.gtnewhorizon.gtnhlib.config.ConfigurationManager;
@@ -13,6 +12,7 @@ import binnie.core.AbstractMod;
import binnie.core.BinnieCore;
import binnie.core.Tags;
import binnie.core.gui.IBinnieGUID;
import binnie.core.item.ItemMisc;
import binnie.core.network.BinniePacketHandler;
import binnie.core.proxy.IProxyCore;
import binnie.extrabees.ExtraBees;
@@ -26,6 +26,10 @@ import binnie.extratrees.config.ETConfig;
import binnie.extratrees.core.ExtraTreesGUID;
import binnie.extratrees.core.ModuleCore;
import binnie.extratrees.genetics.ModuleGenetics;
import binnie.extratrees.item.ItemDictionary;
import binnie.extratrees.item.ItemFood;
import binnie.extratrees.item.ItemHammer;
import binnie.extratrees.item.ItemMothDatabase;
import binnie.extratrees.item.ModuleItems;
import binnie.extratrees.machines.ModuleMachine;
import binnie.extratrees.nei.IMCForNEI;
@@ -41,8 +45,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
name = EB_MOD_NAME,
version = Tags.VERSION,
useMetadata = true,
dependencies = "after:BinnieCore",
guiFactory = "binnie.extratrees.config.ETConfigGUIFactory")
dependencies = "after:BinnieCore")
public class ExtraTrees extends AbstractMod {
public static final String ET_MODID = "ExtraTrees";
@@ -62,10 +65,13 @@ public class ExtraTrees extends AbstractMod {
}
}
public static Item itemDictionary;
public static Item itemDictionaryLepi;
public static Item itemMisc;
public static Item itemFood;
public static ItemDictionary itemDictionary;
public static ItemMothDatabase itemDictionaryLepi;
public static ItemMisc itemMisc;
public static ItemFood itemFood;
public static ItemHammer itemHammer;
public static ItemHammer itemDurableHammer;
public static Block blockStairs;
public static Block blockLog;
public static BlockCarpentry blockCarpentry;
@@ -76,13 +82,12 @@ public class ExtraTrees extends AbstractMod {
public static BlockCarpentry blockPanel;
public static Block blockSlab;
public static Block blockDoubleSlab;
public static Item itemHammer;
public static Item itemDurableHammer;
public static Block blockGate;
public static Block blockDoor;
public static BlockMultiFence blockMultiFence;
public static BlockHedge blockHedge;
public static BlockStainedDesign blockStained;
public static int doorRenderId;
public static int branchRenderId;
public static int fenceID;
@@ -11,6 +11,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
@@ -40,36 +41,12 @@ public abstract class BlockDesign extends BlockMetadata implements IMultipassBlo
designSystem = system;
}
public static int getMetadata(int plank1, int plank2, int design) {
return plank1 + (plank2 << 9) + (design << 18);
public void registerHandler() {
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@SubscribeEvent
public void onClick(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
return;
}
World world = event.entityPlayer.worldObj;
EntityPlayer player = event.entityPlayer;
int x = event.x;
int y = event.y;
int z = event.z;
if (!(world.getBlock(x, y, z) instanceof BlockDesign blockDesign)) {
return;
}
ItemStack item = player.getHeldItem();
if (item == null || !(item.getItem() instanceof IToolHammer)
|| !((IToolHammer) item.getItem()).isActive(item)) {
return;
}
DesignBlock carpentryBlock = blockDesign.getCarpentryBlock(world, x, y, z);
TileEntityMetadata tile = (TileEntityMetadata) world.getTileEntity(x, y, z);
carpentryBlock.rotate(event.face, item, player, world, x, y, z);
int meta = carpentryBlock.getBlockMetadata(blockDesign.getDesignSystem());
tile.setTileMetadata(meta, true);
public static int getMetadata(int plank1, int plank2, int design) {
return plank1 + (plank2 << 9) + (design << 18);
}
public abstract ItemStack getCreativeStack(IDesign design);
@@ -160,4 +137,35 @@ public abstract class BlockDesign extends BlockMetadata implements IMultipassBlo
public int getNumberOfPasses() {
return 2;
}
public static class EventHandler {
@SubscribeEvent
public void onClick(PlayerInteractEvent event) {
if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
return;
}
World world = event.entityPlayer.worldObj;
EntityPlayer player = event.entityPlayer;
int x = event.x;
int y = event.y;
int z = event.z;
if (!(world.getBlock(x, y, z) instanceof BlockDesign blockDesign)) {
return;
}
ItemStack item = player.getHeldItem();
if (item == null || !(item.getItem() instanceof IToolHammer)
|| !((IToolHammer) item.getItem()).isActive(item)) {
return;
}
DesignBlock carpentryBlock = blockDesign.getCarpentryBlock(world, x, y, z);
TileEntityMetadata tile = (TileEntityMetadata) world.getTileEntity(x, y, z);
carpentryBlock.rotate(event.face, item, player, world, x, y, z);
int meta = carpentryBlock.getBlockMetadata(blockDesign.getDesignSystem());
tile.setTileMetadata(meta, true);
}
}
}
@@ -2,7 +2,6 @@ package binnie.extratrees.carpentry;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
import binnie.core.BinnieCore;
@@ -81,21 +80,18 @@ public class ModuleCarpentry implements IInitializable {
@Override
public void preInit() {
// spotless:off
ExtraTrees.blockCarpentry = new BlockCarpentry();
ExtraTrees.blockPanel = new BlockCarpentryPanel();
ExtraTrees.blockStained = new BlockStainedDesign();
GameRegistry.registerBlock(ExtraTrees.blockCarpentry, ItemMetadata.class, "carpentry");
GameRegistry.registerBlock(ExtraTrees.blockPanel, ItemMetadata.class, "panel");
GameRegistry.registerBlock(ExtraTrees.blockStained, ItemMetadata.class, "stainedglass");
BinnieCore.proxy.registerCustomItemRenderer(
Item.getItemFromBlock(ExtraTrees.blockCarpentry),
new MultipassItemRenderer());
BinnieCore.proxy.registerCustomItemRenderer(
Item.getItemFromBlock(ExtraTrees.blockStained),
new MultipassItemRenderer());
MinecraftForge.EVENT_BUS.register(ExtraTrees.blockCarpentry);
BinnieCore.proxy
.registerCustomItemRenderer(Item.getItemFromBlock(ExtraTrees.blockPanel), new MultipassItemRenderer());
BinnieCore.proxy.registerCustomItemRenderer(Item.getItemFromBlock(ExtraTrees.blockCarpentry), new MultipassItemRenderer());
BinnieCore.proxy.registerCustomItemRenderer(Item.getItemFromBlock(ExtraTrees.blockStained), new MultipassItemRenderer());
ExtraTrees.blockCarpentry.registerHandler();
BinnieCore.proxy.registerCustomItemRenderer(Item.getItemFromBlock(ExtraTrees.blockPanel), new MultipassItemRenderer());
// spotless:on
}
@Override
@@ -1,16 +0,0 @@
package binnie.extratrees.config;
import static binnie.extratrees.ExtraTrees.EB_MOD_NAME;
import static binnie.extratrees.ExtraTrees.ET_MODID;
import net.minecraft.client.gui.GuiScreen;
import com.gtnewhorizon.gtnhlib.config.ConfigException;
import com.gtnewhorizon.gtnhlib.config.SimpleGuiConfig;
public class ETConfigGUI extends SimpleGuiConfig {
public ETConfigGUI(GuiScreen parent) throws ConfigException {
super(parent, ETConfig.class, ET_MODID, EB_MOD_NAME);
}
}
@@ -1,13 +0,0 @@
package binnie.extratrees.config;
import net.minecraft.client.gui.GuiScreen;
import com.gtnewhorizon.gtnhlib.config.SimpleGuiFactory;
public class ETConfigGUIFactory implements SimpleGuiFactory {
@Override
public Class<? extends GuiScreen> mainConfigGuiClass() {
return ETConfigGUI.class;
}
}
@@ -2,9 +2,11 @@ package binnie.extratrees.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -12,6 +14,7 @@ import binnie.core.craftgui.minecraft.control.ControlLiquidTank;
import binnie.core.craftgui.minecraft.control.ControlPlayerInventory;
import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.machines.Machine;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.extratrees.ExtraTrees;
import binnie.extratrees.machines.lumbermill.Lumbermill;
import cpw.mods.fml.relauncher.Side;
@@ -38,15 +41,20 @@ public class WindowLumbermill extends Window {
@Override
public void initialiseClient() {
setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
new ControlSlot(this, 42.0f, 43.0f).assign(Lumbermill.SLOT_WOOD);
new ControlSlot(this, 148.0f, 43.0f).assign(Lumbermill.SLOT_PLANKS);
new ControlSlot(this, 172.0f, 28.0f).assign(Lumbermill.SLOT_BARK);
new ControlSlot(this, 172.0f, 58.0f).assign(Lumbermill.SLOT_SAWDUST);
final NBTTagList actions = new NBTTagList();
setTitle(Machine.getMachine(getInventory()).getPackage().getGuiDisplayName());
new ControlSlot(this, 42.0f, 43.0f).assign(actions, InventoryType.Machine, Lumbermill.SLOT_WOOD);
new ControlSlot(this, 148.0f, 43.0f).assign(actions, InventoryType.Machine, Lumbermill.SLOT_PLANKS);
new ControlSlot(this, 172.0f, 28.0f).assign(actions, InventoryType.Machine, Lumbermill.SLOT_BARK);
new ControlSlot(this, 172.0f, 58.0f).assign(actions, InventoryType.Machine, Lumbermill.SLOT_SAWDUST);
new ControlLumbermillProgress(this, 70.0f, 43.0f);
new ControlLiquidTank(this, 16, 32);
new ControlEnergyBar(this, 8, 112, 16, 60, Position.BOTTOM);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
new ControlErrorState(this, 95.0f, 73.0f);
MessageCraftGUI.sendToServer(actions);
}
}
@@ -2,6 +2,7 @@ package binnie.extratrees.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.controls.ControlText;
@@ -12,6 +13,7 @@ import binnie.core.craftgui.events.EventTextEdit;
import binnie.core.craftgui.geometry.IArea;
import binnie.core.craftgui.geometry.IPoint;
import binnie.core.craftgui.geometry.TextJustification;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.MinecraftGUI;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -19,6 +21,7 @@ import binnie.core.craftgui.minecraft.control.ControlPlayerInventory;
import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.craftgui.window.Panel;
import binnie.core.machines.Machine;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extratrees.ExtraTrees;
import binnie.extratrees.machines.designer.Designer;
@@ -48,7 +51,9 @@ public class WindowWoodworker extends Window {
@Override
public void initialiseClient() {
setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
final NBTTagList actions = new NBTTagList();
setTitle(Machine.getMachine(getInventory()).getPackage().getGuiDisplayName());
new ControlText(
this,
new IArea(190.0f, 36.0f, 114.0f, 10.0f),
@@ -58,18 +63,25 @@ public class WindowWoodworker extends Window {
textEdit = new ControlTextEdit(this, 188.0f, 178.0f, 118.0f, 12.0f);
ControlScrollableContent scroll = new ControlScrollableContent(this, 190.0f, 50.0f, 114.0f, 122.0f, 12.0f);
scroll.setScrollableContent(tileSelect = new ControlTileSelect(scroll, 0.0f, 0.0f));
new ControlPlayerInventory(this).setPosition(new IPoint(14.0f, 96.0f));
ControlPlayerInventory controlPlayerInventory = new ControlPlayerInventory(this);
controlPlayerInventory.setPosition(new IPoint(14.0f, 96.0f));
controlPlayerInventory.create(actions);
new ControlErrorState(this, 76.0f, 65.0f);
if (getInventory() != null) {
ControlSlot slotWood1 = new ControlSlot(this, 22.0f, 34.0f);
slotWood1.assign(Designer.DESIGN_1_SLOT);
slotWood1.assign(actions, InventoryType.Machine, Designer.DESIGN_1_SLOT);
ControlSlot slotWood2 = new ControlSlot(this, 62.0f, 34.0f);
slotWood2.assign(Designer.DESIGN_2_SLOT);
slotWood2.assign(actions, InventoryType.Machine, Designer.DESIGN_2_SLOT);
ControlSlot slotBeeswax = new ControlSlot(this, 42.0f, 64.0f);
slotBeeswax.assign(Designer.GLUE_SLOT);
slotBeeswax.assign(actions, InventoryType.Machine, Designer.GLUE_SLOT);
new ControlRecipeSlot(this, 112, 34);
}
MessageCraftGUI.sendToServer(actions);
}
@Override
@@ -376,7 +376,7 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider {
float modeYieldMod = 1.0f;
for (Map.Entry<ItemStack, Float> entry2 : products.entrySet()) {
if (world.rand.nextFloat() <= genome.getYield() * modeYieldMod * entry2.getValue() * stage) {
if (world.rand.nextFloat() <= genome.getYield() * modeYieldMod * entry2.getValue() * 5.0f * stage) {
product2.add(entry2.getKey().copy());
}
}
@@ -1,5 +1,7 @@
package binnie.extratrees.item;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -25,6 +27,8 @@ public class ItemDictionary extends Item {
setCreativeTab(Tabs.tabArboriculture);
setUnlocalizedName("database");
setMaxStackSize(1);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,5 +1,7 @@
package binnie.extratrees.item;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -24,6 +26,8 @@ public class ItemFood extends net.minecraft.item.ItemFood {
setCreativeTab(Tabs.tabArboriculture);
setHasSubtypes(true);
items = Food.values();
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,5 +1,7 @@
package binnie.extratrees.item;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
@@ -22,6 +24,8 @@ public class ItemHammer extends Item implements IToolHammer {
setUnlocalizedName(durable ? "durableHammer" : "hammer");
setMaxStackSize(1);
setMaxDamage(durable ? 1562 : 251);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -1,5 +1,7 @@
package binnie.extratrees.item;
import static cpw.mods.fml.common.registry.GameRegistry.registerItem;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -25,6 +27,8 @@ public class ItemMothDatabase extends Item {
setCreativeTab(Tabs.tabLepidopterology);
setUnlocalizedName("databaseMoth");
setMaxStackSize(1);
registerItem(this, getUnlocalizedName().substring(5));
}
@Override
@@ -28,7 +28,7 @@ public class ModuleItems implements IInitializable {
@Override
public void preInit() {
ExtraTrees.itemMisc = Binnie.Item.registerMiscItems(ExtraTreeItems.values(), Tabs.tabArboriculture);
ExtraTrees.itemMisc = new ItemMisc(Tabs.tabArboriculture, ExtraTreeItems.values());
ExtraTrees.itemDictionary = new ItemDictionary();
if (BinnieCore.isLepidopteryActive()) {
ExtraTrees.itemDictionaryLepi = new ItemMothDatabase();
@@ -93,7 +93,7 @@ public class WoodworkerRecipeComponent extends ComponentRecipe
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
if (name.equals("recipe")) {
InventoryPlayer playerInv = player.inventory;
ItemStack recipe = doRecipe(false);
+15 -10
View File
@@ -1,10 +1,9 @@
package binnie.genetics;
import net.minecraft.item.Item;
import binnie.core.AbstractMod;
import binnie.core.Tags;
import binnie.core.gui.IBinnieGUID;
import binnie.core.item.ItemMisc;
import binnie.core.machines.MachineGroup;
import binnie.core.network.BinniePacketHandler;
import binnie.core.network.IPacketID;
@@ -13,6 +12,10 @@ import binnie.genetics.core.GeneticsGUI;
import binnie.genetics.core.GeneticsPacket;
import binnie.genetics.item.ItemAnalyst;
import binnie.genetics.item.ItemDatabase;
import binnie.genetics.item.ItemMasterRegistry;
import binnie.genetics.item.ItemRegistry;
import binnie.genetics.item.ItemSequence;
import binnie.genetics.item.ItemSerum;
import binnie.genetics.item.ItemSerumArray;
import binnie.genetics.item.ModuleItem;
import binnie.genetics.machine.ModuleMachine;
@@ -38,18 +41,20 @@ public class Genetics extends AbstractMod {
@SidedProxy(clientSide = "binnie.genetics.proxy.ProxyClient", serverSide = "binnie.genetics.proxy.ProxyServer")
public static Proxy proxy;
public static ItemSerumArray itemSerumArray = null;
public static final String CHANNEL = "GEN";
public static Item itemGenetics;
public static Item itemSerum;
public static Item itemSequencer;
public static ItemSerumArray itemSerumArray = null;
public static ItemMisc itemGenetics;
public static ItemSerum itemSerum;
public static ItemSequence itemSequencer;
public static ItemDatabase database;
public static ItemAnalyst analyst;
public static ItemRegistry registry;
public static ItemMasterRegistry masterRegistry;
public static MachineGroup packageGenetic;
public static MachineGroup packageAdvGenetic;
public static MachineGroup packageLabMachine;
public static ItemDatabase database;
public static ItemAnalyst analyst;
public static Item registry;
public static Item masterRegistry;
public Genetics() {
Genetics.instance = this;
@@ -2,9 +2,11 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -13,6 +15,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extrabees.core.ExtraBeeTexture;
import binnie.genetics.Genetics;
@@ -40,22 +43,28 @@ public class WindowAcclimatiser extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 59;
int y = 32;
new ControlSlotArray(this, x, y, 2, 2).create(Acclimatiser.SLOT_RESERVE);
new ControlSlotArray(this, x, y, 2, 2).create(actions, InventoryType.Machine, Acclimatiser.SLOT_RESERVE);
x += 54;
new ControlSlot(this, x + 18, y).assign(Acclimatiser.SLOT_TARGET);
new ControlSlotArray(this, x, y + 18 + 18, 3, 1).create(Acclimatiser.SLOT_ACCLIMATISER);
new ControlSlot(this, x + 18, y).assign(actions, InventoryType.Machine, Acclimatiser.SLOT_TARGET);
new ControlSlotArray(this, x, y + 18 + 18, 3, 1)
.create(actions, InventoryType.Machine, Acclimatiser.SLOT_ACCLIMATISER);
x += 72;
new ControlSlotArray(this, x, y, 2, 2).create(Acclimatiser.SLOT_DONE);
new ControlSlotArray(this, x, y, 2, 2).create(actions, InventoryType.Machine, Acclimatiser.SLOT_DONE);
new ControlEnergyBar(this, 21, 115, 16, 60, Position.BOTTOM);
new ControlErrorState(this, 181.0f, 83.0f);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.labMachine.acclimatiser");
return I18N.localise("gui.genetics.machine.labMachine.acclimatiser.title");
}
@Override
@@ -2,10 +2,12 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.MinecraftGUI;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
@@ -19,6 +21,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlotCharge;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.craftgui.window.Panel;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extrabees.core.ExtraBeeTexture;
import binnie.genetics.Genetics;
@@ -47,13 +50,16 @@ public class WindowAnalyser extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
WindowAnalyser.progressBase = new StandardTexture(0, 51, 66, 40, GeneticsTexture.GUIProcess.getTexture());
WindowAnalyser.progress = new StandardTexture(66, 51, 66, 40, GeneticsTexture.GUIProcess.getTexture());
int x = 16;
int y = 32;
new ControlSlotArray(this, x, y, 2, 3).create(Analyser.SLOT_RESERVE);
new ControlSlotArray(this, x, y, 2, 3).create(actions, InventoryType.Machine, Analyser.SLOT_RESERVE);
x += 28;
new ControlSlot(this, x, y + 54 + 8).assign(13);
new ControlSlot(this, x, y + 54 + 8).assign(actions, InventoryType.Machine, 13);
new ControlSlotCharge(this, x + 20, y + 54 + 8, 13).setColor(10040319);
new ControlEnergyBar(this, x + 24 + 16, y + 54 + 8 + 1, 60, 16, Position.LEFT);
new ControlErrorState(this, x + 24 + 16 + 60 + 16, y + 54 + 8 + 1);
@@ -62,16 +68,18 @@ public class WindowAnalyser extends WindowMachine {
x += 56;
new Panel(this, x, y, 76.0f, 50.0f, MinecraftGUI.PanelType.Tinted);
new ControlProgress(this, x + 5, y + 5, WindowAnalyser.progressBase, WindowAnalyser.progress, Position.LEFT);
new ControlSlot(this, x + 38 - 9, y + 25 - 9).assign(Analyser.SLOT_TARGET);
new ControlSlot(this, x + 38 - 9, y + 25 - 9).assign(actions, InventoryType.Machine, Analyser.SLOT_TARGET);
new ControlIconDisplay(this, x + 76 + 2, y + 18, GUIIcon.ArrowRight.getIcon());
x += 96;
new ControlSlotArray(this, x, y, 2, 3).create(Analyser.SLOT_FINISHED);
new ControlPlayerInventory(this);
new ControlSlotArray(this, x, y, 2, 3).create(actions, InventoryType.Machine, Analyser.SLOT_FINISHED);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.labMachine.analyser");
return I18N.localise("gui.genetics.machine.labMachine.analyser.title");
}
@Override
@@ -46,7 +46,7 @@ public class WindowGeneBank extends WindowMachine {
protected ControlGeneScroll genes;
public WindowGeneBank(EntityPlayer player, IInventory inventory, Side side, boolean isNEI) {
super(320, 224, player, inventory, side);
super(400, 224, player, inventory, side);
isNei = isNEI;
}
@@ -55,8 +55,8 @@ public class WindowGeneBank extends WindowMachine {
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.recieveGuiNBT(side, player, name, nbt);
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
super.receiveGuiNBT(side, player, name, nbt);
if (side != Side.SERVER || !name.equals("gene-select")) {
return;
}
@@ -97,10 +97,10 @@ public class WindowGeneBank extends WindowMachine {
int boxX;
int x = 16;
int y = 32;
new ControlPlayerInventory(this, x, y);
new ControlPlayerInventory(this, x, y).createAndRegister();
x += 124;
boxX = x;
int geneBoxWidth = 120;
int geneBoxWidth = 200;
new Panel(this, boxX + 24, 32.0f, geneBoxWidth, 120.0f, MinecraftGUI.PanelType.Black);
new Panel(this, boxX + 24 + geneBoxWidth, 32.0f, 14.0f, 120.0f, MinecraftGUI.PanelType.Gray);
ControlScrollableContent scroll = new ControlScrollableContent(
@@ -2,10 +2,12 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -18,6 +20,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.minecraft.control.ControlSlotCharge;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extrabees.core.ExtraBeeTexture;
import binnie.genetics.Genetics;
@@ -40,18 +43,21 @@ public class WindowGenepool extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 16;
int y = 32;
new ControlLiquidTank(this, x, y).setTankID(Genepool.TANK_ETHANOL);
x += 26;
new ControlSlotArray(this, x, y + 3, 2, 3).create(Genepool.SLOT_RESERVE);
new ControlSlotArray(this, x, y + 3, 2, 3).create(actions, InventoryType.Machine, Genepool.SLOT_RESERVE);
x += 38;
new ControlIconDisplay(this, x, y + 22, GUIIcon.ArrowRight.getIcon());
x += 18;
new ControlSlot(this, x, y + 21).assign(Genepool.SLOT_BEE);
new ControlSlot(this, x, y + 21).assign(actions, InventoryType.Machine, Genepool.SLOT_BEE);
x += 18;
new ControlMachineProgress(this, x, y + 19, progressBase, progress, Position.LEFT);
@@ -59,15 +65,17 @@ public class WindowGenepool extends WindowMachine {
x += 130;
new ControlLiquidTank(this, x, y).setTankID(Genepool.TANK_DNA);
new ControlEnergyBar(this, 21, 115, 16, 60, Position.BOTTOM);
new ControlSlot(this, 121.0f, 82.0f).assign(Genepool.SLOT_ENZYME);
new ControlSlot(this, 121.0f, 82.0f).assign(actions, InventoryType.Machine, Genepool.SLOT_ENZYME);
new ControlSlotCharge(this, 143, 82, 7).setColor(0xefe8af);
new ControlErrorState(this, 181.0f, 83.0f);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.labMachine.genepool");
return I18N.localise("gui.genetics.machine.labMachine.genepool.title");
}
@Override
@@ -2,10 +2,12 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -17,6 +19,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.genetics.Genetics;
import binnie.genetics.core.GeneticsTexture;
@@ -39,11 +42,14 @@ public class WindowIncubator extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 16;
int y = 32;
new ControlLiquidTank(this, x, y).setTankID(Incubator.TANK_INPUT);
x += 26;
new ControlSlotArray(this, x, y + 3, 1, 3).create(Incubator.SLOT_QUEUE);
new ControlSlotArray(this, x, y + 3, 1, 3).create(actions, InventoryType.Machine, Incubator.SLOT_QUEUE);
x += 20;
new ControlIconDisplay(this, x, y + 3 + 10, GUIIcon.ArrowRight.getIcon());
x += 18;
@@ -54,22 +60,24 @@ public class WindowIncubator extends WindowMachine {
WindowIncubator.progressBase,
WindowIncubator.progress,
Position.LEFT);
new ControlSlot(this, x + 10, y + 3 + 10).assign(Incubator.SLOT_INCUBATOR);
new ControlSlot(this, x + 10, y + 3 + 10).assign(actions, InventoryType.Machine, Incubator.SLOT_INCUBATOR);
x += 40;
new ControlIconDisplay(this, x, y + 3 + 10, GUIIcon.ArrowRight.getIcon());
x += 18;
new ControlSlotArray(this, x, y + 3, 1, 3).create(Incubator.SLOT_OUTPUT);
new ControlSlotArray(this, x, y + 3, 1, 3).create(actions, InventoryType.Machine, Incubator.SLOT_OUTPUT);
x += 26;
new ControlLiquidTank(this, x, y).setTankID(Incubator.TANK_OUTPUT);
x += 34;
new ControlEnergyBar(this, x, y + 3, 16, 54, Position.BOTTOM);
new ControlErrorState(this, 91.0f, 82.0f);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.labMachine.incubator");
return I18N.localise("gui.genetics.machine.labMachine.incubator.title");
}
@Override
@@ -2,12 +2,14 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.CraftGUIUtil;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.geometry.TextJustification;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -19,6 +21,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.genetics.Genetics;
import binnie.genetics.core.GeneticsTexture;
@@ -41,17 +44,22 @@ public class WindowInoculator extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 16;
int y = 32;
new ControlLiquidTank(this, x, y + 18 + 16).setTankID(0);
CraftGUIUtil.horizontalGrid(
x,
y,
new ControlSlotArray(this, 0, 0, 2, 1).create(Inoculator.SLOT_SERUM_RESERVE),
new ControlSlotArray(this, 0, 0, 2, 1)
.create(actions, InventoryType.Machine, Inoculator.SLOT_SERUM_RESERVE),
new ControlIconDisplay(this, 0.0f, 0.0f, GUIIcon.ArrowRight.getIcon()),
new ControlSlot(this, 0.0f, 0.0f).assign(0),
new ControlSlot(this, 0.0f, 0.0f).assign(actions, InventoryType.Machine, 0),
new ControlIconDisplay(this, 0.0f, 0.0f, GUIIcon.ArrowRight.getIcon()),
new ControlSlotArray(this, 0, 0, 2, 1).create(Inoculator.SLOT_SERUM_EXPENDED));
new ControlSlotArray(this, 0, 0, 2, 1)
.create(actions, InventoryType.Machine, Inoculator.SLOT_SERUM_EXPENDED));
x += 18;
new ControlMachineProgress(
this,
@@ -68,17 +76,20 @@ public class WindowInoculator extends WindowMachine {
y,
TextJustification.MIDDLE_LEFT,
8.0f,
new ControlSlotArray(this, x, y, 4, 1).create(Inoculator.SLOT_RESERVE),
new ControlSlot(this, x, y + 18 + 8).assign(9),
new ControlSlotArray(this, x, y + 18 + 8 + 18 + 8, 4, 1).create(Inoculator.SLOT_FINISHED));
new ControlSlotArray(this, x, y, 4, 1).create(actions, InventoryType.Machine, Inoculator.SLOT_RESERVE),
new ControlSlot(this, x, y + 18 + 8).assign(actions, InventoryType.Machine, 9),
new ControlSlotArray(this, x, y + 18 + 8 + 18 + 8, 4, 1)
.create(actions, InventoryType.Machine, Inoculator.SLOT_FINISHED));
new ControlIconDisplay(this, x + 18, y + 18 + 2, GUIIcon.ArrowUpLeft.getIcon());
new ControlIconDisplay(this, x + 18, y + 18 + 18, GUIIcon.ArrowLeftDown.getIcon());
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.machine.inoculator");
return I18N.localise("gui.genetics.machine.machine.inoculator.title");
}
@Override
@@ -2,10 +2,12 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -18,6 +20,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.minecraft.control.ControlSlotCharge;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extrabees.core.ExtraBeeTexture;
import binnie.genetics.Genetics;
@@ -40,35 +43,40 @@ public class WindowIsolator extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 16;
int y = 32;
new ControlLiquidTank(this, x, y).setTankID(Isolator.TANK_ETHANOL);
x += 26;
new ControlSlotArray(this, x, y + 3, 1, 3).create(Isolator.SLOT_RESERVE);
new ControlSlotArray(this, x, y + 3, 1, 3).create(actions, InventoryType.Machine, Isolator.SLOT_RESERVE);
x += 20;
new ControlIconDisplay(this, x, y + 3 + 1, GUIIcon.ArrowRight.getIcon());
x += 18;
new ControlSlot(this, x, y + 3).assign(Isolator.SLOT_TARGET);
new ControlSlot(this, x, y + 36 + 3).assign(Isolator.SLOT_ENZYME);
new ControlSlot(this, x, y + 3).assign(actions, InventoryType.Machine, Isolator.SLOT_TARGET);
new ControlSlot(this, x, y + 36 + 3).assign(actions, InventoryType.Machine, Isolator.SLOT_ENZYME);
new ControlSlotCharge(this, x + 18 + 2, y + 36 + 3, 0).setColor(0xefe8af);
x += 18;
new ControlProgress(this, x, y + 3, WindowIsolator.ProgressBase, WindowIsolator.Progress, Position.LEFT);
x += 142;
new ControlSlot(this, x, y + 3).assign(Isolator.SLOT_RESULT);
new ControlSlot(this, x, y + 3 + 36).assign(Isolator.SLOT_SEQUENCER_VIAL);
new ControlSlot(this, x, y + 3).assign(actions, InventoryType.Machine, Isolator.SLOT_RESULT);
new ControlSlot(this, x, y + 3 + 36).assign(actions, InventoryType.Machine, Isolator.SLOT_SEQUENCER_VIAL);
new ControlIconDisplay(this, x + 1, y + 3 + 19, GUIIcon.ArrowUp.getIcon());
x += 20;
new ControlIconDisplay(this, x, y + 3 + 1, GUIIcon.ArrowRight.getIcon());
x += 18;
new ControlSlotArray(this, x, y + 3, 2, 3).create(Isolator.SLOT_FINISHED);
new ControlSlotArray(this, x, y + 3, 2, 3).create(actions, InventoryType.Machine, Isolator.SLOT_FINISHED);
new ControlEnergyBar(this, 260, 130, 16, 60, Position.BOTTOM);
new ControlErrorState(this, 153.0f, 81.0f);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.machine.isolator");
return I18N.localise("gui.genetics.machine.machine.isolator.title");
}
@Override
@@ -2,10 +2,12 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -18,6 +20,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.minecraft.control.ControlSlotCharge;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.genetics.Genetics;
import binnie.genetics.core.GeneticsTexture;
@@ -45,28 +48,34 @@ public class WindowPolymeriser extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 16;
int y = 38;
new ControlSlotArray(this, x, y, 1, 4).create(Polymeriser.SLOT_SERUM_RESERVE);
new ControlSlotArray(this, x, y, 1, 4).create(actions, InventoryType.Machine, Polymeriser.SLOT_SERUM_RESERVE);
new ControlIconDisplay(this, x + 18, y + 1, GUIIcon.ArrowRight.getIcon());
x += 34;
new ControlMachineProgress(this, x + 18, y - 6, progressBase, progress, Position.LEFT);
new ControlSlot(this, x, y).assign(Polymeriser.SLOT_SERUM);
new ControlSlot(this, x, y).assign(actions, InventoryType.Machine, Polymeriser.SLOT_SERUM);
new ControlLiquidTank(this, x, y + 18 + 16, true).setTankID(Polymeriser.TANK_BACTERIA);
new ControlLiquidTank(this, x, y + 18 + 16 + 18 + 8, true).setTankID(Polymeriser.TANK_DNA);
new ControlEnergyBar(this, x + 120, 96, 64, 16, Position.LEFT);
x += 40;
new ControlSlot(this, x + 30, y + 18 + 8).assign(Polymeriser.SLOT_GOLD);
new ControlSlot(this, x + 30, y + 18 + 8).assign(actions, InventoryType.Machine, Polymeriser.SLOT_GOLD);
new ControlSlotCharge(this, x + 30 + 20, y + 18 + 8, 1).setColor(0xffd800);
x += 138;
new ControlSlotArray(this, x, y + 9, 2, 2).create(Polymeriser.SLOT_SERUM_FINISHED);
new ControlSlotArray(this, x, y + 9, 2, 2)
.create(actions, InventoryType.Machine, Polymeriser.SLOT_SERUM_FINISHED);
new ControlErrorState(this, 244.0f, 97.0f);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.machine.polymeriser");
return I18N.localise("gui.genetics.machine.machine.polymeriser.title");
}
@Override
@@ -3,6 +3,7 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.EnumChatFormatting;
import binnie.core.AbstractMod;
@@ -12,6 +13,7 @@ import binnie.core.craftgui.geometry.IArea;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.geometry.TextJustification;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -22,6 +24,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.minecraft.control.ControlSlotCharge;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.extrabees.core.ExtraBeeTexture;
import binnie.genetics.Genetics;
@@ -49,18 +52,21 @@ public class WindowSequencer extends WindowMachine {
}
@Override
public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
public void receiveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt) {
if (side == Side.CLIENT && name.equals("username")) {
slotText.setValue(
EnumChatFormatting.DARK_GRAY
+ I18N.localise("genetics.machine.sequencer.gui.sequensedBy", nbt.getString("username")));
}
super.recieveGuiNBT(side, player, name, nbt);
super.receiveGuiNBT(side, player, name, nbt);
}
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 16;
int y = 32;
CraftGUIUtil.horizontalGrid(
@@ -68,13 +74,13 @@ public class WindowSequencer extends WindowMachine {
y,
TextJustification.MIDDLE_CENTER,
2.0f,
new ControlSlotArray(this, 0, 0, 2, 2).create(Sequencer.SLOT_RESERVE),
new ControlSlotArray(this, 0, 0, 2, 2).create(actions, InventoryType.Machine, Sequencer.SLOT_RESERVE),
new ControlIconDisplay(this, 0.0f, 0.0f, GUIIcon.ArrowRight.getIcon()),
new ControlSequencerProgress(this, 0, 0),
new ControlIconDisplay(this, 0.0f, 0.0f, GUIIcon.ArrowRight.getIcon()),
new ControlSlot(this, 0.0f, 0.0f).assign(6));
new ControlSlot(this, 0.0f, 0.0f).assign(actions, InventoryType.Machine, 6));
ControlSlot slotTarget = new ControlSlot(this, x + 96, y + 16);
slotTarget.assign(5);
slotTarget.assign(actions, InventoryType.Machine, 5);
x = 34;
y = 92;
slotText = new ControlText(
@@ -84,19 +90,21 @@ public class WindowSequencer extends WindowMachine {
TextJustification.MIDDLE_CENTER);
y += 20;
ControlSlot slotDye = new ControlSlot(this, x, y);
slotDye.assign(0);
slotDye.assign(actions, InventoryType.Machine, 0);
x += 20;
new ControlSlotCharge(this, x, y, 0).setColor(16750848);
x += 32;
new ControlEnergyBar(this, x, y, 60, 16, Position.LEFT);
x += 92;
new ControlErrorState(this, x, y + 1);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.machine.sequencer");
return I18N.localise("gui.genetics.machine.machine.sequencer.title");
}
@Override
@@ -2,12 +2,14 @@ package binnie.genetics.craftgui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagList;
import binnie.core.AbstractMod;
import binnie.core.craftgui.geometry.CraftGUIUtil;
import binnie.core.craftgui.geometry.Position;
import binnie.core.craftgui.geometry.TextJustification;
import binnie.core.craftgui.minecraft.GUIIcon;
import binnie.core.craftgui.minecraft.InventoryType;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.minecraft.control.ControlEnergyBar;
import binnie.core.craftgui.minecraft.control.ControlErrorState;
@@ -17,6 +19,7 @@ import binnie.core.craftgui.minecraft.control.ControlSlot;
import binnie.core.craftgui.minecraft.control.ControlSlotArray;
import binnie.core.craftgui.resource.Texture;
import binnie.core.craftgui.resource.minecraft.StandardTexture;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.genetics.Genetics;
import binnie.genetics.core.GeneticsTexture;
@@ -45,15 +48,20 @@ public class WindowSplicer extends WindowMachine {
@Override
public void initialiseClient() {
super.initialiseClient();
final NBTTagList actions = new NBTTagList();
int x = 16;
new ControlSplicerProgress(this, 84.0f, 32.0f, w() - 172.0f, 102.0f);
CraftGUIUtil.horizontalGrid(
x,
62.0f,
new ControlSlotArray(this, 0, 0, 2, 1).create(Splicer.SLOT_SERUM_RESERVE),
new ControlSlotArray(this, 0, 0, 2, 1)
.create(actions, InventoryType.Machine, Splicer.SLOT_SERUM_RESERVE),
new ControlIconDisplay(this, 0.0f, 0.0f, GUIIcon.ArrowRight.getIcon()),
new ControlSlot(this, 0.0f, 0.0f).assign(Splicer.SLOT_SERUM_VIAL));
new ControlSlotArray(this, x + 12, 84, 2, 1).create(Splicer.SLOT_SERUM_EXPENDED);
new ControlSlot(this, 0.0f, 0.0f).assign(actions, InventoryType.Machine, Splicer.SLOT_SERUM_VIAL));
new ControlSlotArray(this, x + 12, 84, 2, 1)
.create(actions, InventoryType.Machine, Splicer.SLOT_SERUM_EXPENDED);
new ControlIconDisplay(this, x + 12 + 36 + 4, 86.0f, GUIIcon.ArrowUpLeft.getIcon());
new ControlEnergyBar(this, 196, 64, 60, 16, Position.LEFT);
new ControlErrorState(this, 218.0f, 86.0f);
@@ -62,17 +70,20 @@ public class WindowSplicer extends WindowMachine {
32.0f,
TextJustification.MIDDLE_CENTER,
4.0f,
new ControlSlotArray(this, 0, 0, 4, 1).create(Inoculator.SLOT_RESERVE),
new ControlSlotArray(this, 0, 0, 4, 1).create(actions, InventoryType.Machine, Inoculator.SLOT_RESERVE),
new ControlIconDisplay(this, 0.0f, 0.0f, GUIIcon.ArrowDown.getIcon()),
new ControlSlot(this, 0.0f, 0.0f).assign(Splicer.SLOT_TARGET),
new ControlSlot(this, 0.0f, 0.0f).assign(actions, InventoryType.Machine, Splicer.SLOT_TARGET),
new ControlIconDisplay(this, 0.0f, 0.0f, GUIIcon.ArrowDown.getIcon()),
new ControlSlotArray(this, 0, 0, 4, 1).create(Inoculator.SLOT_FINISHED));
new ControlPlayerInventory(this);
new ControlSlotArray(this, 0, 0, 4, 1)
.create(actions, InventoryType.Machine, Inoculator.SLOT_FINISHED));
new ControlPlayerInventory(this).create(actions);
MessageCraftGUI.sendToServer(actions);
}
@Override
public String getTitle() {
return I18N.localise("genetics.machine.advMachine.splicer");
return I18N.localise("gui.genetics.machine.advMachine.splicer.title");
}
@Override
@@ -6,6 +6,7 @@ import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagList;
import binnie.Binnie;
import binnie.botany.api.IFlower;
@@ -34,6 +35,7 @@ import binnie.core.craftgui.resource.minecraft.CraftGUITexture;
import binnie.core.craftgui.window.Panel;
import binnie.core.genetics.BreedingSystem;
import binnie.core.machines.inventory.SlotValidator;
import binnie.core.network.packet.MessageCraftGUI;
import binnie.core.util.I18N;
import binnie.genetics.Genetics;
import binnie.genetics.item.GeneticsItems;
@@ -121,12 +123,12 @@ public class WindowAnalyst extends Window {
public void initialiseClient() {
if (isDatabase) {
if (isMaster) {
setTitle(I18N.localise("genetics.item.registry.1.name"));
setTitle(I18N.localise("genetics.gui.registry.1.title"));
} else {
setTitle(I18N.localise("genetics.item.registry.0.name"));
setTitle(I18N.localise("genetics.gui.registry.title"));
}
} else {
setTitle(I18N.localise("genetics.item.analyst.name"));
setTitle(I18N.localise("genetics.gui.analyst.title"));
}
getWindowInventory().createSlot(0);
@@ -170,11 +172,13 @@ public class WindowAnalyst extends Window {
x += 22;
}
} else {
new ControlSlot(this, x, y + 1).assign(InventoryType.Window, 0);
final NBTTagList actions = new NBTTagList();
new ControlSlot(this, x, y + 1).assign(actions, InventoryType.Window, 0);
x += 22;
new ControlSlot(this, x, y + 1).assign(InventoryType.Window, 1);
new ControlSlot(this, x, y + 1).assign(actions, InventoryType.Window, 1);
x += 26;
setupValidators();
MessageCraftGUI.sendToServer(actions);
}
tabBar = new Control(this, x, 28.0f, w() - 16.0f - x, 20.0f);
analystPanel = new Panel(this, 16.0f, 54.0f, 280.0f, 164.0f, MinecraftGUI.PanelType.Outline) {
@@ -275,7 +279,7 @@ public class WindowAnalyst extends Window {
244.0f,
80.0f,
Position.BOTTOM);
new ControlPlayerInventory(slideUpInv, true);
new ControlPlayerInventory(slideUpInv, true).createAndRegister();
slideUpInv.setSlide(false);
}
addEventHandler(new EventKey.Down.Handler() {
@@ -297,7 +301,7 @@ public class WindowAnalyst extends Window {
@Override
public void initialise() {
new ControlTextCentered(this, 20.0f, I18N.localise("genetics.gui.analyst.info")).setColor(0x444444);
new ControlPlayerInventory(this);
new ControlPlayerInventory(this).createAndRegister();
}
};
}
Loaded 100 of 117 files, more files were not shown because too many files have changed in this diff. Show more