Compare commits

..
37 Commits
Author SHA1 Message Date
Dream-Master 7b5eafc42a update version 2019-05-12 20:32:50 +02:00
Martin Robertz 59ca1d2082 Merge pull request #1 from GTNewHorizons/giantSequoia
added recipe.
2019-05-09 09:46:14 +02:00
bartimaeusnek 0df88973c0 added recipe.
Signed-off-by: bartimaeusnek <[email protected]>
2019-05-09 06:35:23 +02:00
Dream-Master e54bb5d4ea change api path 2019-03-26 09:06:46 +01:00
Dream-Master 824f155804 change api adress 2019-03-26 09:01:05 +01:00
Dream-Master 24e2cf668e Revert "remove redstone flux not working api"
This reverts commit f260099bfa.
2019-03-26 08:55:47 +01:00
Dream-Master f260099bfa remove redstone flux not working api 2019-03-26 08:46:07 +01:00
bartimaeusnek 855d359b02 changed crop logic a bit
if crop havest is not possible at the optimal state, just harvest, ffs.

Signed-off-by: bartimaeusnek <[email protected]>
2019-03-23 23:29:26 +01:00
bartimaeusnek abcb180689 added a null check
might help for  https://github.com/GTNewHorizons/NewHorizons/issues/4283
2019-03-18 18:58:33 +01:00
Jason Mitchell 507adb1b3f version bump 2018-10-06 09:09:25 -07:00
Jason Mitchell 23c4e4ed91 Fix pollination crash 2018-10-06 09:08:06 -07:00
bartimaeusnek e5057788a8 version bump 2018-06-09 17:08:51 +02:00
bartimaeusnek a5045bfc0f try to limit nbttag compound on apiaries to 128 entries 2018-06-08 00:52:00 +02:00
bartimaeusnek bfd678c63e removed shades Java7Checker due to issures with Java 9
+ updated Forge Version to v1614
+ updated used Java version to v8
+ updated used grandle wrapper to 2.14.1
2018-06-07 20:15:02 +02:00
LunaticExperimentalist 320ea99090 Have trade station compare tags when accepting payment (#1850) 2017-09-18 21:44:11 -07:00
mezz 08f16ba26d Bump version 2016-10-02 15:41:30 -07:00
mezz 9419dc82de Fix #1442 Let BeeHousings detect biome changes 2016-10-02 15:41:09 -07:00
mezz 2d1f64c5f6 Bump version 2016-07-31 17:11:05 -07:00
mezz cd9f82001c Fix #1366 Alveary in the Nether does not have Hellish temperature 2016-07-31 17:10:59 -07:00
mezz f7b8435d28 Update lang, bump version 2016-06-23 15:38:24 -07:00
mezz 013806f158 Merge remote-tracking branch 'origin/dev' into 4.2 2016-06-23 15:33:48 -07:00
Nirek-K 062b5ee75f Fix #1328 Crash when trying to pick up wheat from Moistener process slot 2016-06-23 17:30:34 -05:00
Nirek-K 56adc25fdf Fix #1330 Change resource checks to check tile for IBeeHousing 2016-06-23 15:40:41 -05:00
mezz df375b1b30 Merge remote-tracking branch 'origin/dev' into 4.2 2016-06-09 16:43:14 -07:00
Nirek-K 789da29af0 Fix #1293 Prevent nulls from passing Agricraft harvest
Update HC compat
2016-06-05 19:18:53 -05:00
Nirek-K e0df2f84a0 Fix Fabricator glass recipes 4000mb->4 blocks 2016-05-29 18:40:57 -05:00
Nirek-K 01656f13a6 Basic MFR plugin, allow farm to plant/cut rubber trees
(trying to plant sacreds is a ..bad idea)
Centrifuge raw rubber from propolis in the absense of IC2
minor bugfix for witchery sapling ferment
2016-04-28 02:47:58 -05:00
mezz b466e9ce4a Merge remote-tracking branch 'origin/dev' into 4.2 2016-04-27 19:30:56 -07:00
Nirek-K 60c9dad874 Merge pull request #1137 from ultrasn0w/dev
Update PlantMegaPack Plugin
2016-04-25 14:55:21 -05:00
ultrasn0w d734ca55e6 Update PlantMegaPack Plugin 2016-04-25 21:15:47 +02:00
Nirek-K f16f349f10 Version bump to be ahead of stable, and pull in lang fixes 2016-04-24 14:32:05 -05:00
Nirek-K 66561ac66d Fix #1129 Bugfixes for Multifarm BC Gate Triggers. 2016-04-18 17:28:37 -05:00
Nirek-K ad96e21b37 Fix eating bottles slightly better, Steve now enjoys mead in 8packs (hic). 2016-04-17 18:46:52 -05:00
Nirek-K 3967d21b06 Short mead now has a purpose, further distillation produces mead (only drinkable in bottles).
Also fix somehow eating it glass bottle and all.
2016-04-17 01:40:45 -05:00
Nirek-K 2a025254a0 Add ic2 industrial fert as farming fertilizer. (seperate config option to probably come later) 2016-04-05 16:08:00 -05:00
Nirek-K 97bfbe2213 Fix #1117 Radioactive bee effect can bypass apiarist suit 2016-04-03 11:17:30 -05:00
Nirek-K 98c56973db Fix #1123 Add lang string for Leporine Bee, Add some basic bee trades to Aparist. 2016-03-31 09:41:47 -05:00
39 changed files with 275 additions and 71 deletions

No files matched your search

+1 -1
View File
@@ -3,7 +3,7 @@
url = https://github.com/ForestryMC/Forestry-Localization.git
[submodule "api/redstoneflux"]
path = api/redstoneflux
url = https://github.com/CoFH/RedstoneFlux-API.git
url = https://github.com/Texasjake95/RedstoneFlux-API.git
[submodule "api/forestry"]
path = api/forestry
url = https://github.com/ForestryMC/ForestryAPI.git
+13 -11
View File
@@ -35,8 +35,10 @@ ext.apiForestry = "./api/forestry"
ext.apiRedstoneFlux = "./api/redstoneflux"
// java version
sourceCompatibility = 1.7
targetCompatibility = 1.7
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = 1.8
targetCompatibility = 1.8
minecraft {
version = mcversion + "-" + forgeversion
@@ -82,8 +84,8 @@ repositories {
configurations {
api
compile.extendsFrom api
shade
compile.extendsFrom shade
//shade
//compile.extendsFrom shade
}
dependencies {
@@ -99,7 +101,7 @@ dependencies {
compile "codechicken:NotEnoughItems:1.7.10-1.0.5.111:src"
// http://maven.tterrag.com/
shade "chylex.javacheck:JavaChecker:v1.2-b1"
//shade "chylex.javacheck:JavaChecker:v1.2-b1"
testCompile 'junit:junit:4.12'
}
@@ -158,11 +160,11 @@ jar {
from "./src/main/java/invtweaks/LICENSE.txt"
}
configurations.shade.each{ dep ->
from(project.zipTree(dep)){
exclude 'META-INF', 'META-INF/**', 'mcmod.info'
}
}
//configurations.shade.each{ dep ->
// from(project.zipTree(dep)){
// exclude 'META-INF', 'META-INF/**', 'mcmod.info'
// }
//}
}
task mainJar(type: Jar, dependsOn: 'reobf') {
@@ -177,7 +179,7 @@ task mainJar(type: Jar, dependsOn: 'reobf') {
includeEmptyDirs = false
manifest{
attributes 'TweakClass': 'forestry.shade.javacheck.Java7Checker'
//attributes 'TweakClass': 'forestry.shade.javacheck.Java7Checker'
}
}
+2 -2
View File
@@ -1,5 +1,5 @@
mcversion=1.7.10
forgeversion=10.13.4.1566-1.7.10
forgeversion=10.13.4.1614-1.7.10
version_major=4
version_minor=2
version_patch=11
version_patch=20
+1 -1
View File
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip
+1 -1
Submodule lang updated: cb5900228e...4cfdcf1595.
@@ -116,9 +116,13 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
hasFlowersCache.writeToNBT(nbttagcompound);
Stack<ItemStack> spawnCopy = new Stack<>();
spawnCopy.addAll(spawn);
if (spawn.size()<128)
spawnCopy.addAll(spawn);
else
for (byte b=0;b<128;++b)
spawnCopy.add(spawn.get(b));
NBTTagList nbttaglist = new NBTTagList();
while (!spawnCopy.isEmpty()) {
while (!spawnCopy.isEmpty() && spawnCopy.size()<=128) {
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
spawnCopy.pop().writeToNBT(nbttagcompound1);
nbttaglist.appendTag(nbttagcompound1);
@@ -49,6 +49,7 @@ public class VillageHandlerApiculture implements IVillageCreationHandler, IVilla
@Override
public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) {
ItemStack wildcardPrincess = new ItemStack(PluginApiculture.items.beePrincessGE, 1, OreDictionary.WILDCARD_VALUE);
ItemStack wildcardDrone = new ItemStack(PluginApiculture.items.beeDroneGE, 4, OreDictionary.WILDCARD_VALUE);
recipeList.add(new MerchantRecipe(wildcardPrincess, new ItemStack(Items.emerald, 1)));
ItemStack randomComb = PluginApiculture.items.beeComb.getRandomComb(1, random, false);
@@ -62,6 +63,23 @@ public class VillageHandlerApiculture implements IVillageCreationHandler, IVilla
ItemStack monasticDrone = BeeDefinition.MONASTIC.getMemberStack(EnumBeeType.DRONE);
recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 12), wildcardPrincess, monasticDrone));
ItemStack endDrone = BeeDefinition.ENDED.getMemberStack(EnumBeeType.DRONE);
recipeList.add(new MerchantRecipe(new ItemStack(Items.ender_eye, 16), wildcardPrincess, endDrone));
ItemStack propolis = new ItemStack(PluginApiculture.items.propolis,1);
ItemStack forestDrone = BeeDefinition.FOREST.getMemberStack(EnumBeeType.DRONE);
ItemStack meadowsDrone = BeeDefinition.MEADOWS.getMemberStack(EnumBeeType.DRONE);
ItemStack modestDrone = BeeDefinition.MODEST.getMemberStack(EnumBeeType.DRONE);
ItemStack tropicalDrone = BeeDefinition.TROPICAL.getMemberStack(EnumBeeType.DRONE);
ItemStack wintryDrone = BeeDefinition.WINTRY.getMemberStack(EnumBeeType.DRONE);
ItemStack marshyDrone = BeeDefinition.MARSHY.getMemberStack(EnumBeeType.DRONE);
recipeList.add(new MerchantRecipe(propolis, wildcardDrone, forestDrone));
recipeList.add(new MerchantRecipe(propolis, wildcardDrone, meadowsDrone));
recipeList.add(new MerchantRecipe(propolis, wildcardDrone, modestDrone));
recipeList.add(new MerchantRecipe(propolis, wildcardDrone, tropicalDrone));
recipeList.add(new MerchantRecipe(propolis, wildcardDrone, wintryDrone));
recipeList.add(new MerchantRecipe(propolis, wildcardDrone, marshyDrone));
}
@Override
@@ -283,7 +283,7 @@ public class Bee extends IndividualLiving implements IBee {
}
// / Check for the sky, except if in hell
if (biome != null && !BiomeHelper.isBiomeHellish(biome)) {
if (!world.provider.hasNoSky) {
if (!housing.canBlockSeeTheSky() && !canWorkUnderground(beeModifier)) {
errorStates.add(EnumErrorCode.NO_SKY);
}
@@ -12,6 +12,7 @@ package forestry.apiculture.genetics;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
@@ -33,9 +34,17 @@ public class JubilanceRequiresResource implements IJubilanceProvider {
public boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing) {
World world = housing.getWorld();
ChunkCoordinates housingCoords = housing.getCoordinates();
Block block;
TileEntity tile;
int meta;
int i = 1;
do {
block = world.getBlock(housingCoords.posX, housingCoords.posY - i, housingCoords.posZ);
meta = world.getBlockMetadata(housingCoords.posX, housingCoords.posY - i, housingCoords.posZ);
tile = world.getTileEntity(housingCoords.posX, housingCoords.posY - i, housingCoords.posZ);
i++;
} while (tile instanceof IBeeHousing);
Block block = world.getBlock(housingCoords.posX, housingCoords.posY - 1, housingCoords.posZ);
int meta = world.getBlockMetadata(housingCoords.posX, housingCoords.posY - 1, housingCoords.posZ);
return ItemStackUtil.equals(block, meta, blockRequired);
}
@@ -14,6 +14,7 @@ import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import forestry.api.core.BiomeHelper;
import net.minecraft.block.Block;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
@@ -53,7 +54,6 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
private final InventoryBeeHousing inventory;
private final IBeekeepingLogic beekeepingLogic;
private BiomeGenBase cachedBiome;
private float tempChange = 0.0f;
private float humidChange = 0.0f;
@@ -290,7 +290,6 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
data.setFloat("TempChange", tempChange);
data.setFloat("HumidChange", humidChange);
beekeepingLogic.writeToNBT(data);
inventory.writeToNBT(data);
}
@@ -359,8 +358,11 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
@Override
public EnumTemperature getTemperature() {
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(this);
if (beeModifier.isHellish() && tempChange >= 0) {
return EnumTemperature.HELLISH;
BiomeGenBase biome = getBiome();
if (beeModifier.isHellish() || BiomeHelper.isBiomeHellish(biome)) {
if (tempChange >= 0) {
return EnumTemperature.HELLISH;
}
}
return EnumTemperature.getFromValue(getExactTemperature());
@@ -383,11 +385,8 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
@Override
public BiomeGenBase getBiome() {
if (cachedBiome == null) {
ChunkCoordinates coords = getReferenceCoord();
cachedBiome = worldObj.getBiomeGenForCoords(coords.posX, coords.posZ);
}
return cachedBiome;
ChunkCoordinates coords = getReferenceCoord();
return worldObj.getBiomeGenForCoords(coords.posX, coords.posZ);
}
@Override
@@ -35,7 +35,6 @@ import forestry.core.tiles.TileBase;
public abstract class TileBeeHousingBase extends TileBase implements IBeeHousing, IClimatised, IGuiBeeHousingInventory, IStreamableGui {
private final IBeekeepingLogic beeLogic;
private BiomeGenBase cachedBiome;
// CLIENT
private int breedingProgressPercent = 0;
@@ -142,10 +141,7 @@ public abstract class TileBeeHousingBase extends TileBase implements IBeeHousing
// / IBEEHOUSING
@Override
public BiomeGenBase getBiome() {
if (cachedBiome == null) {
cachedBiome = worldObj.getBiomeGenForCoordsBody(xCoord, zCoord);
}
return cachedBiome;
return worldObj.getBiomeGenForCoordsBody(xCoord, zCoord);
}
@Override
@@ -21,6 +21,7 @@ import net.minecraft.world.gen.feature.WorldGenerator;
import com.mojang.authlib.GameProfile;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.util.ForgeDirection;
import forestry.api.arboriculture.EnumFruitFamily;
@@ -458,7 +459,7 @@ public enum TreeDefinition implements ITreeDefinition, ITreeGenerator {
@Override
protected void registerMutations() {
// only available by rare villager trade
registerMutation(Sequioa,Baobab,1).requireNight().restrictBiomeType(BiomeDictionary.Type.FOREST);
}
},
Jungle(TreeBranchDefinition.TROPICAL, "jungle", "tectona", false, EnumLeafType.JUNGLE, new Color(4764952), new Color(0x658917), 3, new ItemStack(Blocks.log, 1, 3)) {
@@ -184,17 +184,13 @@ public class ItemGermlingGE extends ItemGE implements IVariableFermentable {
ICheckPollinatable checkPollinatable = GeneticsUtil.getCheckPollinatable(world, x, y, z);
if (checkPollinatable == null) {
return false;
}
if (!checkPollinatable.canMateWith(tree)) {
if (checkPollinatable == null || !checkPollinatable.canMateWith(tree)) {
return false;
}
IPollinatable pollinatable = GeneticsUtil.getOrCreatePollinatable(player.getGameProfile(), world, x, y, z);
if (!pollinatable.canMateWith(tree)) {
if (pollinatable == null || !pollinatable.canMateWith(tree)) {
return false;
}
+26 -2
View File
@@ -211,7 +211,31 @@ public enum Fluids {
@Override
public EnumSet<EnumContainerType> getContainerTypes() {
return EnumSet.of(
EnumContainerType.BUCKET
EnumContainerType.BUCKET,
EnumContainerType.CAN,
EnumContainerType.CAPSULE,
EnumContainerType.REFRACTORY
);
}
},
MEAD("Mead", new Color(202, 102, 0), 1000, 1200) {
@Override
public String getTag() {
return "mead";
}
@Override
public Block makeBlock() {
return new BlockForestryFluid(this);
}
@Override
public EnumSet<EnumContainerType> getContainerTypes() {
return EnumSet.of(
EnumContainerType.BUCKET,
EnumContainerType.CAN,
EnumContainerType.CAPSULE,
EnumContainerType.REFRACTORY
);
}
},
@@ -260,7 +284,7 @@ public enum Fluids {
CREOSOTE(new Color(0x635c03)),
STEAM(new Color(0x91938F));
public static final Fluids[] forestryFluids = {ETHANOL, BIOMASS, GLASS, HONEY, LEGACY_HONEY, ICE, JUICE, MILK, SEEDOIL, SHORT_MEAD};
public static final Fluids[] forestryFluids = {ETHANOL, BIOMASS, GLASS, HONEY, LEGACY_HONEY, ICE, JUICE, MILK, SEEDOIL, SHORT_MEAD, MEAD};
private static final Map<String, Fluids> tagToFluid = new HashMap<>();
@@ -12,6 +12,7 @@ package forestry.core.genetics.mutations;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import forestry.api.apiculture.IBeeHousing;
@@ -32,13 +33,15 @@ public class MutationConditionRequiresResource implements IMutationCondition {
@Override
public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) {
Block block;
TileEntity tile;
int meta;
int i = 1;
do {
block = world.getBlock(x, y - i, z);
meta = world.getBlockMetadata(x, y - i, z);
tile = world.getTileEntity(x, y - i, z);
i++;
} while (block instanceof IBeeHousing);
} while (tile instanceof IBeeHousing);
return ItemStackUtil.equals(block, meta, blockRequired) ? 1 : 0;
}
@@ -14,6 +14,7 @@ import java.util.ArrayList;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
@@ -44,12 +45,14 @@ public class MutationConditionRequiresResourceOreDict implements IMutationCondit
public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) {
Block block;
int meta;
TileEntity tile;
int i = 1;
do {
block = world.getBlock(x, y - i, z);
meta = world.getBlockMetadata(x, y - i, z);
tile = world.getTileEntity(x, y-i, z);
i++;
} while (block instanceof IBeeHousing);
} while (tile instanceof IBeeHousing);
int[] oreIds = OreDictionary.getOreIDs(new ItemStack(block, 1, meta));
for (int oreId : oreIds) {
@@ -31,7 +31,7 @@ public class SlotWorking extends SlotForestry {
}
@Override
public boolean getHasStack() {
public boolean canTakeStack(EntityPlayer stack) {
return false;
}
@@ -407,6 +407,22 @@ public abstract class InventoryUtil {
return ((float) amount / (float) stackMax) >= percent;
}
public static boolean containsAmount(IInventory inventory, int amount) {
int total = 0;
int slot1 = 0;
int length = inventory.getSizeInventory();
for (ItemStack itemStack : getStacks(inventory, slot1, length)) {
if (itemStack == null) {
continue;
}
total += itemStack.stackSize;
if (total >= amount) {
return true;
}
}
return false;
}
public static boolean isEmpty(IInventory inventory, int slotStart, int slotCount) {
for (int i = slotStart; i < slotStart + slotCount; i++) {
if (inventory.getStackInSlot(i) != null) {
@@ -141,6 +141,13 @@ public abstract class ItemStackUtil {
* Counts how many full sets are contained in the passed stock
*/
public static int containsSets(ItemStack[] set, ItemStack[] stock, boolean oreDictionary, boolean craftingTools) {
return containsSets(set, stock, oreDictionary, craftingTools, false);
}
/**
* Counts how many full sets are contained in the passed stock
*/
public static int containsSets(ItemStack[] set, ItemStack[] stock, boolean oreDictionary, boolean craftingTools, boolean matchTags) {
int totalSets = 0;
ItemStack[] condensedRequired = ItemStackUtil.condenseStacks(set);
@@ -150,7 +157,7 @@ public abstract class ItemStackUtil {
int reqCount = 0;
for (ItemStack offer : condensedOffered) {
if (isCraftingEquivalent(req, offer, oreDictionary, craftingTools)) {
if (isCraftingEquivalent(req, offer, oreDictionary, craftingTools) && (matchTags ? ItemStack.areItemStackTagsEqual(req, offer) : true)) {
int stackCount = (int) Math.floor(offer.stackSize / req.stackSize);
reqCount = Math.max(reqCount, stackCount);
}
@@ -12,6 +12,7 @@ package forestry.farming.logic;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
@@ -47,6 +48,7 @@ public class CropBasicAgriCraft extends Crop {
harvest.remove(0);
Proxies.common.addBlockDestroyEffects(world, pos.x, pos.y, pos.z, Blocks.melon_block, 0);
world.setBlockMetadataWithNotify(pos.x, pos.y, pos.z, 0, Constants.FLAG_BLOCK_SYNCH);
harvest.removeAll(Collections.singleton(null)); //sanatize nulls that get thru from Agricraft+Harvestcraft (sesameseed)
return harvest;
}
@@ -31,6 +31,9 @@ import forestry.core.utils.InventoryUtil;
import forestry.core.utils.PlayerUtil;
import forestry.core.utils.SlotUtil;
import forestry.plugins.PluginCore;
import forestry.plugins.PluginManager;
import ic2.api.item.IC2Items;
public class InventoryFarm extends InventoryAdapterRestricted implements IFarmInventory {
public static final int SLOT_RESOURCES_1 = 0;
@@ -132,8 +135,14 @@ public class InventoryFarm extends InventoryAdapterRestricted implements IFarmIn
if (itemstack == null) {
return false;
}
Item item = itemstack.getItem();
if (PluginManager.Module.INDUSTRIALCRAFT.isEnabled()) {
Item ic2fert = IC2Items.getItem("fertilizer").getItem();
if (ic2fert == item) {
return true;
}
}
return PluginCore.items.fertilizerCompound == item;
}
@@ -199,7 +208,10 @@ public class InventoryFarm extends InventoryAdapterRestricted implements IFarmIn
public void stowHarvest(Iterable<ItemStack> harvested, Stack<ItemStack> pendingProduce) {
for (ItemStack harvest : harvested) {
if (harvest == null) {
continue;
}
if (acceptsAsGermling(harvest)) {
harvest.stackSize -= InventoryUtil.addStack(germlingsInventory, harvest, true);
}
@@ -244,4 +256,4 @@ public class InventoryFarm extends InventoryAdapterRestricted implements IFarmIn
decrStackSize(SLOT_FERTILIZER, 1);
return true;
}
}
}
@@ -44,6 +44,6 @@ public class TriggerLowFertilizer extends Trigger {
TileFarmHatch tileHatch = (TileFarmHatch) tile;
IInventory fertilizerInventory = tileHatch.getMultiblockLogic().getController().getFarmInventory().getFertilizerInventory();
return InventoryUtil.containsPercent(fertilizerInventory, threshold);
return !InventoryUtil.containsPercent(fertilizerInventory, threshold);
}
}
@@ -47,6 +47,6 @@ public class TriggerLowGermlings extends Trigger {
TileFarmHatch tileHatch = (TileFarmHatch) tile;
IInventory germlingsInventory = tileHatch.getMultiblockLogic().getController().getFarmInventory().getGermlingsInventory();
return InventoryUtil.containsPercent(germlingsInventory, threshold);
return !InventoryUtil.containsPercent(germlingsInventory, threshold);
}
}
@@ -24,6 +24,7 @@ import forestry.farming.tiles.TileFarmHatch;
import buildcraft.api.statements.IStatementContainer;
import buildcraft.api.statements.IStatementParameter;
import buildcraft.api.statements.StatementParameterItemStack;
public class TriggerLowSoil extends Trigger {
@@ -49,6 +50,11 @@ public class TriggerLowSoil extends Trigger {
return 0;
}
@Override
public IStatementParameter createParameter(int index) {
return new StatementParameterItemStack();
}
/**
* Return true if the tile given in parameter activates the trigger, given
* the parameters.
@@ -67,14 +73,14 @@ public class TriggerLowSoil extends Trigger {
TileFarmHatch tileHatch = (TileFarmHatch) tile;
IFarmController farmController = tileHatch.getMultiblockLogic().getController();
IFarmInventory farmInventory = farmController.getFarmInventory();
IInventory resourcesInventory = farmInventory.getResourcesInventory();
if (parameter == null || parameter.getItemStack() == null) {
IInventory resourcesInventory = farmInventory.getResourcesInventory();
return InventoryUtil.containsPercent(resourcesInventory, threshold);
return !InventoryUtil.containsAmount(resourcesInventory, threshold);
} else {
ItemStack filter = parameter.getItemStack().copy();
filter.stackSize = threshold;
return farmInventory.hasResources(new ItemStack[]{filter});
return !InventoryUtil.contains(resourcesInventory, new ItemStack[]{filter});
}
}
}
@@ -22,8 +22,8 @@ import forestry.core.render.TextureManager;
public enum EnumBeverage implements ItemBeverage.IBeverageInfo {
MEAD_SHORT("meadShort", "glass", new Color(0xec9a19), new Color(0xffffff), 1, 0.2f, true),
MEAD_CURATIVE("meadCurative", "glass", new Color(0xc5feff), new Color(0xffffff), 1, 0.2f, true);
MEAD_CURATIVE("meadCurative", "glass", new Color(0xc5feff), new Color(0xffffff), 1, 0.2f, true),
MEAD("mead", "glass", new Color(0xcc6600), new Color(0xffffff), 10, 0.1f, true);
public static final EnumBeverage[] VALUES = values();
private final String name;
@@ -15,6 +15,7 @@ import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -49,7 +50,7 @@ public class ItemBeverage extends ItemForestryFood {
public ItemBeverage() {
super(1, 0.2f);
setMaxStackSize(1);
setMaxStackSize(8);
this.beverages = EnumBeverage.VALUES;
}
@@ -64,11 +65,18 @@ public class ItemBeverage extends ItemForestryFood {
@Override
public ItemStack onEaten(ItemStack itemstack, World world, EntityPlayer entityplayer) {
List<IBeverageEffect> effects = BeverageEffect.loadEffects(itemstack);
ItemStack container = new ItemStack(Items.glass_bottle, 1);
itemstack.stackSize--;
if (!entityplayer.inventory.addItemStackToInventory(container)) {
entityplayer.dropPlayerItemWithRandomChoice(container, false);
} else {
entityplayer.inventory.setInventorySlotContents(entityplayer.inventory.currentItem, container);
}
entityplayer.inventory.markDirty();
entityplayer.getFoodStats().func_151686_a(this, itemstack);
world.playSoundAtEntity(entityplayer, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
if (world.isRemote) {
return itemstack;
}
@@ -176,7 +176,7 @@ public class TradeStation extends WorldSavedData implements ITradeStation, IInve
return EnumStationState.INSUFFICIENT_PAPER;
}
int ordersToFillCount = ItemStackUtil.containsSets(InventoryUtil.getStacks(inventory, SLOT_EXCHANGE_1, SLOT_EXCHANGE_COUNT), letter.getAttachments());
int ordersToFillCount = ItemStackUtil.containsSets(InventoryUtil.getStacks(inventory, SLOT_EXCHANGE_1, SLOT_EXCHANGE_COUNT), letter.getAttachments(), false, false, true);
// Not a single match.
if (ordersToFillCount <= 0) {
@@ -523,6 +523,9 @@ public class TradeStation extends WorldSavedData implements ITradeStation, IInve
if (!pol.isItemEqual(req)) {
continue;
}
if (!ItemStack.areItemStackTagsEqual(req, pol)) {
continue;
}
if (req.stackSize >= pol.stackSize) {
req.stackSize -= pol.stackSize;
@@ -710,6 +710,8 @@ public class PluginApiculture extends ForestryPlugin {
// / FERMENTER
RecipeManagers.fermenterManager.addRecipe(items.honeydew.getItemStack(), 500, 1.0f, Fluids.SHORT_MEAD.getFluid(1), Fluids.HONEY.getFluid(1));
// / STILL
RecipeManagers.stillManager.addRecipe(Constants.STILL_DESTILLATION_DURATION, Fluids.SHORT_MEAD.getFluid(10), Fluids.MEAD.getFluid(5));
}
// ANALYZER
@@ -258,15 +258,14 @@ public class PluginFactory extends ForestryPlugin {
if (PluginManager.Module.APICULTURE.isEnabled()) {
ItemRegistryApiculture beeItems = PluginApiculture.items;
FluidStack liquidGlass = Fluids.GLASS.getFluid(Constants.BUCKET_VOLUME);
FluidStack liquidGlassX4 = Fluids.GLASS.getFluid(Constants.BUCKET_VOLUME * 4);
for (int i = 0; i < 16; i++) {
RecipeManagers.fabricatorManager.addRecipe(beeItems.waxCast.getWildcard(), liquidGlass, new ItemStack(Blocks.stained_glass, 4, 15 - i), new Object[]{
RecipeManagers.fabricatorManager.addRecipe(beeItems.waxCast.getWildcard(), liquidGlassX4, new ItemStack(Blocks.stained_glass, 4, 15 - i), new Object[]{
"#", "X",
'#', dyes[i],
'X', beeItems.propolis.getWildcard()});
}
RecipeManagers.fabricatorManager.addRecipe(beeItems.waxCast.getWildcard(), liquidGlassX4, new ItemStack(Blocks.glass, 1, 0), new Object[]{
RecipeManagers.fabricatorManager.addRecipe(beeItems.waxCast.getWildcard(), liquidGlassX4, new ItemStack(Blocks.glass, 4, 0), new Object[]{
"#", "X",
'X', beeItems.propolis.getWildcard()});
}
@@ -50,6 +50,7 @@ public class PluginFood extends ForestryPlugin {
super.preInit();
LiquidRegistryHelper.registerLiquidContainer(Fluids.SHORT_MEAD, Constants.BUCKET_VOLUME, items.beverage.get(EnumBeverage.MEAD_SHORT, 1), new ItemStack(Items.glass_bottle));
LiquidRegistryHelper.registerLiquidContainer(Fluids.MEAD, Constants.BUCKET_VOLUME, items.beverage.get(EnumBeverage.MEAD, 1), new ItemStack(Items.glass_bottle));
ItemRegistryApiculture beeItems = PluginApiculture.items;
if (beeItems != null) {
@@ -57,6 +57,7 @@ import forestry.plugins.compat.PluginHarvestCraft;
import forestry.plugins.compat.PluginIC2;
import forestry.plugins.compat.PluginImmersiveEngineering;
import forestry.plugins.compat.PluginMagicalCrops;
import forestry.plugins.compat.PluginMineFactoryReloaded;
import forestry.plugins.compat.PluginNatura;
import forestry.plugins.compat.PluginPlantMegaPack;
import forestry.plugins.compat.PluginRotaryCraft;
@@ -115,6 +116,7 @@ public class PluginManager {
IMMERSIVEENGINEERING(new PluginImmersiveEngineering()),
INDUSTRIALCRAFT(new PluginIC2()),
MAGICALCROPS(new PluginMagicalCrops()),
MINEFACTORYRELOADED(new PluginMineFactoryReloaded()),
NATURA(new PluginNatura()),
PLANTMEGAPACK(new PluginPlantMegaPack()),
ROTARYCRAFT(new PluginRotaryCraft()),
@@ -89,7 +89,8 @@ public class PluginHarvestCraft extends ForestryPlugin {
"persimmon",
"avocado",
"coconut",
"durian"
"durian",
"gooseberry"
);
ImmutableList<String> trees = ImmutableList.of(
@@ -112,7 +113,8 @@ public class PluginHarvestCraft extends ForestryPlugin {
ImmutableList<String> spices = ImmutableList.of(
"ginger",
"spiceleaf"
"spiceleaf",
"curryleaf"
//"mustardseed" Mustard is inconsistent and annoying.
);
@@ -149,7 +151,8 @@ public class PluginHarvestCraft extends ForestryPlugin {
"wintersquash",
"zucchini",
"bambooshoot",
"spinach"
"spinach",
"waterchestnut"
);
ImmutableList<String> grains = ImmutableList.of(
@@ -159,7 +162,8 @@ public class PluginHarvestCraft extends ForestryPlugin {
);
ImmutableList<String> cropNuts = ImmutableList.of(
"peanut"
"peanut",
"sesameseeds"
);
ImmutableList<String> nuts = ImmutableList.of(
@@ -400,7 +400,13 @@ public class PluginIC2 extends ForestryPlugin {
public ArrayList<ItemStack> getCropDrops(TileEntity tileEntity) {
if (isIC2Crop(tileEntity)) {
ICropTile crop = (ICropTile)tileEntity;
ItemStack[] cropDrops = crop.harvest_automated(true);
if (crop == null || crop.getCrop() == null)
return null;
ItemStack[] cropDrops;
if ((crop.getCrop().canGrow(crop) && crop.getSize() < crop.getCrop().getOptimalHavestSize(crop)) || crop.getSize() == crop.getCrop().getOptimalHavestSize(crop))
cropDrops = crop.harvest_automated(true);
else
cropDrops = crop.harvest_automated(false);
if (cropDrops != null) {
return new ArrayList<>(Arrays.asList(cropDrops));
}
@@ -0,0 +1,72 @@
/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
******************************************************************************/
package forestry.plugins.compat;
import com.google.common.collect.ImmutableMap;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.registry.GameData;
import cpw.mods.fml.common.registry.GameRegistry;
import forestry.api.core.ForestryAPI;
import forestry.api.recipes.RecipeManagers;
import forestry.apiculture.items.EnumPropolis;
import forestry.apiculture.items.ItemRegistryApiculture;
import forestry.core.config.Constants;
import forestry.core.fluids.Fluids;
import forestry.core.recipes.RecipeUtil;
import forestry.core.utils.ModUtil;
import forestry.plugins.ForestryPlugin;
import forestry.plugins.Plugin;
import forestry.plugins.PluginApiculture;
import forestry.plugins.PluginManager;
@Plugin(pluginID = "MinefactoryReloaded", name = "MineFactoryReloaded", author = "Nirek", url = Constants.URL, unlocalizedDescription = "for.plugin.minefactoryreloaded.description")
public class PluginMineFactoryReloaded extends ForestryPlugin {
private static final String MFR = "MineFactoryReloaded";
@Override
public boolean isAvailable() {
return ModUtil.isModLoaded(MFR);
}
@Override
public String getFailMessage() {
return "MineFactoryReloaded not found";
}
@Override
protected void registerRecipes() {
Block rubbersapling = GameRegistry.findBlock(MFR, "rubberwood.sapling");
Item saplingItem = GameRegistry.findItem(MFR, "rubberwood.sapling");
ItemStack saplingStack = new ItemStack(saplingItem, 1, 0);
ItemStack rubberRaw = GameRegistry.findItemStack(MFR,"rubber.raw", 1);
GameRegistry.findItemStack(MFR,"rubber.raw", 1);
if (PluginManager.Module.APICULTURE.isEnabled() && !PluginManager.Module.INDUSTRIALCRAFT.isEnabled()) {
if (rubberRaw != null) {
ItemRegistryApiculture beeItems = PluginApiculture.items;
RecipeManagers.centrifugeManager.addRecipe(20, beeItems.propolis.get(EnumPropolis.NORMAL, 1), ImmutableMap.of(rubberRaw, 1.0f));
}
}
if (rubbersapling != null && rubberRaw != null) {
RecipeUtil.addFermenterRecipes(saplingStack, ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.sapling"), Fluids.BIOMASS);
String saplingName = GameData.getItemRegistry().getNameForObject(saplingItem);
FMLInterModComms.sendMessage(Constants.MOD, "add-farmable-sapling", String.format("farmArboreal@%s.-1", saplingName));
}
}
}
@@ -67,12 +67,20 @@ public class PluginPlantMegaPack extends ForestryPlugin {
ImmutableList<String> landCropPlant = ImmutableList.of(
"Beet",
"BellPepperOrange",
"BellPepperRed",
"BellPepperYellow",
"Broccoli",
"Cassava",
"Celery",
"Corn",
"Cucumber",
"Eggplant",
"GreenBean",
"Leek",
"Lettuce",
"Onion",
"Sorrel",
"Spinach",
"Tomato"
);
@@ -77,7 +77,7 @@ public class PluginWitchery extends ForestryPlugin {
Item saplingItem = GameRegistry.findItem(Witch, "witchsapling");
ItemStack saplingStack = new ItemStack(saplingItem, 1, OreDictionary.WILDCARD_VALUE);
RecipeUtil.addFermenterRecipes(saplingStack, ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.wheat"), Fluids.BIOMASS);
RecipeUtil.addFermenterRecipes(saplingStack, ForestryAPI.activeMode.getIntegerSetting("fermenter.yield.sapling"), Fluids.BIOMASS);
String saplingName = GameData.getItemRegistry().getNameForObject(saplingItem);
FMLInterModComms.sendMessage(Constants.MOD, "add-farmable-sapling", String.format("farmArboreal@%s.-1", saplingName));
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

@@ -0,0 +1 @@
{"animation":{"width":1,"height":32,"frametime":1,"frames":[{"index":0,"time":2},{"index":1,"time":2},{"index":2,"time":2},{"index":3,"time":2},{"index":4,"time":2},{"index":5,"time":2},{"index":6,"time":2},{"index":7,"time":2},{"index":8,"time":2},{"index":9,"time":2},{"index":10,"time":2},{"index":11,"time":2},{"index":12,"time":2},{"index":13,"time":2},{"index":14,"time":2},{"index":15,"time":2},{"index":16,"time":2},{"index":17,"time":2},{"index":18,"time":2},{"index":19,"time":2},{"index":20,"time":2},{"index":21,"time":2},{"index":22,"time":2},{"index":23,"time":2},{"index":24,"time":2},{"index":25,"time":2},{"index":26,"time":2},{"index":27,"time":2},{"index":28,"time":2},{"index":29,"time":2},{"index":30,"time":2},{"index":31,"time":2}]}}