Skip to content

Commit ed56508

Browse files
authored
Fix Tree Farm logic (#15)
1 parent a765724 commit ed56508

14 files changed

Lines changed: 338 additions & 32 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# v1.3.1
2+
- Fix Tree Farm logic [#15](https://github.com/GTModpackTeam/GTBeesMatrix/pull/15)
3+
4+
* * *
5+
16
# v1.3.0
27
- Multifarm Gregification [#12](https://github.com/GTModpackTeam/GTBeesMatrix/pull/12)
38
- Add Industrial Apiary [#13](https://github.com/GTModpackTeam/GTBeesMatrix/pull/13)

buildscript.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ minecraftVersion = 1.12.2
2424
debug_all = false
2525
debug_gendustry = false
2626
debug_binnies = false
27-
debug_eio = false
2827
debug_gtfo = false
2928

3029
# Select a username for testing your mod with breakpoints. You may leave this empty for a random username each time you

dependencies.gradle

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,22 +79,6 @@ dependencies {
7979
runtimeOnly rfg.deobf("curse.maven:binnies-mods-patched-899182:7731146") // Binnie's Mods Patched 2.5.1.213
8080
}
8181

82-
// Debug EnderIO
83-
compileOnly "info.loenwind.autoconfig:AutoConfig:1.12.2-1.0.2" // AutoConfig 1.0.2
84-
compileOnly "info.loenwind.autosave:AutoSave:1.12.2-1.0.11" // AutoSave 1.0.11
85-
compileOnly rfg.deobf("curse.maven:endercore-231868:4671384") // EnderCore 0.5.78
86-
compileOnly rfg.deobf("curse.maven:ender-io-base-297193:4674231") // EIO 5.3.72
87-
compileOnly rfg.deobf("curse.maven:ender-io-endergy-304346:4674241") // EIOE 5.3.72
88-
compileOnly rfg.deobf("curse.maven:ender-io-machines-297196:4674232") // EIOM 5.3.72
89-
if (project.debug_all.toBoolean() || project.debug_eio.toBoolean()) {
90-
runtimeOnly "info.loenwind.autoconfig:AutoConfig:1.12.2-1.0.2" // AutoConfig 1.0.2
91-
runtimeOnly "info.loenwind.autosave:AutoSave:1.12.2-1.0.11" // AutoSave 1.0.11
92-
runtimeOnly rfg.deobf("curse.maven:endercore-231868:4671384") // EnderCore 0.5.78
93-
runtimeOnly rfg.deobf("curse.maven:ender-io-base-297193:4674231") // EIO 5.3.72
94-
runtimeOnly rfg.deobf("curse.maven:ender-io-endergy-304346:4674241") // EIOE 5.3.72
95-
runtimeOnly rfg.deobf("curse.maven:ender-io-machines-297196:4674232") // EIOM 5.3.72
96-
}
97-
9882
// Debug GTFO: 1.12.5
9983
compileOnly rfg.deobf("curse.maven:gregtech-food-option-477021:6472136")
10084
if (project.debug_all.toBoolean() || project.debug_gtfo.toBoolean()) {
-38.6 KB
Binary file not shown.

repositories.gradle

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
// Add any additional repositories for your dependencies here
22

33
repositories {
4-
maven { // Autoconfig and Autosave
5-
name 'Mod Maven'
6-
url 'https://modmaven.dev'
7-
}
84
maven {
95
name 'GTCEu Maven'
106
url 'https://maven.gtceu.com'
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.github.gtexpert.gtbm.integration.forestry.farming;
2+
3+
import net.minecraft.item.ItemStack;
4+
5+
import gregtech.common.blocks.MetaBlocks;
6+
7+
import forestry.api.farming.IFarmProperties;
8+
import forestry.farming.logic.FarmLogicArboreal;
9+
10+
public class FarmLogicCEu extends FarmLogicArboreal {
11+
12+
public FarmLogicCEu(IFarmProperties properties, boolean isManual) {
13+
super(properties, isManual);
14+
}
15+
16+
@Override
17+
public String getUnlocalizedName() {
18+
return "gtbm.farm.ceu";
19+
}
20+
21+
@Override
22+
public ItemStack getIconItemStack() {
23+
return new ItemStack(MetaBlocks.RUBBER_SAPLING);
24+
}
25+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.github.gtexpert.gtbm.integration.forestry.farming;
2+
3+
import java.util.Collections;
4+
5+
import javax.annotation.Nullable;
6+
7+
import net.minecraft.block.Block;
8+
import net.minecraft.block.state.IBlockState;
9+
import net.minecraft.entity.player.EntityPlayer;
10+
import net.minecraft.init.Blocks;
11+
import net.minecraft.item.ItemStack;
12+
import net.minecraft.util.EnumActionResult;
13+
import net.minecraft.util.EnumFacing;
14+
import net.minecraft.util.EnumHand;
15+
import net.minecraft.util.math.BlockPos;
16+
import net.minecraft.world.World;
17+
18+
import forestry.api.farming.ICrop;
19+
import forestry.api.farming.IFarmable;
20+
import forestry.api.farming.IFarmableInfo;
21+
import forestry.core.network.packets.PacketFXSignal;
22+
import forestry.core.utils.NetworkUtil;
23+
import forestry.farming.logic.crops.CropDestroy;
24+
25+
public class FarmableGTCEuSapling implements IFarmable {
26+
27+
private final Block saplingBlock;
28+
private final ItemStack germling;
29+
private final ItemStack[] windfall;
30+
31+
public FarmableGTCEuSapling(Block saplingBlock, ItemStack[] windfall) {
32+
this.saplingBlock = saplingBlock;
33+
this.germling = new ItemStack(saplingBlock);
34+
this.windfall = windfall;
35+
}
36+
37+
@Override
38+
public boolean isSaplingAt(World world, BlockPos pos, IBlockState blockState) {
39+
return blockState.getBlock() == saplingBlock;
40+
}
41+
42+
@Nullable
43+
@Override
44+
public ICrop getCropAt(World world, BlockPos pos, IBlockState blockState) {
45+
Block block = blockState.getBlock();
46+
if (!block.isWood(world, pos)) {
47+
return null;
48+
}
49+
return new CropDestroy(world, blockState, pos);
50+
}
51+
52+
@Override
53+
public boolean isGermling(ItemStack itemstack) {
54+
return ItemStack.areItemsEqual(germling, itemstack);
55+
}
56+
57+
@Override
58+
public void addInformation(IFarmableInfo info) {
59+
info.addGermlings(Collections.singletonList(germling));
60+
info.addProducts(windfall);
61+
}
62+
63+
@Override
64+
public boolean isWindfall(ItemStack itemstack) {
65+
for (ItemStack drop : windfall) {
66+
if (drop.isItemEqual(itemstack)) {
67+
return true;
68+
}
69+
}
70+
return false;
71+
}
72+
73+
@Override
74+
public boolean plantSaplingAt(EntityPlayer player, ItemStack germling, World world, BlockPos pos) {
75+
ItemStack originalHeldItem = player.getHeldItem(EnumHand.MAIN_HAND);
76+
try {
77+
ItemStack copy = germling.copy();
78+
player.setHeldItem(EnumHand.MAIN_HAND, copy);
79+
EnumActionResult result = copy.onItemUse(player, world, pos.down(),
80+
EnumHand.MAIN_HAND, EnumFacing.UP, 0, 0, 0);
81+
if (result == EnumActionResult.SUCCESS) {
82+
PacketFXSignal packet = new PacketFXSignal(
83+
PacketFXSignal.SoundFXType.BLOCK_PLACE, pos,
84+
Blocks.SAPLING.getDefaultState());
85+
NetworkUtil.sendNetworkPacket(packet, pos, world);
86+
return true;
87+
}
88+
return false;
89+
} finally {
90+
player.setHeldItem(EnumHand.MAIN_HAND, originalHeldItem);
91+
}
92+
}
93+
}

src/main/java/com/github/gtexpert/gtbm/integration/forestry/loaders/FFMFarmingLoader.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,29 @@
55
import gregtech.common.blocks.MetaBlocks;
66
import gregtech.common.items.MetaItems;
77

8+
import com.github.gtexpert.gtbm.integration.forestry.farming.FarmLogicCEu;
9+
import com.github.gtexpert.gtbm.integration.forestry.farming.FarmableGTCEuSapling;
10+
import com.github.gtexpert.gtbm.integration.forestry.util.ForestryFarmHelper;
11+
812
import forestry.api.core.ForestryAPI;
13+
import forestry.api.farming.IFarmProperties;
914
import forestry.api.farming.IFarmRegistry;
10-
import forestry.farming.logic.farmables.FarmableSapling;
15+
import forestry.core.items.EnumElectronTube;
1116

1217
public class FFMFarmingLoader {
1318

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

17-
// GregTech Rubber Sapling
18-
farmRegistry.registerFarmables("farmArboreal",
19-
new FarmableSapling(new ItemStack(MetaBlocks.RUBBER_SAPLING), new ItemStack[0]));
22+
// GregTech Rubber tree farm
23+
IFarmProperties ceuFarm = ForestryFarmHelper.registerFarmType("farmCEu", FarmLogicCEu::new,
24+
EnumElectronTube.TIN);
25+
26+
String rubberId = "farmCEu.rubber";
27+
ceuFarm.registerFarmables(rubberId);
28+
farmRegistry.registerFarmables(rubberId,
29+
new FarmableGTCEuSapling(MetaBlocks.RUBBER_SAPLING,
30+
new ItemStack[] { MetaItems.STICKY_RESIN.getStackForm() }));
2031

2132
// GregTech Fertilizer
2233
farmRegistry.registerFertilizer(MetaItems.FERTILIZER.getStackForm(), 500);
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.github.gtexpert.gtbm.integration.forestry.util;
2+
3+
import java.util.function.BiFunction;
4+
5+
import net.minecraft.init.Blocks;
6+
import net.minecraft.item.ItemStack;
7+
8+
import forestry.api.circuits.ChipsetManager;
9+
import forestry.api.circuits.ICircuitLayout;
10+
import forestry.api.core.ForestryAPI;
11+
import forestry.api.farming.IFarmLogic;
12+
import forestry.api.farming.IFarmProperties;
13+
import forestry.core.ModuleCore;
14+
import forestry.core.items.EnumElectronTube;
15+
import forestry.farming.circuits.CircuitFarmLogic;
16+
17+
public class ForestryFarmHelper {
18+
19+
public static IFarmProperties registerFarmType(String farmId,
20+
BiFunction<IFarmProperties, Boolean, IFarmLogic> logicFactory,
21+
EnumElectronTube tube) {
22+
IFarmProperties farm = ForestryAPI.farmRegistry.registerLogic(farmId, logicFactory);
23+
farm.registerSoil(new ItemStack(Blocks.DIRT), ModuleCore.getBlocks().humus.getDefaultState());
24+
25+
CircuitFarmLogic managed = new CircuitFarmLogic("managed." + farmId, farm, false);
26+
CircuitFarmLogic manual = new CircuitFarmLogic("manual." + farmId, farm, true);
27+
28+
ICircuitLayout layoutManaged = ChipsetManager.circuitRegistry.getLayout("forestry.farms.managed");
29+
ICircuitLayout layoutManual = ChipsetManager.circuitRegistry.getLayout("forestry.farms.manual");
30+
ItemStack tubeStack = ModuleCore.getItems().tubes.get(tube, 1);
31+
32+
ChipsetManager.solderManager.addRecipe(layoutManaged, tubeStack, managed);
33+
ChipsetManager.solderManager.addRecipe(layoutManual, tubeStack, manual);
34+
35+
return farm;
36+
}
37+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.github.gtexpert.gtbm.integration.gtfo.farming;
2+
3+
import net.minecraft.init.Blocks;
4+
import net.minecraft.item.ItemStack;
5+
6+
import forestry.api.farming.IFarmProperties;
7+
import forestry.farming.logic.FarmLogicArboreal;
8+
9+
public class FarmLogicGTFO extends FarmLogicArboreal {
10+
11+
public FarmLogicGTFO(IFarmProperties properties, boolean isManual) {
12+
super(properties, isManual);
13+
}
14+
15+
@Override
16+
public String getUnlocalizedName() {
17+
return "gtbm.farm.gtfo";
18+
}
19+
20+
@Override
21+
public ItemStack getIconItemStack() {
22+
return new ItemStack(Blocks.SAPLING);
23+
}
24+
}

0 commit comments

Comments
 (0)