Compare commits

...
19 Commits
Author SHA1 Message Date
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
Martin Robertz 8d0fa2ebb5 update 2024-12-30 21:12:54 +01:00
glowredman 0db05cb60c Add Localization, Fix Carpentry Hammer / Master Carpentry Hammer Names being reverse (#57) 2024-12-30 21:11:13 +01:00
0265d70a53 Yeet custom config in favor of NHLib (#53)
Co-authored-by: Martin Robertz <[email protected]>
Co-authored-by: Maya <[email protected]>
2024-12-29 12:37:43 -06:00
Martin Robertz 32b7efcd15 update 2024-12-22 01:17:03 +01:00
Guillaume Mercier 7059206cb0 prevent npe and log bad requests (#55) 2024-12-21 10:35:14 -06:00
Martin Robertz 54c702e935 update 2024-11-13 07:12:13 +01:00
Ryan Nasers a3aa358627 Fixing Waila showing incorrect blocks for logs (#54) 2024-11-12 22:04:26 +01:00
84 changed files with 555 additions and 1272 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.9.16:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.5.11:dev')
api('com.github.GTNewHorizons:ForestryMC:4.10.13:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.6.36:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.6.38-GTNH:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.7.60-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.44:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly("curse.maven:extrabiomesxl-60041:2273301")
}
+1 -1
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.
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.9-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+2 -3
View File
@@ -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
@@ -206,7 +205,7 @@ 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.
+1 -1
View File
@@ -17,5 +17,5 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.27'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.38'
}
-2
View File
@@ -8,14 +8,12 @@ import binnie.core.genetics.ManagerGenetics;
import binnie.core.item.ManagerItem;
import binnie.core.liquid.ManagerLiquid;
import binnie.core.machines.ManagerMachine;
import binnie.core.mod.config.ManagerConfig;
import binnie.core.resource.ManagerResource;
public final class Binnie {
public static List<ManagerBase> Managers = new ArrayList<>();
public static ManagerGenetics Genetics = new ManagerGenetics();
public static ManagerConfig Configuration = new ManagerConfig();
public static ManagerLiquid Liquid = new ManagerLiquid();
public static ManagerMachine Machine = new ManagerMachine();
public static ManagerItem Item = new ManagerItem();
+136 -133
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;
@@ -92,6 +93,7 @@ public class Botany extends AbstractMod {
public Botany() {
Botany.instance = this;
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Mod.EventHandler
@@ -142,118 +144,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,27 +177,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);
}
}
@Override
public boolean isActive() {
return BinnieCore.isBotanyActive();
}
@Mod.EventHandler
public void onIMC(FMLInterModComms.IMCEvent event) {
for (FMLInterModComms.IMCMessage message : event.getMessages()) {
@@ -338,4 +207,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);
}
}
}
}
@@ -34,6 +34,7 @@ public class BlockStained extends Block implements IBlockMetadata {
public BlockStained() {
super(Material.glass);
setHardness(0.3f);
setCreativeTab(CreativeTabBotany.instance);
setBlockName("stained");
}
+4 -16
View File
@@ -6,9 +6,6 @@ import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import net.minecraftforge.common.MinecraftForge;
import binnie.Binnie;
import binnie.core.gui.IBinnieGUID;
import binnie.core.mod.parser.FieldParser;
import binnie.core.network.BinniePacketHandler;
@@ -30,10 +27,11 @@ public abstract class AbstractMod implements IPacketProvider, IInitializable {
fields = new LinkedHashSet<>();
modules = new ArrayList<>();
BinnieCore.registerMod(this);
MinecraftForge.EVENT_BUS.register(this);
}
public abstract boolean isActive();
public boolean isActive() {
return true;
}
@Override
public abstract String getChannel();
@@ -47,10 +45,6 @@ public abstract class AbstractMod implements IPacketProvider, IInitializable {
return new IBinnieGUID[0];
}
public Class<?>[] getConfigs() {
return new Class[0];
}
public abstract IProxyCore getProxy();
public abstract String getModID();
@@ -67,12 +61,6 @@ public abstract class AbstractMod implements IPacketProvider, IInitializable {
return;
}
if (getConfigs() != null) {
for (Class<?> cls : getConfigs()) {
Binnie.Configuration.registerConfiguration(cls, this);
}
}
getProxy().preInit();
for (IInitializable module : modules) {
module.preInit();
@@ -140,6 +128,6 @@ public abstract class AbstractMod implements IPacketProvider, IInitializable {
protected void addModule(IInitializable init) {
modules.add(init);
MinecraftForge.EVENT_BUS.register(init);
init.registerEventHandler();
}
}
+39 -47
View File
@@ -5,9 +5,9 @@ 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;
@@ -22,8 +22,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.config.ConfigurationMain;
import binnie.core.mod.config.ConfigurationMods;
import binnie.core.mod.parser.FieldParser;
import binnie.core.mod.parser.ItemParser;
import binnie.core.network.BinnieCorePacketID;
@@ -49,13 +47,16 @@ import forestry.api.core.ForestryEvent;
import forestry.plugins.PluginManager;
@Mod(
modid = "BinnieCore",
name = "Binnie Core",
modid = BinnieCore.CORE_MODID,
name = BinnieCore.CORE_MOD_NAME,
version = Tags.VERSION,
useMetadata = true,
dependencies = "after:Forestry@[4.2,),required-after:gtnhlib@[0.0.10,)")
public class BinnieCore extends AbstractMod {
public static final String CORE_MODID = "BinnieCore";
public static final String CORE_MOD_NAME = "Binnie Core";
@Mod.Instance("BinnieCore")
public static BinnieCore instance;
@@ -68,9 +69,12 @@ 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) {
Binnie.Configuration.registerConfiguration(ConfigurationMods.class, this);
for (ManagerBase baseManager : Binnie.Managers) {
addModule(baseManager);
}
@@ -134,20 +138,12 @@ public class BinnieCore extends AbstractMod {
return PluginManager.Module.ARBORICULTURE.isEnabled();
}
public static boolean isBotanyActive() {
return ConfigurationMods.botany;
}
public static boolean isGeneticsActive() {
return ConfigurationMods.genetics;
}
public static boolean isExtraBeesActive() {
return ConfigurationMods.extraBees && isApicultureActive();
return isApicultureActive();
}
public static boolean isExtraTreesActive() {
return ConfigurationMods.extraTrees && isArboricultureActive();
return isArboricultureActive();
}
@Override
@@ -169,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";
@@ -206,20 +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
public Class<?>[] getConfigs() {
return new Class[] { ConfigurationMain.class };
}
@Override
protected Class<? extends BinniePacketHandler> getPacketHandler() {
return PacketHandler.class;
@@ -236,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() {}
}
+1
View File
@@ -14,6 +14,7 @@ public class Mods {
public static final Mod botania = new Mod("Botania");
public static final Mod extraBiomes = new Mod("ExtrabiomesXL");
public static final Mod dreamcraft = new Mod("dreamcraft");
public static final Mod buildcraftCore = new Mod("BuildCraft|Core");
private static Item findItem(String modId, String name) {
Item stack = GameRegistry.findItem(modId, name);
@@ -1,7 +1,5 @@
package binnie.core.craftgui.minecraft.control;
import net.minecraft.inventory.IInventory;
import org.lwjgl.opengl.GL11;
import binnie.core.craftgui.CraftGUI;
@@ -17,8 +15,6 @@ import binnie.core.craftgui.minecraft.MinecraftTooltip;
import binnie.core.craftgui.minecraft.Window;
import binnie.core.craftgui.resource.minecraft.CraftGUITexture;
import binnie.core.machines.Machine;
import binnie.core.machines.TileEntityMachine;
import binnie.core.machines.power.IPoweredMachine;
import binnie.core.machines.power.IProcess;
import binnie.core.util.I18N;
@@ -34,17 +30,6 @@ public class ControlEnergyBar extends Control implements ITooltip {
addAttribute(WidgetAttribute.MOUSE_OVER);
}
// TODO unused method?
public IPoweredMachine getClientPower() {
IInventory inventory = Window.get(this).getInventory();
TileEntityMachine machine = (inventory instanceof TileEntityMachine) ? (TileEntityMachine) inventory : null;
if (machine == null) {
return null;
}
return machine.getMachine().getInterface(IPoweredMachine.class);
}
public float getPercentage() {
float percentage = 100.0f * getStoredEnergy() / getMaxEnergy();
if (percentage > 100.0f) {
@@ -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;
@@ -58,9 +59,8 @@ public class ManagerGenetics extends ManagerBase {
if (BinnieCore.isLepidopteryActive()) {
mothBreedingSystem = new MothBreedingSystem();
}
if (BinnieCore.isBotanyActive()) {
flowerBreedingSystem = new FlowerBreedingSystem();
}
flowerBreedingSystem = new FlowerBreedingSystem();
}
@Override
@@ -68,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");
}
@@ -141,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()) {
@@ -220,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();
}
}
}
+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 (!BinnieCore.isBotanyActive() || 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);
}
}
}
}
@@ -5,6 +5,4 @@ import binnie.core.network.IOrdinaled;
public interface IMachineType extends IOrdinaled {
Class<? extends MachinePackage> getPackageClass();
boolean isActive();
}
@@ -31,14 +31,14 @@ public class MachineGroup {
this.blockName = blockName;
for (IMachineType type : types) {
if (type.getPackageClass() != null && type.isActive()) {
if (type.getPackageClass() != null) {
try {
MachinePackage pack = type.getPackageClass().newInstance();
pack.assignMetadata(type.ordinal());
pack.setActive(type.isActive());
pack.setActive(true);
addPackage(pack);
} catch (Exception e) {
throw new RuntimeException("Failed to create machine package " + type.toString(), e);
throw new RuntimeException("Failed to create machine package " + type, e);
}
}
}
@@ -1,233 +0,0 @@
package binnie.core.machines.inventory;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidTank;
import binnie.core.machines.Machine;
import binnie.core.machines.power.ITankMachine;
// TODO unused class?
public class TransferHandler {
public static ItemStack transfer(ItemStack item, IInventory origin, IInventory destination, boolean doAdd) {
ItemStack ret = transferItemToInventory(item, destination, doAdd);
if (destination instanceof ITankMachine) {
ret = transferContainerIntoTank(ret, origin, (ITankMachine) destination, doAdd);
ret = transferTankIntoContainer(ret, origin, (ITankMachine) destination, doAdd);
}
return ret;
}
public static ItemStack transferItemToInventory(ItemStack item, IInventory destination, boolean doAdd) {
if (item == null || destination == null) {
return item;
}
ItemStack addition = item.copy();
for (int i = 0; i < destination.getSizeInventory(); ++i) {
addition = transferToInventory(addition, destination, new int[] { i }, doAdd, false);
if (addition == null) {
return null;
}
}
return addition;
}
public static ItemStack transferToInventory(ItemStack item, IInventory destination, int[] targetSlots,
boolean doAdd, boolean ignoreValidation) {
for (int i : targetSlots) {
if (destination.isItemValidForSlot(i, item) || ignoreValidation) {
if (destination.getStackInSlot(i) == null) {
if (doAdd) {
destination.setInventorySlotContents(i, item.copy());
}
return null;
}
if (item.isStackable()) {
ItemStack merged = destination.getStackInSlot(i).copy();
ItemStack[] newStacks = mergeStacks(item.copy(), merged.copy());
item = newStacks[0];
if (doAdd) {
destination.setInventorySlotContents(i, newStacks[1]);
}
if (item == null) {
return null;
}
}
}
}
return item;
}
public static ItemStack[] mergeStacks(ItemStack itemstack, ItemStack merged) {
if (ItemStack.areItemStackTagsEqual(itemstack, merged) && itemstack.isItemEqual(merged)) {
int space = merged.getMaxStackSize() - merged.stackSize;
if (space > 0) {
if (itemstack.stackSize > space) {
itemstack.stackSize -= space;
merged.stackSize += space;
} else {
merged.stackSize += itemstack.stackSize;
itemstack = null;
}
}
}
return new ItemStack[] { itemstack, merged };
}
public static ItemStack transferContainerIntoTank(ItemStack item, IInventory origin, ITankMachine destination,
boolean doAdd) {
if (item == null) {
return null;
}
IFluidTank[] tanks = destination.getTanks();
ItemStack stack = item.copy();
for (int i = 0; i < tanks.length; ++i) {
stack = transferToTank(stack, origin, destination, i, doAdd);
}
return stack;
}
public static ItemStack transferTankIntoContainer(ItemStack item, IInventory origin, ITankMachine destination,
boolean doAdd) {
if (item == null) {
return null;
}
IFluidTank[] tanks = destination.getTanks();
ItemStack stack = item.copy();
for (int i = 0; i < tanks.length; ++i) {
stack = transferFromTank(stack, origin, destination, i, doAdd);
}
return stack;
}
public static ItemStack transferToTank(ItemStack item, IInventory origin, ITankMachine destination, int tankID,
boolean doAdd) {
if (item == null) {
return item;
}
FluidStack containerLiquid = null;
FluidContainerRegistry.FluidContainerData containerLiquidData = null;
for (FluidContainerRegistry.FluidContainerData data : FluidContainerRegistry
.getRegisteredFluidContainerData()) {
if (data.filledContainer.isItemEqual(item)) {
containerLiquidData = data;
containerLiquid = data.fluid.copy();
break;
}
}
if (containerLiquid == null) {
return item;
}
IFluidTank tank = destination.getTanks()[tankID];
IValidatedTankContainer validated = Machine.getInterface(IValidatedTankContainer.class, destination);
if (validated != null && !validated.isLiquidValidForTank(containerLiquid, tankID)) {
return item;
}
FluidStack largeAmountOfLiquid = containerLiquid.copy();
largeAmountOfLiquid.amount = tank.getCapacity();
int amountAdded = tank.fill(largeAmountOfLiquid, false);
int numberOfContainersToAdd = amountAdded / containerLiquid.amount;
if (numberOfContainersToAdd > item.stackSize) {
numberOfContainersToAdd = item.stackSize;
}
ItemStack copy;
ItemStack leftOverContainers = copy = item.copy();
copy.stackSize -= numberOfContainersToAdd;
if (leftOverContainers.stackSize <= 0) {
leftOverContainers = null;
}
ItemStack emptyContainers = containerLiquidData.emptyContainer.copy();
emptyContainers.stackSize = 0;
ItemStack itemStack = emptyContainers;
itemStack.stackSize += numberOfContainersToAdd;
if (emptyContainers.stackSize <= 0) {
emptyContainers = null;
}
ItemStack containersThatCantBeDumped = transferItemToInventory(emptyContainers, origin, false);
if (containersThatCantBeDumped != null) {
return item;
}
if (doAdd) {
FluidStack copy2;
FluidStack liquidToFillTank = copy2 = containerLiquid.copy();
copy2.amount *= numberOfContainersToAdd;
tank.fill(liquidToFillTank, true);
transferItemToInventory(emptyContainers, origin, true);
}
return leftOverContainers;
}
public static ItemStack transferFromTank(ItemStack item, IInventory origin, ITankMachine destination, int tankID,
boolean doAdd) {
if (item == null) {
return item;
}
IFluidTank tank = destination.getTanks()[tankID];
FluidStack liquidInTank = tank.getFluid();
if (liquidInTank == null) {
return item;
}
FluidContainerRegistry.FluidContainerData containerLiquidData = null;
for (FluidContainerRegistry.FluidContainerData data : FluidContainerRegistry
.getRegisteredFluidContainerData()) {
if (data.emptyContainer.isItemEqual(item) && liquidInTank.isFluidEqual(data.fluid)) {
containerLiquidData = data;
break;
}
}
if (containerLiquidData == null) {
return item;
}
int maximumExtractedLiquid = item.stackSize * containerLiquidData.fluid.amount;
FluidStack drainedLiquid = tank.drain(maximumExtractedLiquid, false);
int amountInTank = (drainedLiquid == null) ? 0 : drainedLiquid.amount;
int numberOfContainersToFill = amountInTank / containerLiquidData.fluid.amount;
if (numberOfContainersToFill > item.stackSize) {
numberOfContainersToFill = item.stackSize;
}
ItemStack copy;
ItemStack leftOverContainers = copy = item.copy();
copy.stackSize -= numberOfContainersToFill;
if (leftOverContainers.stackSize <= 0) {
leftOverContainers = null;
}
ItemStack filledContainers = containerLiquidData.filledContainer.copy();
filledContainers.stackSize = 0;
ItemStack itemStack = filledContainers;
itemStack.stackSize += numberOfContainersToFill;
if (filledContainers.stackSize <= 0) {
filledContainers = null;
}
ItemStack containersThatCantBeDumped = transferItemToInventory(filledContainers, origin, false);
if (containersThatCantBeDumped != null) {
return item;
}
if (doAdd) {
tank.drain(maximumExtractedLiquid, true);
transferItemToInventory(filledContainers, origin, true);
}
return leftOverContainers;
}
}
@@ -32,11 +32,6 @@ enum Compartment implements IMachineType {
return clss;
}
@Override
public boolean isActive() {
return true;
}
public ItemStack get(int i) {
return new ItemStack(BinnieCore.packageCompartment.getBlock(), i, ordinal());
}
@@ -488,7 +488,9 @@ 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());
}
@@ -1,5 +0,0 @@
package binnie.core.machines.transfer;
// TODO unused class?
public class TransferHandler {
}
@@ -1,20 +0,0 @@
package binnie.core.mod.config;
import java.io.File;
import net.minecraftforge.common.config.Configuration;
import binnie.core.AbstractMod;
import binnie.core.BinnieCore;
public class BinnieConfiguration extends Configuration {
public AbstractMod mod;
private final String filename;
public BinnieConfiguration(String filename, AbstractMod mod) {
super(new File(BinnieCore.proxy.getDirectory(), filename));
this.mod = mod;
this.filename = filename;
}
}
@@ -1,15 +0,0 @@
package binnie.core.mod.config;
// TODO Why do we need this class?
class BinnieItemData {
private final int item;
private final BinnieConfiguration configFile;
private final String configKey;
public BinnieItemData(int item, BinnieConfiguration configFile, String configKey) {
this.item = item;
this.configFile = configFile;
this.configKey = configKey;
}
}
@@ -1,10 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface ConfigFile {
String filename();
}
@@ -1,26 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD })
public @interface ConfigProperty {
String key();
String category() default "";
String[] comment() default {};
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.ANNOTATION_TYPE })
@interface Type {
Class<? extends PropertyBase> propertyClass();
String category() default "general";
}
}
@@ -1,5 +0,0 @@
package binnie.core.mod.config;
@ConfigFile(filename = "/config/forestry/binniecore/main.conf")
public class ConfigurationMain {
}
@@ -1,21 +0,0 @@
package binnie.core.mod.config;
@ConfigFile(filename = "/config/forestry/binnie-mods.conf")
public class ConfigurationMods {
@ConfigProperty(key = "extraBees", comment = { "Enables the Extra Bees Mod." })
@PropBoolean
public static boolean extraBees = true;
@ConfigProperty(key = "extraTrees", comment = { "Enables the Extra Trees Mod." })
@PropBoolean
public static boolean extraTrees = true;
@ConfigProperty(key = "botany", comment = { "Enables the Botany Mod." })
@PropBoolean
public static boolean botany = true;
@ConfigProperty(key = "genetics", comment = { "Enables the Genetics Mod." })
@PropBoolean
public static boolean genetics = true;
}
@@ -1,71 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import net.minecraftforge.common.config.Configuration;
import binnie.core.AbstractMod;
import binnie.core.ManagerBase;
public class ManagerConfig extends ManagerBase {
private final Map<Class<?>, Configuration> configurations;
private final Map<AbstractMod, List<BinnieItemData>> itemIDs;
public ManagerConfig() {
configurations = new LinkedHashMap<>();
itemIDs = new HashMap<>();
}
public void registerConfiguration(Class<?> cls, AbstractMod mod) {
if (cls.isAnnotationPresent(ConfigFile.class)) {
loadConfiguration(cls, mod);
}
}
public void loadConfiguration(Class<?> cls, AbstractMod mod) {
try {
String filename = cls.getAnnotation(ConfigFile.class).filename();
BinnieConfiguration config = new BinnieConfiguration(filename, mod);
config.load();
for (Field field : cls.getFields()) {
if (field.isAnnotationPresent(ConfigProperty.class)) {
ConfigProperty propertyAnnot = field.getAnnotation(ConfigProperty.class);
for (Annotation annotation : field.getAnnotations()) {
if (annotation.annotationType().isAnnotationPresent(ConfigProperty.Type.class)) {
Class<?> propertyClass = annotation.annotationType()
.getAnnotation(ConfigProperty.Type.class).propertyClass();
// TODO what for?
PropertyBase property = (PropertyBase) propertyClass.getConstructor(
Field.class,
BinnieConfiguration.class,
ConfigProperty.class,
annotation.annotationType()).newInstance(
field,
config,
propertyAnnot,
annotation.annotationType().cast(annotation));
}
}
}
}
config.save();
configurations.put(cls, config);
} catch (Exception e) {
e.printStackTrace();
}
}
public void addItemID(Integer configValue, String configKey, BinnieConfiguration configFile) {
if (!itemIDs.containsKey(configFile.mod)) {
itemIDs.put(configFile.mod, new ArrayList<>());
}
itemIDs.get(configFile.mod).add(new BinnieItemData(configValue + 256, configFile, configKey));
}
}
@@ -1,35 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Field;
import net.minecraftforge.common.config.Property;
@Retention(RetentionPolicy.RUNTIME)
@ConfigProperty.Type(propertyClass = PropBoolean.PropertyBoolean.class)
public @interface PropBoolean {
class PropertyBoolean extends PropertyBase<Boolean, PropBoolean> {
public PropertyBoolean(Field field, BinnieConfiguration file, ConfigProperty configProperty,
PropBoolean annotedProperty) throws IllegalArgumentException, IllegalAccessException {
super(field, file, configProperty, annotedProperty);
}
@Override
protected Property getProperty() {
return file.get(getCategory(), getKey(), defaultValue);
}
@Override
protected Boolean getConfigValue() {
return property.getBoolean(defaultValue);
}
@Override
protected void addComments() {
addComment("Default value is " + defaultValue + ".");
}
}
}
@@ -1,35 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Field;
import net.minecraftforge.common.config.Property;
@Retention(RetentionPolicy.RUNTIME)
@ConfigProperty.Type(propertyClass = PropDouble.PropertyDouble.class)
public @interface PropDouble {
class PropertyDouble extends PropertyBase<Double, PropDouble> {
public PropertyDouble(Field field, BinnieConfiguration file, ConfigProperty configProperty,
PropDouble annotedProperty) throws IllegalArgumentException, IllegalAccessException {
super(field, file, configProperty, annotedProperty);
}
@Override
protected Property getProperty() {
return file.get(getCategory(), getKey(), defaultValue);
}
@Override
protected Double getConfigValue() {
return property.getDouble(defaultValue);
}
@Override
protected void addComments() {
addComment("Default value is " + defaultValue + ".");
}
}
}
@@ -1,35 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Field;
import net.minecraftforge.common.config.Property;
@Retention(RetentionPolicy.RUNTIME)
@ConfigProperty.Type(propertyClass = PropInteger.PropertyInteger.class)
public @interface PropInteger {
class PropertyInteger extends PropertyBase<Integer, PropInteger> {
public PropertyInteger(Field field, BinnieConfiguration file, ConfigProperty configProperty,
PropInteger annotedProperty) throws IllegalArgumentException, IllegalAccessException {
super(field, file, configProperty, annotedProperty);
}
@Override
protected Property getProperty() {
return file.get(getCategory(), getKey(), defaultValue);
}
@Override
protected Integer getConfigValue() {
return property.getInt(defaultValue);
}
@Override
protected void addComments() {
addComment("Default value is " + defaultValue + ".");
}
}
}
@@ -1,40 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Field;
import net.minecraftforge.common.config.Property;
@Retention(RetentionPolicy.RUNTIME)
@ConfigProperty.Type(propertyClass = PropPercentage.PropertyPercentage.class)
public @interface PropPercentage {
int upper() default 100;
int lower() default 0;
class PropertyPercentage extends PropertyBase<Integer, PropPercentage> {
public PropertyPercentage(Field field, BinnieConfiguration file, ConfigProperty configProperty,
PropPercentage annotedProperty) throws IllegalArgumentException, IllegalAccessException {
super(field, file, configProperty, annotedProperty);
}
@Override
protected Integer getConfigValue() {
return property.getInt(defaultValue);
}
@Override
protected void addComments() {
addComment("Default value is " + defaultValue + "%.");
addComment("Range is " + annotatedProperty.lower() + "-" + annotatedProperty.upper() + "%.");
}
@Override
protected Property getProperty() {
return file.get(getCategory(), getKey(), defaultValue);
}
}
}
@@ -1,71 +0,0 @@
package binnie.core.mod.config;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
public abstract class PropertyBase<ValueType, AnnotationType extends Annotation> {
protected Configuration file;
protected Property property;
protected ValueType defaultValue;
protected AnnotationType annotatedProperty;
private final ConfigProperty configProperty;
private final List<String> comments;
private final Field field;
protected PropertyBase(Field field, BinnieConfiguration file, ConfigProperty configProperty,
AnnotationType annotedProperty) throws IllegalArgumentException, IllegalAccessException {
comments = new ArrayList<>();
this.field = field;
this.file = file;
this.configProperty = configProperty;
annotatedProperty = annotedProperty;
defaultValue = getDefaultValue(field);
property = getProperty();
for (String comment : configProperty.comment()) {
addComment(comment);
}
addComments();
property.comment = getComment();
field.set(null, getConfigValue());
}
protected abstract Property getProperty();
protected abstract ValueType getConfigValue();
protected abstract void addComments();
protected String getCategory() {
return configProperty.category().isEmpty()
? annotatedProperty.annotationType().getAnnotation(ConfigProperty.Type.class).category()
: configProperty.category();
}
protected String getKey() {
return configProperty.key();
}
protected ValueType getDefaultValue(Field field) throws IllegalArgumentException, IllegalAccessException {
return (ValueType) field.get(null);
}
protected void addComment(String comment) {
comments.add(comment);
}
protected String getComment() {
StringBuilder comment = new StringBuilder();
for (String com : comments) {
comment.append(com).append(" ");
}
return comment.toString();
}
}
@@ -1,9 +0,0 @@
package binnie.core.network.packet;
import net.minecraft.network.Packet;
// TODO unused interface?
public interface IPacket {
Packet getPacket();
}
@@ -1,15 +0,0 @@
package binnie.core.network.packet;
// TODO unused class?
public class IndexInPayload {
public int intIndex;
public int floatIndex;
public int stringIndex;
public IndexInPayload(int intIndex, int floatIndex, int stringIndex) {
this.intIndex = intIndex;
this.floatIndex = floatIndex;
this.stringIndex = stringIndex;
}
}
@@ -8,8 +8,4 @@ public class MessageContainerUpdate extends MessageCraftGUI {
super(nbt);
}
// TODO unused constructor?
public MessageContainerUpdate(MessageBinnie message) {
super(message);
}
}
@@ -3,7 +3,6 @@ package binnie.core.network.packet;
import java.io.IOException;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import io.netty.buffer.ByteBuf;
@@ -18,11 +17,6 @@ public class MessageCoordinates extends MessageBase {
super(message);
}
// TODO unused constructor?
public MessageCoordinates(int id, ChunkCoordinates coordinates) {
this(id, coordinates.posX, coordinates.posY, coordinates.posZ);
}
public MessageCoordinates(int id, int posX, int posY, int posZ) {
super(id);
this.posX = posX;
@@ -44,11 +38,6 @@ public class MessageCoordinates extends MessageBase {
posZ = data.readInt();
}
// TODO unused method?
public ChunkCoordinates getCoordinates() {
return new ChunkCoordinates(posX, posY, posZ);
}
public TileEntity getTileEntity(World world) {
return world.getTileEntity(posX, posY, posZ);
}
@@ -4,7 +4,6 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import binnie.core.network.INetworkedEntity;
import io.netty.buffer.ByteBuf;
@@ -75,8 +74,4 @@ public class MessageUpdate extends MessageCoordinates {
}
}
// TODO unused method?
public TileEntity getTarget(World world) {
return world.getTileEntity(posX, posY, posZ);
}
}
@@ -3,8 +3,6 @@ package binnie.core.network.packet;
import java.util.ArrayList;
import java.util.List;
import binnie.core.network.INetworkedEntity;
public class PacketPayload {
public List<Integer> intPayload;
@@ -17,12 +15,6 @@ public class PacketPayload {
stringPayload = new ArrayList<>();
}
// TODO unused constructor?
public PacketPayload(INetworkedEntity tile) {
this();
tile.writeToPacket(this);
}
public void addInteger(int a) {
intPayload.add(a);
}
@@ -47,16 +39,6 @@ public class PacketPayload {
return stringPayload.remove(0);
}
// TODO unused method
public void append(PacketPayload other) {
if (other == null) {
return;
}
intPayload.addAll(other.intPayload);
floatPayload.addAll(other.floatPayload);
stringPayload.addAll(other.stringPayload);
}
public boolean isEmpty() {
return intPayload.isEmpty() && floatPayload.isEmpty() && stringPayload.isEmpty();
}
@@ -20,7 +20,6 @@ import binnie.core.network.INetworkedEntity;
import binnie.core.network.packet.MessageUpdate;
import binnie.core.resource.BinnieResource;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.registry.GameRegistry;
public class BinnieProxy extends BinnieModProxy implements IBinnieProxy {
@@ -69,11 +68,6 @@ public class BinnieProxy extends BinnieModProxy implements IBinnieProxy {
return null;
}
// TODO unused method?
public void throwException(String message, Throwable e) {
FMLCommonHandler.instance().raiseException(e, message, true);
}
@Override
public Minecraft getMinecraftInstance() {
return null;
@@ -129,16 +123,6 @@ public class BinnieProxy extends BinnieModProxy implements IBinnieProxy {
return null;
}
// TODO unused method?
public void handleTextureRefresh(IIconRegister register, int type) {
// ignored
}
// TODO unused method?
public void handlePostTextureRefresh(IIconRegister register, int type) {
// ignored
}
public short getUniqueTextureUID() {
uniqueTextureUID++;
return uniqueTextureUID;
@@ -21,7 +21,6 @@ import net.minecraftforge.client.MinecraftForgeClient;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import binnie.Binnie;
import binnie.core.craftgui.resource.minecraft.CraftGUIResourceManager;
import binnie.core.resource.BinnieResource;
import cpw.mods.fml.client.FMLClientHandler;
@@ -139,13 +138,6 @@ public class BinnieProxyClient extends BinnieProxy implements IBinnieProxy {
return Minecraft.getMinecraft().thePlayer;
}
// TODO unused method?
public void handlePreTextureRefresh(IIconRegister register, int type) {
if (type == 0) {
Binnie.Liquid.reloadIcons(register);
}
}
@Override
public void preInit() {
IResourceManager manager = Minecraft.getMinecraft().getResourceManager();
+17 -9
View File
@@ -4,6 +4,9 @@ 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;
import binnie.core.AbstractMod;
import binnie.core.BinnieCore;
import binnie.core.Tags;
@@ -11,8 +14,7 @@ import binnie.core.gui.IBinnieGUID;
import binnie.core.network.BinniePacketHandler;
import binnie.core.proxy.IProxyCore;
import binnie.extrabees.apiary.ModuleApiary;
import binnie.extrabees.config.ConfigurationMachines;
import binnie.extrabees.config.ConfigurationMain;
import binnie.extrabees.config.EBConfig;
import binnie.extrabees.core.ExtraBeeGUID;
import binnie.extrabees.core.ModuleCore;
import binnie.extrabees.genetics.ModuleGenetics;
@@ -27,13 +29,16 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@Mod(
modid = "ExtraBees",
name = "Extra Bees",
modid = ExtraBees.EB_MODID,
name = ExtraBees.EB_MOD_NAME,
version = Tags.VERSION,
useMetadata = true,
dependencies = "after:BinnieCore")
public class ExtraBees extends AbstractMod {
public static final String EB_MODID = "ExtraBees";
public static final String EB_MOD_NAME = "Extra Bees";
@Mod.Instance("ExtraBees")
public static ExtraBees instance;
@@ -42,6 +47,14 @@ public class ExtraBees extends AbstractMod {
serverSide = "binnie.extrabees.proxy.ExtraBeesProxyServer")
public static ExtraBeesProxy proxy;
static {
try {
ConfigurationManager.registerConfig(EBConfig.class);
} catch (ConfigException e) {
throw new RuntimeException(e);
}
}
public static Block hive;
public static Material materialBeehive;
public static Block ectoplasm;
@@ -81,11 +94,6 @@ public class ExtraBees extends AbstractMod {
return ExtraBeeGUID.values();
}
@Override
public Class<?>[] getConfigs() {
return new Class[] { ConfigurationMain.class, ConfigurationMachines.class };
}
@Override
public IProxyCore getProxy() {
return ExtraBees.proxy;
@@ -1,10 +1,7 @@
package binnie.extrabees.apiary;
import net.minecraft.item.ItemStack;
import binnie.core.machines.Machine;
import binnie.core.machines.MachineComponent;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
@@ -61,21 +58,11 @@ public class ComponentBeeModifier extends MachineComponent implements IBeeModifi
return false;
}
// TODO unused method?
public void onQueenChange(ItemStack queen) {
// ignored
}
@Override
public void wearOutEquipment(int amount) {
// ignored
}
// TODO unused method?
public boolean onEggLaid(IBee queen) {
return false;
}
@Override
public float getGeneticDecay(IBeeGenome genome, float currentModifier) {
return 1.0f;
@@ -46,11 +46,6 @@ public enum AlvearyMachine implements IMachineType {
return new ItemStack(ModuleApiary.blockComponent, size, ordinal());
}
@Override
public boolean isActive() {
return true;
}
public abstract static class AlvearyPackage extends MachinePackage {
protected BinnieResource machineTexture;
@@ -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
@@ -1,24 +0,0 @@
package binnie.extrabees.config;
import binnie.core.mod.config.ConfigFile;
import binnie.core.mod.config.ConfigProperty;
import binnie.core.mod.config.PropDouble;
import binnie.core.mod.config.PropPercentage;
@ConfigFile(filename = "/config/forestry/extrabees/machines.conf")
public class ConfigurationMachines {
@ConfigProperty(
key = "isolatorConsumptionChance",
comment = { "Percentage chance of Isolator consuming bee, in x%." })
@PropPercentage
public static int isolatorConsumptionChance = 30;
@ConfigProperty(
key = "geneticErrorModifier",
comment = { "Modifier that changes how severe splicer/inoculator erros are.",
"0 would result in no errors, even for awful serums.",
"2.0 would result in twice as severe errors" })
@PropDouble
public static double geneticErrorModifier = 1.0;
}
@@ -1,30 +0,0 @@
package binnie.extrabees.config;
import binnie.core.mod.config.ConfigFile;
import binnie.core.mod.config.ConfigProperty;
import binnie.core.mod.config.PropBoolean;
import binnie.core.mod.config.PropInteger;
@ConfigFile(filename = "/config/forestry/extrabees/main.conf")
public class ConfigurationMain {
@ConfigProperty(key = "canQuarryMineHives")
@PropBoolean
public static boolean canQuarryMineHives = true;
@ConfigProperty(key = "waterHiveRate")
@PropInteger
public static int waterHiveRate = 1;
@ConfigProperty(key = "rockHiveRate")
@PropInteger
public static int rockHiveRate = 2;
@ConfigProperty(key = "netherHiveRate")
@PropInteger
public static int netherHiveRate = 2;
@ConfigProperty(key = "marbleHiveRate")
@PropInteger
public static int marbleHiveRate = 2;
}
@@ -0,0 +1,28 @@
package binnie.extrabees.config;
import static binnie.extrabees.ExtraBees.EB_MODID;
import com.gtnewhorizon.gtnhlib.config.Config;
@Config(modid = EB_MODID)
public class EBConfig {
@Config.DefaultBoolean(true)
@Config.RequiresMcRestart
public static boolean canQuarryMineHives;
@Config.Comment("Attempt to generate this many hives per chunk.")
@Config.RangeInt(min = 0)
@Config.DefaultInt(1)
public static int waterHiveRate;
@Config.Comment("Attempt to generate this many hives per chunk.")
@Config.RangeInt(min = 0)
@Config.DefaultInt(2)
public static int rockHiveRate;
@Config.Comment("Attempt to generate this many hives per chunk.")
@Config.RangeInt(min = 0)
@Config.DefaultInt(2)
public static int netherHiveRate;
}
@@ -0,0 +1,14 @@
package binnie.extrabees.config;
import static binnie.extrabees.ExtraBees.EB_MODID;
import com.gtnewhorizon.gtnhlib.config.Config;
@Config(modid = EB_MODID)
public class EBConfigMachines {
@Config.Comment("Percentage chance of Isolator consuming bee. 0 never consumes, 1 always does.")
@Config.RangeFloat(min = 0f, max = 1f)
@Config.DefaultFloat(0.05f)
public static float isolatorConsumptionChance;
}
@@ -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.worldgen;
import static binnie.core.Mods.buildcraftCore;
import java.util.Random;
import net.minecraft.world.World;
@@ -7,7 +9,7 @@ import net.minecraft.world.chunk.IChunkProvider;
import binnie.core.IInitializable;
import binnie.extrabees.ExtraBees;
import binnie.extrabees.config.ConfigurationMain;
import binnie.extrabees.config.EBConfig;
import binnie.extrabees.genetics.ExtraBeeDefinition;
import buildcraft.api.core.BuildCraftAPI;
import cpw.mods.fml.common.IWorldGenerator;
@@ -16,11 +18,6 @@ import forestry.apiculture.genetics.BeeDefinition;
public class ModuleGeneration implements IWorldGenerator, IInitializable {
protected static int waterRate = 2;
protected static int rockRate = 2;
protected static int netherRate = 2;
protected static int marbleRate = 2;
@Override
public void preInit() {
ExtraBees.materialBeehive = new MaterialBeehive();
@@ -30,11 +27,8 @@ public class ModuleGeneration implements IWorldGenerator, IInitializable {
@Override
public void init() {
ModuleGeneration.waterRate = ConfigurationMain.waterHiveRate;
ModuleGeneration.rockRate = ConfigurationMain.rockHiveRate;
ModuleGeneration.netherRate = ConfigurationMain.netherHiveRate;
GameRegistry.registerWorldGenerator(new ModuleGeneration(), 0);
if (!ConfigurationMain.canQuarryMineHives) {
if (!EBConfig.canQuarryMineHives && buildcraftCore.active()) {
BuildCraftAPI.softBlocks.add(ExtraBees.hive);
}
}
@@ -62,21 +56,21 @@ public class ModuleGeneration implements IWorldGenerator, IInitializable {
chunkX <<= 4;
chunkZ <<= 4;
for (int i = 0; i < ModuleGeneration.waterRate; ++i) {
for (int i = 0; i < EBConfig.waterHiveRate; ++i) {
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(50) + 20;
int randPosZ = chunkZ + rand.nextInt(16);
new WorldGenHiveWater().generate(world, rand, randPosX, randPosY, randPosZ);
}
for (int i = 0; i < ModuleGeneration.rockRate; ++i) {
for (int i = 0; i < EBConfig.rockHiveRate; ++i) {
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(50) + 20;
int randPosZ = chunkZ + rand.nextInt(16);
new WorldGenHiveRock().generate(world, rand, randPosX, randPosY, randPosZ);
}
for (int i = 0; i < ModuleGeneration.netherRate; ++i) {
for (int i = 0; i < EBConfig.netherHiveRate; ++i) {
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(50) + 20;
int randPosZ = chunkZ + rand.nextInt(16);
@@ -1,8 +1,14 @@
package binnie.extratrees;
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;
import binnie.core.AbstractMod;
import binnie.core.BinnieCore;
import binnie.core.Tags;
@@ -16,7 +22,7 @@ import binnie.extratrees.block.decor.BlockMultiFence;
import binnie.extratrees.carpentry.BlockCarpentry;
import binnie.extratrees.carpentry.BlockStainedDesign;
import binnie.extratrees.carpentry.ModuleCarpentry;
import binnie.extratrees.config.ConfigurationMain;
import binnie.extratrees.config.ETConfig;
import binnie.extratrees.core.ExtraTreesGUID;
import binnie.extratrees.core.ModuleCore;
import binnie.extratrees.genetics.ModuleGenetics;
@@ -31,19 +37,30 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@Mod(
modid = "ExtraTrees",
name = "Extra Trees",
modid = ET_MODID,
name = EB_MOD_NAME,
version = Tags.VERSION,
useMetadata = true,
dependencies = "after:BinnieCore")
public class ExtraTrees extends AbstractMod {
public static final String ET_MODID = "ExtraTrees";
public static final String EB_MOD_NAME = "Extra Trees";
@Mod.Instance("ExtraTrees")
public static ExtraTrees instance;
@SidedProxy(clientSide = "binnie.extratrees.proxy.ProxyClient", serverSide = "binnie.extratrees.proxy.ProxyServer")
public static Proxy proxy;
static {
try {
ConfigurationManager.registerConfig(ETConfig.class);
} catch (ConfigException e) {
throw new RuntimeException(e);
}
}
public static Item itemDictionary;
public static Item itemDictionaryLepi;
public static Item itemMisc;
@@ -101,11 +118,6 @@ public class ExtraTrees extends AbstractMod {
return ExtraTreesGUID.values();
}
@Override
public Class<?>[] getConfigs() {
return new Class[] { ConfigurationMain.class };
}
@Override
public String getChannel() {
return "ET";
@@ -116,6 +128,7 @@ public class ExtraTrees extends AbstractMod {
return ExtraTrees.proxy;
}
// Concerningly, this isn't the same as the MODID
@Override
public String getModID() {
return "extratrees";
@@ -176,4 +176,9 @@ public class BlockETLog extends BlockLog implements IBlockMetadata {
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) {
return BlockMetadata.getPickBlock(world, x, y, z);
}
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
return this.getPickBlock(target, world, x, y, z, null);
}
}
@@ -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,15 +0,0 @@
package binnie.extratrees.config;
import binnie.core.mod.config.ConfigFile;
import binnie.core.mod.config.ConfigProperty;
import binnie.core.mod.config.PropBoolean;
@ConfigFile(filename = "/config/forestry/extratrees/main.conf")
public class ConfigurationMain {
@ConfigProperty(
key = "lemon.citrus.family",
comment = { "Uses reflection to convert the Forestry lemon tree to the Citrus family." })
@PropBoolean
public static boolean alterLemon = true;
}
@@ -0,0 +1,14 @@
package binnie.extratrees.config;
import static binnie.extratrees.ExtraTrees.ET_MODID;
import com.gtnewhorizon.gtnhlib.config.Config;
@Config(modid = ET_MODID)
public class ETConfig {
@Config.Comment("Uses reflection to convert the Forestry lemon tree to the Citrus family.")
@Config.DefaultBoolean(true)
@Config.RequiresMcRestart
public static boolean alterLemon;
}
@@ -17,7 +17,7 @@ import binnie.Binnie;
import binnie.core.util.I18N;
import binnie.extratrees.ExtraTrees;
import binnie.extratrees.block.FruitPod;
import binnie.extratrees.config.ConfigurationMain;
import binnie.extratrees.config.ETConfig;
import binnie.extratrees.item.Food;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -254,7 +254,7 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider {
ExtraTreeFruitGene.Candlenut.addProduct(Food.Candlenut.get(1), 1.0f);
ExtraTreeFruitGene.Candlenut.setFamily(familyJungle);
if (ConfigurationMain.alterLemon) {
if (ETConfig.alterLemon) {
try {
IAlleleFruit lemon = (IAlleleFruit) AlleleManager.alleleRegistry.getAllele("forestry.fruitLemon");
FruitProviderNone prov = (FruitProviderNone) lemon.getProvider();
@@ -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,7 +1,6 @@
package binnie.extratrees.genetics;
import java.awt.Color;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
@@ -690,19 +689,6 @@ public enum ExtraTreeSpecies implements IAlleleTreeSpecies, IIconProvider, IGerm
.setFertility(EnumAllele.Saplings.LOW).setMaturation(EnumAllele.Maturation.SLOWER);
}
// TODO unused method?
static ItemStack getEBXLStack(String name) {
try {
Class elements = Class.forName("extrabiomes.lib.Element");
Method getElementMethod = elements.getMethod("valueOf", String.class);
Method getItemStack = elements.getMethod("get");
Object element = getElementMethod.invoke(null, "SAPLING_AUTUMN_YELLOW");
return (ItemStack) getItemStack.invoke(element);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private ExtraTreeSpecies addFamily(IFruitFamily family) {
families.add(family);
return this;
@@ -7,7 +7,6 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import binnie.Binnie;
import binnie.core.BinnieCore;
import binnie.core.machines.IMachineType;
import binnie.core.machines.Machine;
import binnie.core.machines.MachineComponent;
@@ -43,14 +42,6 @@ public enum ExtraTreeMachine implements IMachineType {
return cls;
}
@Override
public boolean isActive() {
if (this == ExtraTreeMachine.Tileworker) {
return BinnieCore.isBotanyActive();
}
return true;
}
public ItemStack get(int i) {
return new ItemStack(ExtraTrees.blockMachine, i, ordinal());
}
+1 -2
View File
@@ -3,7 +3,6 @@ package binnie.genetics;
import net.minecraft.item.Item;
import binnie.core.AbstractMod;
import binnie.core.BinnieCore;
import binnie.core.Tags;
import binnie.core.gui.IBinnieGUID;
import binnie.core.machines.MachineGroup;
@@ -106,7 +105,7 @@ public class Genetics extends AbstractMod {
@Override
public boolean isActive() {
return BinnieCore.isGeneticsActive();
return true;
}
public static class PacketHandler extends BinniePacketHandler {
@@ -11,11 +11,7 @@ import cpw.mods.fml.relauncher.SideOnly;
public class GeneticsCreativeTab extends CreativeTabs {
public static CreativeTabs instance;
static {
GeneticsCreativeTab.instance = new GeneticsCreativeTab();
}
public static CreativeTabs instance = new GeneticsCreativeTab();
public GeneticsCreativeTab() {
super("Genetics");
@@ -1,7 +0,0 @@
package binnie.genetics.config;
import binnie.core.mod.config.ConfigFile;
@ConfigFile(filename = "/config/forestry/genetics/main.conf")
public class ConfigurationMain {
}
@@ -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;
}
@@ -100,7 +100,7 @@ public class WindowGeneBank extends WindowMachine {
new ControlPlayerInventory(this, x, y);
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(
@@ -306,7 +306,7 @@ public class ModuleItem implements IInitializable {
// as above, there are only 24 permutations here; let's find a way to just get those recipes rather than trying
// 256 combinations in an n^4 loop. This will help performance and maybe be a bit more maintainable.
if (BinnieCore.isBotanyActive() && BinnieCore.isExtraBeesActive() && BinnieCore.isExtraTreesActive()) {
if (BinnieCore.isExtraBeesActive() && BinnieCore.isExtraTreesActive()) {
// 24 full recipe lines is a bit much to maintain; so we'll use a loop here, but we're only going
// to run it 24 times. Start by making an array of all 24 valid dictionary permutations...
String[] permutations = new String[] { "btlf", "btfl", "bltf", "blft", "bftl", "bflt", "tblf", "tbfl",
@@ -23,11 +23,6 @@ public enum AdvGeneticMachine implements IMachineType {
return cls;
}
@Override
public boolean isActive() {
return true;
}
public ItemStack get(int i) {
return new ItemStack(Genetics.packageAdvGenetic.getBlock(), i, ordinal());
}
@@ -116,9 +116,8 @@ public class ComponentGUIHolder extends MachineComponent implements INetwork.Til
}
List<Item> validSelections = new ArrayList<>();
if (BinnieCore.isBotanyActive()) {
validSelections.add(Botany.database);
}
validSelections.add(Botany.database);
if (BinnieCore.isExtraBeesActive()) {
validSelections.add(ExtraBees.dictionary);
}
@@ -28,11 +28,6 @@ public enum GeneticMachine implements IMachineType {
return clss;
}
@Override
public boolean isActive() {
return true;
}
public ItemStack get(int i) {
return new ItemStack(Genetics.packageGenetic.getBlock(), i, ordinal());
}
@@ -30,11 +30,6 @@ public enum LaboratoryMachine implements IMachineType {
return clss;
}
@Override
public boolean isActive() {
return true;
}
public ItemStack get(int i) {
return new ItemStack(Genetics.packageLabMachine.getBlock(), i, ordinal());
}
@@ -106,17 +106,15 @@ public class Acclimatiser {
ToleranceType.Temperature);
}
if (BinnieCore.isBotanyActive()) {
addTolerance(
Binnie.Genetics.getFlowerRoot().getUID(),
EnumFlowerChromosome.HUMIDITY_TOLERANCE,
ToleranceType.Humidity);
addTolerance(
Binnie.Genetics.getFlowerRoot().getUID(),
EnumFlowerChromosome.TEMPERATURE_TOLERANCE,
ToleranceType.Temperature);
addTolerance(Binnie.Genetics.getFlowerRoot().getUID(), EnumFlowerChromosome.PH_TOLERANCE, ToleranceType.PH);
}
addTolerance(
Binnie.Genetics.getFlowerRoot().getUID(),
EnumFlowerChromosome.HUMIDITY_TOLERANCE,
ToleranceType.Humidity);
addTolerance(
Binnie.Genetics.getFlowerRoot().getUID(),
EnumFlowerChromosome.TEMPERATURE_TOLERANCE,
ToleranceType.Temperature);
addTolerance(Binnie.Genetics.getFlowerRoot().getUID(), EnumFlowerChromosome.PH_TOLERANCE, ToleranceType.PH);
addTemperatureItem(new ItemStack(Items.blaze_powder), 0.5f);
addTemperatureItem(new ItemStack(Items.blaze_rod), 0.75f);
@@ -1,5 +1,7 @@
package binnie.genetics.machine.isolator;
import java.util.Arrays;
import java.util.Objects;
import java.util.Random;
import net.minecraft.item.ItemStack;
@@ -11,9 +13,11 @@ import binnie.core.machines.power.ComponentProcessSetCost;
import binnie.core.machines.power.ErrorState;
import binnie.core.machines.power.IProcess;
import binnie.core.util.I18N;
import binnie.extrabees.config.EBConfigMachines;
import binnie.genetics.item.ItemSequence;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IChromosome;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IIndividual;
import forestry.api.genetics.ISpeciesRoot;
@@ -78,7 +82,17 @@ public class IsolatorComponentLogic extends ComponentProcessSetCost implements I
}
final IChromosomeType[] karyo = root.getKaryotype();
final IChromosomeType chromosome = karyo[rand.nextInt(karyo.length)];
final IChromosome[] chromosomes = individual.getGenome().getChromosomes();
if (Arrays.stream(chromosomes).allMatch(Objects::isNull)) {
return;
}
IChromosomeType chromosome;
do {
chromosome = karyo[rand.nextInt(karyo.length)];
} while (chromosomes[chromosome.ordinal()] == null);
final IAllele allele = rand.nextBoolean() ? individual.getGenome().getActiveAllele(chromosome)
: individual.getGenome().getInactiveAllele(chromosome);
final Gene gene = new Gene(allele, chromosome, root);
@@ -86,7 +100,7 @@ public class IsolatorComponentLogic extends ComponentProcessSetCost implements I
ItemStack serum = ItemSequence.create(gene);
getUtil().setStack(Isolator.SLOT_RESULT, serum);
getUtil().decreaseStack(Isolator.SLOT_SEQUENCER_VIAL, 1);
if (rand.nextFloat() < 0.05f) {
if (rand.nextFloat() < EBConfigMachines.isolatorConsumptionChance) {
getUtil().decreaseStack(Isolator.SLOT_TARGET, 1);
}
getUtil().drainTank(Isolator.TANK_ETHANOL, (int) ethanolPerProcess);
@@ -37,11 +37,10 @@ public class AcclimatiserRecipeHandler extends RecipeHandlerBase {
targets.add(Mods.forestry.stack("caterpillarGE", 1, OreDictionary.WILDCARD_VALUE));
targets.add(Mods.forestry.stack("serumGE", 1, OreDictionary.WILDCARD_VALUE));
}
if (BinnieCore.isBotanyActive()) {
targets.add(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
}
targets.add(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
recipes.add(new AcclimatiserRecipe(targets, resource, effect, ToleranceType.Temperature));
});
Acclimatiser.humidityItems.forEach((resource, effect) -> {
@@ -57,11 +56,10 @@ public class AcclimatiserRecipeHandler extends RecipeHandlerBase {
targets.add(Mods.forestry.stack("caterpillarGE", 1, OreDictionary.WILDCARD_VALUE));
targets.add(Mods.forestry.stack("serumGE", 1, OreDictionary.WILDCARD_VALUE));
}
if (BinnieCore.isBotanyActive()) {
targets.add(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
}
targets.add(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE));
targets.add(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
recipes.add(new AcclimatiserRecipe(targets, resource, effect, ToleranceType.Humidity));
});
}
@@ -42,11 +42,10 @@ public class AnalyserRecipeHandler extends RecipeHandlerBase {
recipes.add(new AnalyserRecipe(Mods.forestry.stack("caterpillarGE", 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new AnalyserRecipe(Mods.forestry.stack("serumGE", 1, OreDictionary.WILDCARD_VALUE)));
}
if (BinnieCore.isBotanyActive()) {
recipes.add(new AnalyserRecipe(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new AnalyserRecipe(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new AnalyserRecipe(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE)));
}
recipes.add(new AnalyserRecipe(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new AnalyserRecipe(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new AnalyserRecipe(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE)));
}
@Override
@@ -44,11 +44,10 @@ public class GenepoolRecipeHandler extends RecipeHandlerBase {
recipes.add(new GenepoolRecipe(Mods.forestry.stack("caterpillarGE", 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new GenepoolRecipe(Mods.forestry.stack("serumGE", 1, OreDictionary.WILDCARD_VALUE)));
}
if (BinnieCore.isBotanyActive()) {
recipes.add(new GenepoolRecipe(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new GenepoolRecipe(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new GenepoolRecipe(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE)));
}
recipes.add(new GenepoolRecipe(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new GenepoolRecipe(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new GenepoolRecipe(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE)));
}
@Override
@@ -44,8 +44,8 @@ public class InoculatorRecipeHandler extends RecipeHandlerBase {
createInoculatorRecipeForNEI(Mods.forestry.stack("pollenFertile", 1, OreDictionary.WILDCARD_VALUE));
if (BinnieCore.isLepidopteryActive())
createInoculatorRecipeForNEI(Mods.forestry.stack("serumGE", 1, OreDictionary.WILDCARD_VALUE));
if (BinnieCore.isBotanyActive())
createInoculatorRecipeForNEI(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
createInoculatorRecipeForNEI(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
}
@Override
@@ -50,11 +50,10 @@ public class IsolatorRecipeHandler extends RecipeHandlerBase {
recipes.add(new IsolatorRecipe(Mods.forestry.stack("caterpillarGE", 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new IsolatorRecipe(Mods.forestry.stack("serumGE", 1, OreDictionary.WILDCARD_VALUE)));
}
if (BinnieCore.isBotanyActive()) {
recipes.add(new IsolatorRecipe(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new IsolatorRecipe(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new IsolatorRecipe(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE)));
}
recipes.add(new IsolatorRecipe(new ItemStack(Botany.flowerItem, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new IsolatorRecipe(new ItemStack(Botany.seed, 1, OreDictionary.WILDCARD_VALUE)));
recipes.add(new IsolatorRecipe(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE)));
}
@Override
@@ -44,8 +44,8 @@ public class SplicerRecipeHandler extends RecipeHandlerBase {
createSplicerRecipeForNEI(Mods.forestry.stack("pollenFertile", 1, OreDictionary.WILDCARD_VALUE));
if (BinnieCore.isLepidopteryActive())
createSplicerRecipeForNEI(Mods.forestry.stack("serumGE", 1, OreDictionary.WILDCARD_VALUE));
if (BinnieCore.isBotanyActive())
createSplicerRecipeForNEI(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
createSplicerRecipeForNEI(new ItemStack(Botany.pollen, 1, OreDictionary.WILDCARD_VALUE));
}
@Override
@@ -196,11 +196,17 @@ binniecore.gui.breedingmessage.epithet=Epithet Gained
binniecore.item.genesis.name=Genesis
binniecore.item.fluidContainer.missed=Missed Fluid
item.containerCapsule.name=Capsule
binniecore.item.container.capsule=Capsule
item.containerRefractory.name=Capsule
binniecore.item.container.refractory=Capsule
item.containerCan.name=Can
binniecore.item.container.can=Can
item.containerBucket.name=Bucket
binniecore.item.container.bucket=Bucket
item.containerGlass.name=Bottle
binniecore.item.container.glass=Bottle
item.containerCylinder.name=Cylinder
binniecore.item.container.cylinder=Cylinder
binniecore.item.container.capsule.acid=Acid Capsule
@@ -291,6 +297,7 @@ binniecore.machine.storage.filterBlocks=Include Blocks
< %1$s is the name of the pattern >
binniecore.gui.designer.pattern=%1$s Pattern
item.fieldKit.name=Field Kit
binniecore.gui.fieldKit=Field Kit
binniecore.gui.fieldKit.info=The Field Kit analyses bees, trees, flowers and butterflies. All that is required is a piece of paper to jot notes
@@ -456,3 +463,6 @@ binniecore.gui.side.west=West
binniecore.gui.side.south=South
binniecore.gui.side.insertSide=Insert Side: %s
binniecore.gui.side.extractSide=Extract Side: %s
item.genesis.name=Genesis
tile.storage.name=Compartment
@@ -1,9 +1,13 @@
botany.tab.botany=Botany
tile.stained.name=Pigmented Glass
botany.pigmentedGlass=Pigmented Glass
tile.ceramic.name=Ceramic Block
botany.ceramicBlock=Ceramic Block
tile.ceramicBrick.name=Ceramic Tile
botany.ceramicTile=Ceramic Tile
botany.ceramicBricks=Ceramic Bricks
tile.ceramicPattern.name=Ceramic Block
botany.strippedCeramicBricks=Striped Ceramic Bricks
botany.largeCeramicBricks=Large Ceramic Bricks
botany.splitCeramicTile=Split Ceramic Tile
@@ -130,14 +134,21 @@ botany.moisture.dry=Dry
botany.moisture.normal=Normal
botany.moisture.damp=Damp
tile.plant.name=Plant
botany.plant.weeds=Weeds
botany.plant.longWeeds=Long Weeds
botany.plant.veryLongWeeds=Very Long Weeds
botany.plant.deadFlower=Dead Flower
botany.plant.decayingFlower=Decaying Flower
tile.soil.name=Soil
tile.soilNoWeed.name=Soil
botany.soil.soil=Soil
tile.loam.name=Loam
tile.loamNoWeed.name=Loam
botany.soil.loam=Loam
tile.flowerbed.name=Flowerbed
tile.flowerbedNoWeed.name=Flowerbed
botany.soil.flowerbed=Flowerbed
botany.soil.weedkiller=Weedkiller
@@ -158,15 +169,20 @@ botany.item.tooltip.fertility=Fertility: %dx
botany.item.tooltip.flowerColor1=%1$s, %2$s Stem
botany.item.tooltip.flowerColor2=%1$s and %2$s, %3$s Stem
item.soilMeter.name=Soil Meter
botany.item.soilMeter.name=Soil Meter
item.pigment.name=Pigment
botany.item.pigment.name=Pigment
botany.item.clay.name=Clay
botany.item.botany.name=%1$s %2$s
item.pollen.name=Pollen
botany.item.pollen.tag.name=Pollen
botany.item.germling.tag.name=Germling
botany.item.flowerCorrupted.name=Corrupted Flower
item.database.name=Botanist Database
botany.item.database.0.name=Botanist Database
botany.item.database.1.name=Master Botanist Database
item.misc.name=Powder
botany.item.powderAsh.name=Ash Powder
botany.item.powderPulp.name=Pulp Powder
botany.item.powderMulch.name=Mulch Powder
@@ -182,6 +198,7 @@ item.trowelIron.name=Iron Trowel
item.trowelGold.name=Gold Trowel
item.trowelDiamond.name=Diamond Trowel
item.itemFlower.name=Flower
botany.flower.name=Flower
botany.flower.dandelion=Dandelion
botany.flower.poppy=Poppy
@@ -365,6 +382,7 @@ for.binnie.circuit.garden.damp.acid=Garden (Damp, Acidic)
for.binnie.circuit.garden.damp.neutral=Garden (Damp, Neutral)
for.binnie.circuit.garden.damp.alkaline=Garden (Damp, Alkaline)
item.insulatedTube.name=Insulated Tube
botany.tube.name=Insulated Tube
botany.tube.copper=Copper
botany.tube.tin=Tin
@@ -456,3 +474,5 @@ botany.gui.database.tab.breeder=Breeder
botany.gui.database.tab.colour.resultant=Resultant Mixes
botany.gui.database.tab.colour.further=Further Mixes
item.seed.name=Seed
@@ -1,6 +1,7 @@
##################################################
## Items
item.honeyComb.name=Comb
extrabees.item.comb.barren=Barren Comb
extrabees.item.comb.rotten=Rotten Comb
extrabees.item.comb.bone=Bone Comb
@@ -74,6 +75,7 @@ extrabees.item.comb.yellorium=Yellorium Comb
extrabees.item.comb.cyanite=Cyanite Comb
extrabees.item.comb.blutonium=Blutonium Comb
item.honeyDrop.name=Drop
extrabees.item.honeydrop.energy=Energy Drop
extrabees.item.honeydrop.acid=Acidic Drop
extrabees.item.honeydrop.poison=Venomous Drop
@@ -104,12 +106,14 @@ extrabees.item.honeydrop.limegreen=Lime Green Tinted Honey
extrabees.item.honeydrop.magenta=Magenta Tinted Honey
extrabees.item.honeydrop.lightgray=Light Gray Tinted Honey
item.propolis.name=Propolis
extrabees.item.propolis.water=Watery Propolis
extrabees.item.propolis.oil=Oily Propolis
extrabees.item.propolis.fuel=Petroleum Propolis
extrabees.item.propolis.creosote=Creosote Propolis
extrabees.item.propolis.peat=Peat Propolis
item.hiveFrame.name=Hive Frame
extrabees.item.frame.cocoa=Chocolate Frame
extrabees.item.frame.cage=Restraint Frame
extrabees.item.frame.soul=Soul Frame
@@ -127,10 +131,12 @@ extrabees.item.template.corrupted=Corrupted Template
extrabees.item.template.name=%s Template
extrabees.item.template.empty=Blank Template
item.dictionary.name=Apiarist Database
extrabees.item.database=Apiarist Database
extrabees.item.masterDatabase=Master Apiarist Database
extrabees.item.database.tooltip=Flora-in-a-box
item.misc.name=Resource
extrabees.item.scentedGear=Scented Gear
extrabees.item.diamondShard=Diamond Fragment
extrabees.item.emeraldShard=Emerald Fragment
@@ -167,6 +173,7 @@ extrabees.block.geneticMachine.name=Genetic Machine
extrabees.block.advGeneticMachine.name=Advanced Genetic Machine
extrabees.block.ectoplasm.name=Ectoplasm
tile.hive.name=Hive
extrabees.block.hive.0=Water Hive
extrabees.block.hive.1=Rock Hive
extrabees.block.hive.2=Nether Hive
@@ -194,6 +201,7 @@ extrabees.machine.alveay.lighting.info=The Alveary Lighting tricks bees into thi
extrabees.machine.alveay.unlighting=Alveary Unlighting
extrabees.machine.alveay.unlighting.info=The Alveary Unlighting tricks bees into thinking it is night time during the day.
tile.alveary.name=Mutator
extrabees.machine.alveay.mutator=Mutator
extrabees.machine.alveay.mutator.info=The Mutator uses certain items in order to encourage bee mutation.
extrabees.machine.alveay.mutator.tooltip=Mutagenic Agents
@@ -1,6 +1,8 @@
##################################################
## Machines
tile.machine.name=Machine
extratrees.machine.kitchen.bar=Bar
extratrees.machine.kitchen.bottleRack=Bottle Rack
@@ -159,6 +161,7 @@ extratrees.block.tooltip.twoMaterials=%s and %s
extratrees.block.door.name=%1$s Wood Door
< %1$s is name of wood used for door, %2$s is type of door >
tile.door.name=Wood Door
extratrees.block.door.name.adv=%2$s %1$s Wood Door
extratrees.block.door.type.standard=
extratrees.block.door.type.solid=Solid
@@ -166,19 +169,24 @@ extratrees.block.door.type.double=Split
extratrees.block.door.type.full=Full
< %1$s is name of the wood>
tile.planks.name=Wood Planks
extratrees.block.plank.name=%1$s Wood Planks
extratrees.block.log.name=%1$s Wood
tile.slabs.name=Wood Slab
extratrees.block.woodslab.name=%1$s Wood Slab
tile.stairs.name=Stairs
extratrees.block.woodstairs.name=%1$s Stairs
extratrees.block.woodfence.name=%1$s Fence
extratrees.block.woodgate.name=%1$s Gate
< %1$s is the adjective for the fence type, %2$s is the name of the wood >
tile.multifence.name=Fence
extratrees.block.multifence.name=%2$s %1$s Gate
< %3$s is the name of the second wood >
extratrees.block.multifence.name2=%2$s %1$s & $3$s Gate
< %1$s is name of the design >
tile.carpentry.name=Wooden Panel/Tile
extratrees.block.woodentile.name=%1$s Wooden Tile
extratrees.block.woodenpanel.name=%1$s Wooden Panel
extratrees.block.stainedglass.name=%1$s Stained Glass
@@ -312,14 +320,18 @@ extratrees.genetics.unknown=<Unknown>
extratrees.genetics.discoveredBy=Discovered by %s
extratrees.genetics.complexity=Complexity: %d
extratrees.item.carpentryHammer=Master Carpentry Hammer
extratrees.item.masterCarpentryHammer=Carpentry Hammer
item.hammer.name=Carpentry Hammer
extratrees.item.carpentryHammer=Carpentry Hammer
item.durableHammer.name=Master Carpentry Hammer
extratrees.item.masterCarpentryHammer=Master Carpentry Hammer
item.misc.name=Resource
extratrees.item.sawdust=Sawdust
extratrees.item.bark=Bark
extratrees.item.provenGear=Proven Gear
extratrees.item.woodWax=Wood Polish
extratrees.item.glassFitting=Glass Fittings
item.food.name=Fruit
for.extratrees.item.food.apple=Apple
for.extratrees.item.food.crabapple=Crabapple
for.extratrees.item.food.orange=Orange
@@ -383,10 +395,12 @@ for.extratrees.item.food.mango=Mango
for.extratrees.item.food.starfruit=Starfruit
for.extratrees.item.food.candlenut=Candlenut
item.database.name=Arborist Database
extratrees.item.database=Arborist Database
extratrees.item.masterDatabase=Master Arborist Database
extratrees.item.database.tooltip=Sengir-in-a-can
item.databaseMoth.name=Lepidopterist Database
extratrees.item.mothDatabase=Lepidopterist Database
extratrees.item.mothMasterDatabase=Master Lepidopterist Database
extratrees.item.mothDatabase.tooltip=Binnie's Emporium of Lepidopterans
@@ -9,22 +9,29 @@ genetics.item.fieldKit.tooltip.noPaper=No paper
genetics.item.fieldKit.tooltip.sheetsOfPaper=%d sheets of paper
genetics.item.fieldKit.tooltip.sheetOfPaper=%d sheet of paper
item.misc.name=Resource
genetics.item.casingIron.name=Reinforced Casing
genetics.item.dnaDye.name=DNA Dye
genetics.item.dyeFluor.name=Fluorescent Dye
genetics.item.enzyme.name=Enzyme
genetics.item.growthMedium.name=Growth Medium
genetics.item.sequencerEmpty.name=Blank Sequence
item.serum.name=Empty Serum Vial
genetics.item.serumEmpty.name=Empty Serum Vial
item.serumArray.name=Empty Serum Array
genetics.item.genomeEmpty.name=Empty Serum Array
genetics.item.cylinderEmpty.name=Glass Cylinder
genetics.item.integratedCircuit.name=Integrated Circuit Board
genetics.item.integratedCPU.name=Integrated CPU
genetics.item.casingCircuit.name=Integrated Casing
item.analyst.name=Analyst
genetics.item.analyst.name=Analyst
item.database.name=Gene Database
genetics.item.database.0.name=Gene Database
genetics.item.database.1.name=Master Gene Database
item.registry.name=Registry
genetics.item.registry.0.name=Registry
item.masterRegistry.name=Registry
genetics.item.registry.1.name=Master Registry
genetics.item.serum.name=%s Serum
genetics.item.serumArray.name=%s Serum Array
@@ -42,6 +49,7 @@ genetics.gene.charge.one=1 Charge
genetics.gene.charge.many=%d Charges
genetics.gene.more=%d more genes. Hold shift to display
item.sequence.name=DNA Sequence
genetics.sequence.corrupted=Corrupted Sequence
genetics.sequence.descriptor=%s DNA Sequence
genetics.sequence.unknown=<Unknown>
@@ -49,6 +57,7 @@ genetics.sequence.unsequenced=Unsequenced
genetics.sequence.fully=Fully Sequenced
genetics.sequence.partially=Partially Sequenced (%d%%)
tile.machine.name=Isolator
genetics.machine.machine.isolator=Isolator
genetics.machine.machine.isolator.info=The Isolator takes a random allele from a bee, tree or other individual and copies it into an empty sequence vial. This requires the use of ethanol as a solvent and an enzyme to cut up the DNA. The unsequenced serums can then be amplified in a Polymeriser and sequenced in a Sequencer. This process has a small chance to destroy the individual.
genetics.machine.isolator.error.noIndividual=No individual to isolate
@@ -102,6 +111,7 @@ genetics.machine.genepool.error.noRoom=Not enough room in Tank
genetics.machine.genepool.error.noEthanol=Not enough Ethanol
genetics.machine.genepool.error.insufficientEnzyme=Insufficient Enzyme
tile.labMachine.name=Lab Stand
genetics.machine.labMachine.labMachine=Lab Stand
genetics.machine.labMachine.analyser=Analyzer
@@ -128,6 +138,7 @@ genetics.machine.acclimatiser.error.noIndividual=No Individual to Acclimatise
genetics.machine.acclimatiser.error.noAcclimatizingItems=No Acclimatising Items
genetics.machine.acclimatiser.error.invalidAcclimatizingItems=Cannot Acclimatise this individual with these items
tile.advMachine.name=Splicer
genetics.machine.advMachine.splicer=Splicer
genetics.machine.advMachine.splicer.info=The Splicer is an incredibly powerful machine that is used to insert genes into individuals. This process is fast, but requires monumental amounts of power.
genetics.machine.splicer.error.noIndividual=No Individual to Splice
@@ -274,4 +285,4 @@ genetics.nei.tip.temperature=Temperature
genetics.nei.tip.humidity=Humidity
genetics.nei.tip.processSpeed=%dx Processing Speed
genetics.nei.tip.rf=%dx Processing Speed
genetics.nei.tip.databaseDesc=Open the database and pick up an empty serum. Click the serum on Sequenced gene to apply.
genetics.nei.tip.databaseDesc=Open the database and pick up an empty serum. Click the serum on Sequenced gene to apply.