mirror of
https://github.com/GTNewHorizons/ForestryMC.git
synced 2026-11-15 01:24:59 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0435886ab | ||
|
|
2ab8613bec | ||
|
|
9d31dedd35 | ||
|
|
2dd539c3df | ||
|
|
fd2ac7d172 | ||
|
|
466110d461 | ||
|
|
ecf0d7165c | ||
|
|
dde3514dce | ||
|
|
0f24a4e043 | ||
|
|
3ed2ecfdd0 | ||
|
|
be548b06cc | ||
|
|
7db0dc7767 |
No files matched your search
@@ -3,17 +3,9 @@ Forestry
|
||||
|
||||
### What is it?
|
||||
|
||||
This is the GTNH fork of Forestry for 1.7.10. Do not report any issues to the original Forestry team. This fork is maintained by the GTNH team and is not supported by the original Forestry team.
|
||||
Forestry is a modification for the game Minecraft and known primarily for its farms and bees.
|
||||
|
||||
### Homepage
|
||||
|
||||
[Wiki](http://forestry.sengir.net/)
|
||||
|
||||
[Latest Builds for 1.7.10](http://jenkins.ic2.player.to/job/Forestry_Dev/)
|
||||
|
||||
[IRC #forestry on esper.net](http://webchat.esper.net/?nick=ForestryGithub...&channels=forestry&prompt=1)
|
||||
|
||||
For those interested in developement, you can also visit #forestry-dev.
|
||||
|
||||
### Building
|
||||
|
||||
@@ -31,8 +23,6 @@ Beware of ugly code.
|
||||
|
||||
Bugfixes are generally welcome. If you want to contribute something which changes game mechanics, please talk to someone with commit privileges first. Nothing is more frustrating than putting a lot of work and effort into a new game mechanic and then having the PR rejected because it doesn’t fit gameplay-wise.
|
||||
|
||||
**If you submit a PR you must accept the [Contributor License Agreement](https://cla-assistant.io/ForestryMC/ForestryMC). There is no way around that, since otherwise changing the license later - even to something more permissive! - , becomes close to impossible.**
|
||||
|
||||
### License & Copyright
|
||||
|
||||
Forestry is (c) 2011 - 2014 SirSengir and licensed under LGPL v3. See the LICENSE.txt for all the gory details or go to http://www.gnu.org/licenses/lgpl-3.0.txt for more information. Forestry also contains code contributed by CovertJaguar, Player, MysteriousAges, Binnie, RichardG, cpw and others.
|
||||
Forestry is (c) 2011 - 2014 SirSengir and licensed under LGPL v3. See the LICENSE.txt for all the gory details or go to http://www.gnu.org/licenses/lgpl-3.0.txt for more information. Forestry also contains code contributed by CovertJaguar, Player, MysteriousAges, Binnie, RichardG, cpw, the GTNH Team, and others.
|
||||
+2
-1
@@ -2,7 +2,8 @@
|
||||
|
||||
dependencies {
|
||||
api('curse.maven:cofh-lib-220333:2388748')
|
||||
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.5.18-GTNH:dev')
|
||||
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-alpha51:api')
|
||||
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.6.0-GTNH:dev')
|
||||
compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.6.2:api')
|
||||
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:api')
|
||||
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
|
||||
|
||||
+1
-1
@@ -117,7 +117,7 @@ minimizeShadowedDependencies = true
|
||||
# If disabled, won't rename the shadowed classes.
|
||||
relocateShadowedDependencies = true
|
||||
|
||||
# Adds the GTNH maven, CurseMaven, IC2/Player maven, and some more well-known 1.7.10 repositories.
|
||||
# Adds the GTNH maven, CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
|
||||
includeWellKnownRepositories = true
|
||||
|
||||
# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven.
|
||||
|
||||
Vendored
BIN
Binary file not shown.
+1
-1
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ pluginManagement {
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.14'
|
||||
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.22'
|
||||
}
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ public class BlockAlveary extends BlockStructure {
|
||||
/* TILE ENTITY CREATION */
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, int metadata) {
|
||||
if (metadata < 0 || metadata > Type.VALUES.length) {
|
||||
if (metadata < 0 || metadata >= Type.VALUES.length) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,11 +15,14 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import com.gtnewhorizons.angelica.api.ThreadSafeISBRH;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import forestry.apiculture.blocks.BlockCandle;
|
||||
import forestry.apiculture.tiles.TileCandle;
|
||||
import forestry.core.proxy.Proxies;
|
||||
|
||||
@ThreadSafeISBRH(perThread = false)
|
||||
public class RenderCandleBlock implements ISimpleBlockRenderingHandler {
|
||||
|
||||
@Override
|
||||
@@ -58,7 +61,7 @@ public class RenderCandleBlock implements ISimpleBlockRenderingHandler {
|
||||
IIcon iconB = block.getTextureFromPassAndLit(1, isLit);
|
||||
|
||||
int colour = tileCandle.getColour();
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
final Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setBrightness(world.getLightBrightnessForSkyBlocks(x, y, z, block.getLightValue(world, x, y, z)));
|
||||
tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
|
||||
double d0 = 0.4000000059604645D;
|
||||
@@ -87,7 +90,7 @@ public class RenderCandleBlock implements ISimpleBlockRenderingHandler {
|
||||
|
||||
private static void renderCandleAtAngle(IIcon icon, double x, double y, double z, double par8, double par10,
|
||||
int colour) {
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
final Tessellator tessellator = Tessellator.instance;
|
||||
double minU = icon.getMinU();
|
||||
double minV = icon.getMinV();
|
||||
double maxU = icon.getMaxU();
|
||||
|
||||
@@ -15,11 +15,14 @@ import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import com.gtnewhorizons.angelica.api.ThreadSafeISBRH;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import forestry.arboriculture.blocks.BlockFruitPod;
|
||||
import forestry.arboriculture.tiles.TileFruitPod;
|
||||
import forestry.plugins.PluginArboriculture;
|
||||
|
||||
@ThreadSafeISBRH(perThread = false)
|
||||
public class RenderFruitPodBlock implements ISimpleBlockRenderingHandler {
|
||||
|
||||
@Override
|
||||
@@ -37,7 +40,7 @@ public class RenderFruitPodBlock implements ISimpleBlockRenderingHandler {
|
||||
maturity = pod.getMaturity();
|
||||
}
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
final Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setBrightness(blockPod.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1.0f, 1.0f, 1.0f);
|
||||
int metadata = world.getBlockMetadata(x, y, z);
|
||||
|
||||
@@ -14,6 +14,8 @@ import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import com.gtnewhorizons.angelica.api.ThreadSafeISBRH;
|
||||
|
||||
import forestry.arboriculture.blocks.BlockForestryLeaves;
|
||||
import forestry.arboriculture.tiles.TileLeaves;
|
||||
import forestry.core.render.RenderOverlayBlock;
|
||||
@@ -22,6 +24,7 @@ import forestry.plugins.PluginArboriculture;
|
||||
/**
|
||||
* Ugly but serviceable renderer for leaves, taking fruits into account.
|
||||
*/
|
||||
@ThreadSafeISBRH(perThread = false)
|
||||
public class RenderLeavesBlock extends RenderOverlayBlock {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,6 +15,8 @@ import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import com.gtnewhorizons.angelica.api.ThreadSafeISBRH;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import forestry.api.arboriculture.EnumGermlingType;
|
||||
import forestry.api.arboriculture.IAlleleTreeSpecies;
|
||||
@@ -22,10 +24,9 @@ import forestry.arboriculture.blocks.BlockSapling;
|
||||
import forestry.arboriculture.tiles.TileSapling;
|
||||
import forestry.plugins.PluginArboriculture;
|
||||
|
||||
@ThreadSafeISBRH(perThread = false)
|
||||
public class RenderSaplingBlock implements ISimpleBlockRenderingHandler {
|
||||
|
||||
private static int renderLayer = 0;
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {}
|
||||
|
||||
@@ -45,10 +46,8 @@ public class RenderSaplingBlock implements ISimpleBlockRenderingHandler {
|
||||
|
||||
IAlleleTreeSpecies species = tile.getTree().getGenome().getPrimary();
|
||||
|
||||
renderCrossedSquares(species, world, block, x, y, z);
|
||||
renderLayer = 1;
|
||||
renderCrossedSquares(species, world, block, x, y, z);
|
||||
renderLayer = 0;
|
||||
renderCrossedSquares(species, world, block, x, y, z, 0);
|
||||
renderCrossedSquares(species, world, block, x, y, z, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -63,9 +62,9 @@ public class RenderSaplingBlock implements ISimpleBlockRenderingHandler {
|
||||
}
|
||||
|
||||
private static boolean renderCrossedSquares(IAlleleTreeSpecies species, IBlockAccess world, Block block, int x,
|
||||
int y, int z) {
|
||||
int y, int z, int renderLayer) {
|
||||
|
||||
Tessellator tess = Tessellator.instance;
|
||||
final Tessellator tess = Tessellator.instance;
|
||||
|
||||
tess.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
int colourMultiplier = species.getGermlingColour(EnumGermlingType.SAPLING, renderLayer);
|
||||
@@ -81,14 +80,14 @@ public class RenderSaplingBlock implements ISimpleBlockRenderingHandler {
|
||||
}
|
||||
|
||||
tess.setColorOpaque_F(r, g, b);
|
||||
drawCrossedSquares(species, x, y, z, 1.0f);
|
||||
drawCrossedSquares(species, x, y, z, 1.0f, renderLayer);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void drawCrossedSquares(IAlleleTreeSpecies species, double par3, double par5, double par7,
|
||||
float mod) {
|
||||
private static void drawCrossedSquares(IAlleleTreeSpecies species, double par3, double par5, double par7, float mod,
|
||||
int renderLayer) {
|
||||
|
||||
Tessellator tess = Tessellator.instance;
|
||||
final Tessellator tess = Tessellator.instance;
|
||||
IIcon icon = species.getGermlingIcon(EnumGermlingType.SAPLING, renderLayer);
|
||||
|
||||
double d3 = (double) icon.getMinU();
|
||||
|
||||
@@ -114,13 +114,18 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler implements
|
||||
CachedBaseRecipe crecipe = (CachedBaseRecipe) this.arecipes.get(recipe);
|
||||
if (GuiContainerManager.shouldShowTooltip(guiRecipe)) {
|
||||
Point mouse = GuiDraw.getMousePosition();
|
||||
Point offset = guiRecipe.getRecipePosition(recipe);
|
||||
Point relMouse = new Point(
|
||||
mouse.x - (guiRecipe.width - 176) / 2 - offset.x,
|
||||
mouse.y - (guiRecipe.height - 166) / 2 - offset.y);
|
||||
int recipeIndex = guiRecipe.getRecipeIndices().indexOf(recipe);
|
||||
|
||||
currenttip = this.provideTooltip(guiRecipe, currenttip, crecipe, relMouse);
|
||||
if (recipeIndex >= 0) {
|
||||
Point offset = guiRecipe.getRecipePosition(recipeIndex);
|
||||
Point relMouse = new Point(
|
||||
mouse.x - (guiRecipe.width - 176) / 2 - offset.x,
|
||||
mouse.y - (guiRecipe.height - 166) / 2 - offset.y);
|
||||
|
||||
currenttip = this.provideTooltip(guiRecipe, currenttip, crecipe, relMouse);
|
||||
}
|
||||
}
|
||||
|
||||
return currenttip;
|
||||
}
|
||||
|
||||
@@ -130,12 +135,17 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler implements
|
||||
super.handleItemTooltip(guiRecipe, itemStack, currenttip, recipe);
|
||||
CachedBaseRecipe crecipe = (CachedBaseRecipe) this.arecipes.get(recipe);
|
||||
Point mouse = GuiDraw.getMousePosition();
|
||||
Point offset = guiRecipe.getRecipePosition(recipe);
|
||||
Point relMouse = new Point(
|
||||
mouse.x - (guiRecipe.width - 176) / 2 - offset.x,
|
||||
mouse.y - (guiRecipe.height - 166) / 2 - offset.y);
|
||||
int recipeIndex = guiRecipe.getRecipeIndices().indexOf(recipe);
|
||||
|
||||
if (recipeIndex >= 0) {
|
||||
Point offset = guiRecipe.getRecipePosition(recipeIndex);
|
||||
Point relMouse = new Point(
|
||||
mouse.x - (guiRecipe.width - 176) / 2 - offset.x,
|
||||
mouse.y - (guiRecipe.height - 166) / 2 - offset.y);
|
||||
|
||||
currenttip = this.provideItemTooltip(guiRecipe, itemStack, currenttip, crecipe, relMouse);
|
||||
}
|
||||
|
||||
currenttip = this.provideItemTooltip(guiRecipe, itemStack, currenttip, crecipe, relMouse);
|
||||
return currenttip;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,11 +14,15 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import com.gtnewhorizons.angelica.api.ThreadSafeISBRH;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import forestry.core.proxy.Proxies;
|
||||
|
||||
@ThreadSafeISBRH(perThread = false)
|
||||
public class RenderBlock implements ISimpleBlockRenderingHandler {
|
||||
|
||||
// Seems to be set during registration - should be fine to not use a concurrent hashmap
|
||||
public static final HashMap<TileRendererIndex, IBlockRenderer> byBlockRenderer = new HashMap<>();
|
||||
|
||||
@Override
|
||||
|
||||
@@ -14,8 +14,11 @@ import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import com.gtnewhorizons.angelica.api.ThreadSafeISBRH;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
|
||||
@ThreadSafeISBRH(perThread = false)
|
||||
public abstract class RenderOverlayBlock implements ISimpleBlockRenderingHandler {
|
||||
|
||||
protected static final double OVERLAY_SHIFT = 0.001;
|
||||
|
||||
@@ -12,10 +12,13 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
import com.gtnewhorizons.angelica.api.ThreadSafeISBRH;
|
||||
|
||||
import forestry.core.render.RenderOverlayBlock;
|
||||
import forestry.farming.blocks.BlockFarm;
|
||||
import forestry.plugins.PluginFarming;
|
||||
|
||||
@ThreadSafeISBRH(perThread = false)
|
||||
public class RenderFarmBlock extends RenderOverlayBlock {
|
||||
|
||||
@Override
|
||||
@@ -41,78 +44,14 @@ public class RenderFarmBlock extends RenderOverlayBlock {
|
||||
float adjG = 0.5f;
|
||||
float adjB = 0.5f;
|
||||
|
||||
renderBottomFace(
|
||||
world,
|
||||
block,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
renderer,
|
||||
BlockFarm.getOverlayTextureForBlock(0, metadata),
|
||||
mixedBrightness,
|
||||
adjR,
|
||||
adjG,
|
||||
adjB);
|
||||
renderTopFace(
|
||||
world,
|
||||
block,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
renderer,
|
||||
BlockFarm.getOverlayTextureForBlock(1, metadata),
|
||||
mixedBrightness,
|
||||
adjR,
|
||||
adjG,
|
||||
adjB);
|
||||
renderEastFace(
|
||||
world,
|
||||
block,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
renderer,
|
||||
BlockFarm.getOverlayTextureForBlock(2, metadata),
|
||||
mixedBrightness,
|
||||
adjR,
|
||||
adjG,
|
||||
adjB);
|
||||
renderWestFace(
|
||||
world,
|
||||
block,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
renderer,
|
||||
BlockFarm.getOverlayTextureForBlock(3, metadata),
|
||||
mixedBrightness,
|
||||
adjR,
|
||||
adjG,
|
||||
adjB);
|
||||
renderNorthFace(
|
||||
world,
|
||||
block,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
renderer,
|
||||
BlockFarm.getOverlayTextureForBlock(4, metadata),
|
||||
mixedBrightness,
|
||||
adjR,
|
||||
adjG,
|
||||
adjB);
|
||||
renderSouthFace(
|
||||
world,
|
||||
block,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
renderer,
|
||||
BlockFarm.getOverlayTextureForBlock(5, metadata),
|
||||
mixedBrightness,
|
||||
adjR,
|
||||
adjG,
|
||||
adjB);
|
||||
// spotless:off
|
||||
renderBottomFace(world, block, x, y, z, renderer, BlockFarm.getOverlayTextureForBlock(0, metadata), mixedBrightness, adjR, adjG, adjB);
|
||||
renderTopFace(world, block, x, y, z, renderer, BlockFarm.getOverlayTextureForBlock(1, metadata), mixedBrightness, adjR, adjG, adjB);
|
||||
renderEastFace(world, block, x, y, z, renderer, BlockFarm.getOverlayTextureForBlock(2, metadata), mixedBrightness, adjR, adjG, adjB);
|
||||
renderWestFace(world, block, x, y, z, renderer, BlockFarm.getOverlayTextureForBlock(3, metadata), mixedBrightness, adjR, adjG, adjB);
|
||||
renderNorthFace(world, block, x, y, z, renderer, BlockFarm.getOverlayTextureForBlock(4, metadata), mixedBrightness, adjR, adjG, adjB);
|
||||
renderSouthFace(world, block, x, y, z, renderer, BlockFarm.getOverlayTextureForBlock(5, metadata), mixedBrightness, adjR, adjG, adjB);
|
||||
// spotless:on
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -60,6 +60,7 @@ public class PluginLepidopterology extends ForestryPlugin {
|
||||
public static int spawnConstraint = 100;
|
||||
public static int entityConstraint = 1000;
|
||||
private static boolean allowPollination = true;
|
||||
public static boolean disableButterflyLeafSpawns = false;
|
||||
|
||||
public static ItemRegistryLepidopterology items;
|
||||
public static BlockRegistryLepidopterology blocks;
|
||||
@@ -112,7 +113,8 @@ public class PluginLepidopterology extends ForestryPlugin {
|
||||
|
||||
blocks.lepidopterology.init();
|
||||
|
||||
TreeManager.treeRoot.registerLeafTickHandler(new ButterflySpawner());
|
||||
if (!PluginLepidopterology.disableButterflyLeafSpawns)
|
||||
TreeManager.treeRoot.registerLeafTickHandler(new ButterflySpawner());
|
||||
|
||||
RecipeSorter.register(
|
||||
"forestry:lepidopterologymating",
|
||||
@@ -127,6 +129,8 @@ public class PluginLepidopterology extends ForestryPlugin {
|
||||
spawnConstraint = config.getIntLocalized("butterfly.entities", "spawn.limit", spawnConstraint, 0, 500);
|
||||
entityConstraint = config.getIntLocalized("butterfly.entities", "maximum", entityConstraint, 0, 5000);
|
||||
allowPollination = config.getBooleanLocalized("butterfly.entities", "pollination", allowPollination);
|
||||
disableButterflyLeafSpawns = config
|
||||
.getBooleanLocalized("butterfly.entities", "disable.leaf.spawns", disableButterflyLeafSpawns);
|
||||
|
||||
config.save();
|
||||
}
|
||||
|
||||
@@ -96,6 +96,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
private final ArrayList<ItemStack> hunterItems = new ArrayList<>();
|
||||
private final ArrayList<ItemStack> adventurerItems = new ArrayList<>();
|
||||
private final ArrayList<ItemStack> builderItems = new ArrayList<>();
|
||||
private final ArrayList<ItemStack> coinItems = new ArrayList<>();
|
||||
|
||||
public static ItemRegistryStorage items;
|
||||
|
||||
@@ -108,7 +109,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
|
||||
BackpackManager.backpackInterface = new BackpackInterface();
|
||||
|
||||
BackpackManager.backpackItems = new ArrayList[6];
|
||||
BackpackManager.backpackItems = new ArrayList[7];
|
||||
|
||||
BackpackManager.backpackItems[0] = minerItems;
|
||||
BackpackManager.backpackItems[1] = diggerItems;
|
||||
@@ -116,6 +117,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
BackpackManager.backpackItems[3] = hunterItems;
|
||||
BackpackManager.backpackItems[4] = adventurerItems;
|
||||
BackpackManager.backpackItems[5] = builderItems;
|
||||
BackpackManager.backpackItems[6] = coinItems;
|
||||
|
||||
BackpackDefinition definition;
|
||||
|
||||
@@ -146,18 +148,22 @@ public class PluginStorage extends ForestryPlugin {
|
||||
|
||||
definition = new BackpackDefinition("builder", new Color(0xdd3a3a).getRGB());
|
||||
BackpackManager.definitions.put(definition.getKey(), definition);
|
||||
|
||||
definition = new BackpackDefinition("coin", new Color(0xffd700).getRGB());
|
||||
BackpackManager.definitions.put(definition.getKey(), definition);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
protected void disabledSetupAPI() {
|
||||
BackpackManager.backpackItems = new ArrayList[6];
|
||||
BackpackManager.backpackItems = new ArrayList[7];
|
||||
BackpackManager.backpackItems[0] = minerItems;
|
||||
BackpackManager.backpackItems[1] = diggerItems;
|
||||
BackpackManager.backpackItems[2] = foresterItems;
|
||||
BackpackManager.backpackItems[3] = hunterItems;
|
||||
BackpackManager.backpackItems[4] = adventurerItems;
|
||||
BackpackManager.backpackItems[5] = builderItems;
|
||||
BackpackManager.backpackItems[6] = coinItems;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -182,6 +188,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
handleBackpackConfig(config, "hunter");
|
||||
handleBackpackConfig(config, "adventurer");
|
||||
handleBackpackConfig(config, "builder");
|
||||
handleBackpackConfig(config, "coin");
|
||||
|
||||
config.save();
|
||||
|
||||
@@ -219,6 +226,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
final BackpackDefinition adventurer = (BackpackDefinition) BackpackManager.definitions.get("adventurer");
|
||||
final BackpackDefinition builder = (BackpackDefinition) BackpackManager.definitions.get("builder");
|
||||
final BackpackDefinition hunter = (BackpackDefinition) BackpackManager.definitions.get("hunter");
|
||||
final BackpackDefinition coin = (BackpackDefinition) BackpackManager.definitions.get("coin");
|
||||
|
||||
miner.addValidItems(minerItems);
|
||||
digger.addValidItems(diggerItems);
|
||||
@@ -226,6 +234,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
hunter.addValidItems(hunterItems);
|
||||
adventurer.addValidItems(adventurerItems);
|
||||
builder.addValidItems(builderItems);
|
||||
coin.addValidItems(coinItems);
|
||||
|
||||
final Pattern minerOreDictPattern = Pattern
|
||||
.compile("(ore|dust|gem|ingot|nugget|crushed|cluster|denseore)[A-Z].*");
|
||||
@@ -521,6 +530,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
addBackpackRecipe(items.hunterBackpack, Items.feather);
|
||||
addBackpackRecipe(items.adventurerBackpack, Items.bone);
|
||||
addBackpackRecipe(items.builderBackpack, Items.clay_ball);
|
||||
addBackpackRecipe(items.coinBackpack, "ingotGold");
|
||||
|
||||
// / CARPENTER
|
||||
if (PluginManager.Module.FACTORY.isEnabled()) {
|
||||
@@ -543,6 +553,7 @@ public class PluginStorage extends ForestryPlugin {
|
||||
addT2BackpackRecipe(items.hunterBackpack, items.hunterBackpackT2);
|
||||
addT2BackpackRecipe(items.adventurerBackpack, items.adventurerBackpackT2);
|
||||
addT2BackpackRecipe(items.builderBackpack, items.builderBackpackT2);
|
||||
addT2BackpackRecipe(items.coinBackpack, items.coinBackpackT2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ public class PluginHarvestCraft extends ForestryPlugin {
|
||||
);
|
||||
|
||||
ImmutableList.Builder<String> genericCropsBuilder = ImmutableList.builder();
|
||||
genericCropsBuilder.add("cotton", "rice", "tea", "coffee", "candleberry");
|
||||
genericCropsBuilder.add("cotton", "rice", "tealeaf", "coffeebean", "candleberry");
|
||||
genericCropsBuilder.addAll(herbs);
|
||||
genericCropsBuilder.addAll(spices);
|
||||
|
||||
@@ -281,7 +281,14 @@ public class PluginHarvestCraft extends ForestryPlugin {
|
||||
}
|
||||
|
||||
for (String cropName : genericCrops) {
|
||||
ItemStack genericCropSeed = GameRegistry.findItemStack(HC, cropName + "seedItem", 1);
|
||||
String seedName = cropName;
|
||||
// Pam's Tea and Coffee have inconsistent Crop/Seed names, unlike other Pam's crops
|
||||
if (seedName.equals("tealeaf")) {
|
||||
seedName = "tea";
|
||||
} else if (seedName.equals("coffeebean")) {
|
||||
seedName = "coffee";
|
||||
}
|
||||
ItemStack genericCropSeed = GameRegistry.findItemStack(HC, seedName + "seedItem", 1);
|
||||
Block genericCropBlock = GameRegistry.findBlock(HC, "pam" + cropName + "Crop");
|
||||
if (genericCropSeed != null) {
|
||||
RecipeManagers.squeezerManager
|
||||
|
||||
@@ -37,6 +37,8 @@ public class ItemRegistryStorage extends ItemRegistry {
|
||||
public final Item adventurerBackpackT2;
|
||||
public final Item builderBackpack;
|
||||
public final Item builderBackpackT2;
|
||||
public final Item coinBackpack;
|
||||
public final Item coinBackpackT2;
|
||||
|
||||
public ItemRegistryStorage() {
|
||||
// CRATE
|
||||
@@ -113,5 +115,13 @@ public class ItemRegistryStorage extends ItemRegistry {
|
||||
builderBackpackT2 = registerItem(
|
||||
BackpackManager.backpackInterface.addBackpack(definition, EnumBackpackType.T2),
|
||||
"builderBagT2");
|
||||
|
||||
definition = BackpackManager.definitions.get("coin");
|
||||
coinBackpack = registerItem(
|
||||
BackpackManager.backpackInterface.addBackpack(definition, EnumBackpackType.T1),
|
||||
"coinBag");
|
||||
coinBackpackT2 = registerItem(
|
||||
BackpackManager.backpackInterface.addBackpack(definition, EnumBackpackType.T2),
|
||||
"coinBagT2");
|
||||
}
|
||||
}
|
||||
@@ -470,6 +470,9 @@ item.for.adventurerBagT2.name=Adventurer's Woven Backpack
|
||||
item.for.ambrosia.name=Ambrosia
|
||||
item.for.apatite.name=Apatite
|
||||
|
||||
item.for.coinBag.name=Coiner's Backpack
|
||||
item.for.coinBagT2.name=Coiner's Woven Backpack
|
||||
|
||||
item.for.apiaristBag.name=Apiarist's Backpack
|
||||
item.for.apiaristBoots.name=Apiarist's Shoes
|
||||
item.for.apiaristChest.name=Apiarist's Shirt
|
||||
@@ -1684,6 +1687,8 @@ for.config.butterfly.entities.maximum=Butterfly Maximum
|
||||
for.config.butterfly.entities.maximum.comment=New butterflies will stay in item form and will not take flight once this limit is reached.
|
||||
for.config.butterfly.entities.pollination=Butterfly Pollination
|
||||
for.config.butterfly.entities.pollination.comment=Allow butterflies to pollinate leaves.
|
||||
for.config.butterfly.entities.disable.leaf.spawns=Disable Butterfly Leaf Spawns
|
||||
for.config.butterfly.entities.disable.leaf.spawns.comment=Prevent random butterflies from autonomously spawning from Forestry leaves.
|
||||
|
||||
for.config.backpacks.item.stacks.format=Add itemStacks for the %s's backpack here in the format 'modid:name:meta'. For wildcard metadata the format is 'modid:name'.
|
||||
for.config.backpacks.ore.dict.format=Add ore dictionary names for the %s's backpack here in the format 'oreDictName'.
|
||||
|
||||
Reference in new issue
Block a user