Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# v1.3.1
- Fix Tree Farm logic [#15](https://github.com/GTModpackTeam/GTBeesMatrix/pull/15)

* * *

# v1.3.0
- Multifarm Gregification [#12](https://github.com/GTModpackTeam/GTBeesMatrix/pull/12)
- Add Industrial Apiary [#13](https://github.com/GTModpackTeam/GTBeesMatrix/pull/13)
Expand Down
1 change: 0 additions & 1 deletion buildscript.properties
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ minecraftVersion = 1.12.2
debug_all = false
debug_gendustry = false
debug_binnies = false
debug_eio = false
debug_gtfo = false

# Select a username for testing your mod with breakpoints. You may leave this empty for a random username each time you
Expand Down
16 changes: 0 additions & 16 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -79,22 +79,6 @@ dependencies {
runtimeOnly rfg.deobf("curse.maven:binnies-mods-patched-899182:7731146") // Binnie's Mods Patched 2.5.1.213
}

// Debug EnderIO
compileOnly "info.loenwind.autoconfig:AutoConfig:1.12.2-1.0.2" // AutoConfig 1.0.2
compileOnly "info.loenwind.autosave:AutoSave:1.12.2-1.0.11" // AutoSave 1.0.11
compileOnly rfg.deobf("curse.maven:endercore-231868:4671384") // EnderCore 0.5.78
compileOnly rfg.deobf("curse.maven:ender-io-base-297193:4674231") // EIO 5.3.72
compileOnly rfg.deobf("curse.maven:ender-io-endergy-304346:4674241") // EIOE 5.3.72
compileOnly rfg.deobf("curse.maven:ender-io-machines-297196:4674232") // EIOM 5.3.72
if (project.debug_all.toBoolean() || project.debug_eio.toBoolean()) {
runtimeOnly "info.loenwind.autoconfig:AutoConfig:1.12.2-1.0.2" // AutoConfig 1.0.2
runtimeOnly "info.loenwind.autosave:AutoSave:1.12.2-1.0.11" // AutoSave 1.0.11
runtimeOnly rfg.deobf("curse.maven:endercore-231868:4671384") // EnderCore 0.5.78
runtimeOnly rfg.deobf("curse.maven:ender-io-base-297193:4674231") // EIO 5.3.72
runtimeOnly rfg.deobf("curse.maven:ender-io-endergy-304346:4674241") // EIOE 5.3.72
runtimeOnly rfg.deobf("curse.maven:ender-io-machines-297196:4674232") // EIOM 5.3.72
}

// Debug GTFO: 1.12.5
compileOnly rfg.deobf("curse.maven:gregtech-food-option-477021:6472136")
if (project.debug_all.toBoolean() || project.debug_gtfo.toBoolean()) {
Expand Down
Binary file removed libs/EnderCore-1.12.2-0.5.78-core.jar
Binary file not shown.
4 changes: 0 additions & 4 deletions repositories.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
// Add any additional repositories for your dependencies here

repositories {
maven { // Autoconfig and Autosave
name 'Mod Maven'
url 'https://modmaven.dev'
}
maven {
name 'GTCEu Maven'
url 'https://maven.gtceu.com'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.github.gtexpert.gtbm.integration.forestry.farming;

import net.minecraft.item.ItemStack;

import gregtech.common.blocks.MetaBlocks;

import forestry.api.farming.IFarmProperties;
import forestry.farming.logic.FarmLogicArboreal;

public class FarmLogicCEu extends FarmLogicArboreal {

public FarmLogicCEu(IFarmProperties properties, boolean isManual) {
super(properties, isManual);
}

@Override
public String getUnlocalizedName() {
return "gtbm.farm.ceu";
}

@Override
public ItemStack getIconItemStack() {
return new ItemStack(MetaBlocks.RUBBER_SAPLING);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package com.github.gtexpert.gtbm.integration.forestry.farming;

import java.util.Collections;

import javax.annotation.Nullable;

import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

import forestry.api.farming.ICrop;
import forestry.api.farming.IFarmable;
import forestry.api.farming.IFarmableInfo;
import forestry.core.network.packets.PacketFXSignal;
import forestry.core.utils.NetworkUtil;
import forestry.farming.logic.crops.CropDestroy;

public class FarmableGTCEuSapling implements IFarmable {

private final Block saplingBlock;
private final ItemStack germling;
private final ItemStack[] windfall;

public FarmableGTCEuSapling(Block saplingBlock, ItemStack[] windfall) {
this.saplingBlock = saplingBlock;
this.germling = new ItemStack(saplingBlock);
this.windfall = windfall;
}

@Override
public boolean isSaplingAt(World world, BlockPos pos, IBlockState blockState) {
return blockState.getBlock() == saplingBlock;
}

@Nullable
@Override
public ICrop getCropAt(World world, BlockPos pos, IBlockState blockState) {
Block block = blockState.getBlock();
if (!block.isWood(world, pos)) {
return null;
}
return new CropDestroy(world, blockState, pos);
}

@Override
public boolean isGermling(ItemStack itemstack) {
return ItemStack.areItemsEqual(germling, itemstack);
}

@Override
public void addInformation(IFarmableInfo info) {
info.addGermlings(Collections.singletonList(germling));
info.addProducts(windfall);
}

@Override
public boolean isWindfall(ItemStack itemstack) {
for (ItemStack drop : windfall) {
if (drop.isItemEqual(itemstack)) {
return true;
}
}
return false;
}

@Override
public boolean plantSaplingAt(EntityPlayer player, ItemStack germling, World world, BlockPos pos) {
ItemStack originalHeldItem = player.getHeldItem(EnumHand.MAIN_HAND);
try {
ItemStack copy = germling.copy();
player.setHeldItem(EnumHand.MAIN_HAND, copy);
EnumActionResult result = copy.onItemUse(player, world, pos.down(),
EnumHand.MAIN_HAND, EnumFacing.UP, 0, 0, 0);
if (result == EnumActionResult.SUCCESS) {
PacketFXSignal packet = new PacketFXSignal(
PacketFXSignal.SoundFXType.BLOCK_PLACE, pos,
Blocks.SAPLING.getDefaultState());
NetworkUtil.sendNetworkPacket(packet, pos, world);
return true;
}
return false;
} finally {
player.setHeldItem(EnumHand.MAIN_HAND, originalHeldItem);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,29 @@
import gregtech.common.blocks.MetaBlocks;
import gregtech.common.items.MetaItems;

import com.github.gtexpert.gtbm.integration.forestry.farming.FarmLogicCEu;
import com.github.gtexpert.gtbm.integration.forestry.farming.FarmableGTCEuSapling;
import com.github.gtexpert.gtbm.integration.forestry.util.ForestryFarmHelper;

import forestry.api.core.ForestryAPI;
import forestry.api.farming.IFarmProperties;
import forestry.api.farming.IFarmRegistry;
import forestry.farming.logic.farmables.FarmableSapling;
import forestry.core.items.EnumElectronTube;

public class FFMFarmingLoader {

public static void init() {
IFarmRegistry farmRegistry = ForestryAPI.farmRegistry;

// GregTech Rubber Sapling
farmRegistry.registerFarmables("farmArboreal",
new FarmableSapling(new ItemStack(MetaBlocks.RUBBER_SAPLING), new ItemStack[0]));
// GregTech Rubber tree farm
IFarmProperties ceuFarm = ForestryFarmHelper.registerFarmType("farmCEu", FarmLogicCEu::new,
EnumElectronTube.TIN);

String rubberId = "farmCEu.rubber";
ceuFarm.registerFarmables(rubberId);
farmRegistry.registerFarmables(rubberId,
new FarmableGTCEuSapling(MetaBlocks.RUBBER_SAPLING,
new ItemStack[] { MetaItems.STICKY_RESIN.getStackForm() }));

// GregTech Fertilizer
farmRegistry.registerFertilizer(MetaItems.FERTILIZER.getStackForm(), 500);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.github.gtexpert.gtbm.integration.forestry.util;

import java.util.function.BiFunction;

import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;

import forestry.api.circuits.ChipsetManager;
import forestry.api.circuits.ICircuitLayout;
import forestry.api.core.ForestryAPI;
import forestry.api.farming.IFarmLogic;
import forestry.api.farming.IFarmProperties;
import forestry.core.ModuleCore;
import forestry.core.items.EnumElectronTube;
import forestry.farming.circuits.CircuitFarmLogic;

public class ForestryFarmHelper {

public static IFarmProperties registerFarmType(String farmId,
BiFunction<IFarmProperties, Boolean, IFarmLogic> logicFactory,
EnumElectronTube tube) {
IFarmProperties farm = ForestryAPI.farmRegistry.registerLogic(farmId, logicFactory);
farm.registerSoil(new ItemStack(Blocks.DIRT), ModuleCore.getBlocks().humus.getDefaultState());

CircuitFarmLogic managed = new CircuitFarmLogic("managed." + farmId, farm, false);
CircuitFarmLogic manual = new CircuitFarmLogic("manual." + farmId, farm, true);

ICircuitLayout layoutManaged = ChipsetManager.circuitRegistry.getLayout("forestry.farms.managed");
ICircuitLayout layoutManual = ChipsetManager.circuitRegistry.getLayout("forestry.farms.manual");
ItemStack tubeStack = ModuleCore.getItems().tubes.get(tube, 1);

ChipsetManager.solderManager.addRecipe(layoutManaged, tubeStack, managed);
ChipsetManager.solderManager.addRecipe(layoutManual, tubeStack, manual);

return farm;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.github.gtexpert.gtbm.integration.gtfo.farming;

import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;

import forestry.api.farming.IFarmProperties;
import forestry.farming.logic.FarmLogicArboreal;

public class FarmLogicGTFO extends FarmLogicArboreal {

public FarmLogicGTFO(IFarmProperties properties, boolean isManual) {
super(properties, isManual);
}

@Override
public String getUnlocalizedName() {
return "gtbm.farm.gtfo";
}

@Override
public ItemStack getIconItemStack() {
return new ItemStack(Blocks.SAPLING);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package com.github.gtexpert.gtbm.integration.gtfo.farming;

import java.util.Collections;

import javax.annotation.Nullable;

import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

import forestry.api.farming.ICrop;
import forestry.api.farming.IFarmable;
import forestry.api.farming.IFarmableInfo;
import forestry.core.network.packets.PacketFXSignal;
import forestry.core.utils.NetworkUtil;
import forestry.farming.logic.crops.CropDestroy;

public class FarmableGTFOSapling implements IFarmable {

private final Block saplingBlock;
private final ItemStack germling;
private final ItemStack[] windfall;

public FarmableGTFOSapling(Block saplingBlock, int itemDamage, ItemStack[] windfall) {
this.saplingBlock = saplingBlock;
this.germling = new ItemStack(saplingBlock, 1, itemDamage);
this.windfall = windfall;
}

@Override
public boolean isSaplingAt(World world, BlockPos pos, IBlockState blockState) {
return blockState.getBlock() == saplingBlock;
}

@Nullable
@Override
public ICrop getCropAt(World world, BlockPos pos, IBlockState blockState) {
Block block = blockState.getBlock();
if (!block.isWood(world, pos)) {
return null;
}
return new CropDestroy(world, blockState, pos);
}

@Override
public boolean isGermling(ItemStack itemstack) {
return ItemStack.areItemsEqual(germling, itemstack);
}

@Override
public void addInformation(IFarmableInfo info) {
info.addGermlings(Collections.singletonList(germling));
info.addProducts(windfall);
}

@Override
public boolean isWindfall(ItemStack itemstack) {
for (ItemStack drop : windfall) {
if (drop.isItemEqual(itemstack)) {
return true;
}
}
return false;
}

@Override
public boolean plantSaplingAt(EntityPlayer player, ItemStack germling, World world, BlockPos pos) {
ItemStack originalHeldItem = player.getHeldItem(EnumHand.MAIN_HAND);
try {
ItemStack copy = germling.copy();
player.setHeldItem(EnumHand.MAIN_HAND, copy);
EnumActionResult result = copy.onItemUse(player, world, pos.down(),
EnumHand.MAIN_HAND, EnumFacing.UP, 0, 0, 0);
if (result == EnumActionResult.SUCCESS) {
PacketFXSignal packet = new PacketFXSignal(
PacketFXSignal.SoundFXType.BLOCK_PLACE, pos,
Blocks.SAPLING.getDefaultState());
NetworkUtil.sendNetworkPacket(packet, pos, world);
return true;
}
return false;
} finally {
player.setHeldItem(EnumHand.MAIN_HAND, originalHeldItem);
}
}
}
Loading