Skip to content
This repository was archived by the owner on Jan 3, 2020. It is now read-only.

Commit 9e9e2ca

Browse files
committed
arch refine
1 parent b9283d5 commit 9e9e2ca

File tree

6 files changed

+163
-156
lines changed

6 files changed

+163
-156
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ archivesBaseName = "AutoHarvest-mc1.9-forge1891"
2424
minecraft {
2525
version = "1.9-12.16.1.1891"
2626
runDir = "../gameDir"
27-
mappings = "snapshot_20160312"
27+
mappings = "snapshot_20160506"
2828
}
2929

3030
dependencies { }

src/main/java/org/devinprogress/autoharvest/AutoHarvest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
@SideOnly(Side.CLIENT)
1414
public class AutoHarvest {
1515
public enum HarvestMode {
16-
SMART, // Harvest then re-plant
16+
// SMART, // Harvest then re-plant
1717
EAGER, // Harvest only
1818
PLANT, // Plant only
1919
SEED, // Harvest seeds & flowers
@@ -38,7 +38,7 @@ public void preInit(FMLPreInitializationEvent event) {
3838

3939
private void setEnabled() {
4040
if (listener == null) {
41-
listener = new TickListener(mode);
41+
listener = new TickListener(mode, 2, FMLClientHandler.instance().getClientPlayerEntity());
4242
MinecraftForge.EVENT_BUS.register(listener);
4343
}
4444
}
Lines changed: 69 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,93 +1,113 @@
11
package org.devinprogress.autoharvest;
22

3+
import com.google.common.collect.ArrayListMultimap;
4+
import com.google.common.collect.BiMap;
5+
import com.google.common.collect.HashBiMap;
6+
import com.google.common.collect.Multimap;
37
import net.minecraft.block.Block;
8+
import net.minecraft.block.BlockCrops;
49
import net.minecraft.block.state.IBlockState;
10+
import net.minecraft.entity.passive.*;
511
import net.minecraft.init.Blocks;
612
import net.minecraft.init.Items;
13+
import net.minecraft.item.EnumDyeColor;
714
import net.minecraft.item.Item;
815
import net.minecraft.item.ItemStack;
916
import net.minecraft.util.math.BlockPos;
1017
import net.minecraft.world.World;
1118

1219
import java.util.HashMap;
1320
import java.util.HashSet;
14-
import java.util.Map;
1521
import java.util.Set;
1622

1723
public class CropManager {
18-
public static final Block REED_BLOCK = Block.getBlockFromName("reeds");
19-
public static final Block FARMLAND = Blocks.farmland;
20-
public static final Block NETHER_WART = Blocks.nether_wart;
24+
public static final Block REED_BLOCK = Blocks.REEDS;
25+
public static final Block NETHER_WART = Blocks.NETHER_WART;
2126

2227

2328
public static final Set<Block> WEED_BLOCKS = new HashSet<Block>() {{
24-
add(Block.getBlockFromName("sapling"));
25-
add(Block.getBlockFromName("tallgrass"));
26-
add(Block.getBlockFromName("deadbush"));
27-
add(Block.getBlockFromName("yellow_flower"));
28-
add(Block.getBlockFromName("red_flower"));
29-
add(Block.getBlockFromName("brown_mushroom"));
30-
add(Block.getBlockFromName("red_mushroom"));
31-
add(Block.getBlockFromName("double_plant"));
29+
add(Blocks.SAPLING);
30+
add(Blocks.TALLGRASS);
31+
add(Blocks.DEADBUSH);
32+
add(Blocks.YELLOW_FLOWER);
33+
add(Blocks.RED_FLOWER);
34+
add(Blocks.BROWN_MUSHROOM);
35+
add(Blocks.RED_MUSHROOM);
36+
add(Blocks.DOUBLE_PLANT);
3237
}};
3338

34-
public static final Map<Block, Item> CROP_BLOCKS = new HashMap<Block, Item>() {{
35-
put(Block.getBlockFromName("wheat"), Item.getByNameOrId("wheat_seeds"));
36-
put(Blocks.potatoes, Items.potato);
37-
put(Blocks.carrots, Items.carrot);
38-
}};
39+
public static final BiMap<Block, Item> SEED_MAP = HashBiMap.create(
40+
new HashMap<Block, Item>() {{
41+
put(Blocks.WHEAT, Items.WHEAT_SEEDS);
42+
put(Blocks.POTATOES, Items.POTATO);
43+
put(Blocks.CARROTS, Items.CARROT);
44+
put(Blocks.BEETROOTS, Items.BEETROOT_SEEDS);
45+
put(Blocks.NETHER_WART, Items.NETHER_WART);
46+
put(Blocks.MELON_STEM, Items.MELON_SEEDS);
47+
put(Blocks.PUMPKIN_STEM, Items.PUMPKIN_SEEDS);
48+
put(Blocks.REEDS, Items.REEDS);
49+
}});
3950

40-
public static final Set<Item> SEED_ITEMS = new HashSet<Item>() {{
41-
add(Items.wheat_seeds);
42-
add(Items.potato);
43-
add(Items.carrot);
44-
add(Items.nether_wart);
45-
add(Items.reeds);
46-
}};
51+
public static final Multimap<Item, Class<? extends EntityAnimal>> FEED_MAP;
52+
53+
static {
54+
FEED_MAP = ArrayListMultimap.create();
55+
FEED_MAP.put(Items.GOLDEN_CARROT, EntityHorse.class);
56+
57+
FEED_MAP.put(Items.WHEAT, EntitySheep.class);
58+
FEED_MAP.put(Items.WHEAT, EntityCow.class);
59+
FEED_MAP.put(Items.WHEAT, EntityMooshroom.class);
60+
61+
FEED_MAP.put(Items.CARROT, EntityPig.class);
62+
FEED_MAP.put(Items.POTATO, EntityPig.class);
63+
FEED_MAP.put(Items.BEETROOT, EntityPig.class);
64+
65+
FEED_MAP.put(Items.PUMPKIN_SEEDS, EntityChicken.class);
66+
FEED_MAP.put(Items.MELON_SEEDS, EntityChicken.class);
67+
FEED_MAP.put(Items.WHEAT_SEEDS, EntityChicken.class);
68+
FEED_MAP.put(Items.BEETROOT_SEEDS, EntityChicken.class);
69+
70+
FEED_MAP.put(Items.ROTTEN_FLESH, EntityWolf.class);
71+
72+
FEED_MAP.put(Items.FISH, EntityOcelot.class);
73+
FEED_MAP.put(Item.getItemById(37), EntityRabbit.class); // Dandelion
74+
FEED_MAP.put(Items.CARROT, EntityRabbit.class);
75+
}
4776

4877
public static boolean isWeedBlock(World w, BlockPos pos) {
4978
Block b = w.getBlockState(pos).getBlock();
5079
return WEED_BLOCKS.contains(b);
5180
}
5281

5382
public static boolean isCropMature(World w, BlockPos pos, IBlockState stat, Block b) {
54-
if (CROP_BLOCKS.containsKey(b)) {
55-
return b.getMetaFromState(stat) >= 7;
83+
if (b instanceof BlockCrops) {
84+
return ((BlockCrops) b).isMaxAge(stat);
5685
} else if (b == NETHER_WART) {
57-
return b.getMetaFromState(stat) >= 3;
86+
return b.getMetaFromState(stat) >= 7;
5887
} else if (b == REED_BLOCK) {
59-
if (w.getBlockState(pos.down()).getBlock() != REED_BLOCK
60-
&& w.getBlockState(pos.up()).getBlock() == REED_BLOCK) {
61-
return true;
62-
} else {
63-
return false;
64-
}
88+
Block blockDown = w.getBlockState(pos.down()).getBlock();
89+
Block blockDown2 = w.getBlockState(pos.down(2)).getBlock();
90+
return blockDown == REED_BLOCK && blockDown2 != REED_BLOCK;
6591
}
6692
return false;
6793
}
6894

6995
public static Item getSeedItem(Block b) {
70-
if (CROP_BLOCKS.containsKey(b)) {
71-
return CROP_BLOCKS.get(b);
72-
} else if (b == NETHER_WART) {
73-
return Items.nether_wart;
74-
} else {
75-
return null;
76-
}
96+
return SEED_MAP.get(b);
7797
}
7898

7999
public static boolean isSeed(ItemStack stack) {
80100
if (stack == null || stack.stackSize <= 0) return false;
81-
return SEED_ITEMS.contains(stack.getItem());
101+
return SEED_MAP.containsValue(stack.getItem());
82102
}
83103

84-
public static boolean canPlantOn(Item m, World w, BlockPos p, Block b) {
85-
if (m == Items.nether_wart) {
86-
return b == Blocks.soul_sand;
87-
} else if (m == Items.reeds) {
88-
return b == Blocks.sand || b == Blocks.grass || b == Blocks.dirt;
89-
} else {
90-
return b == FARMLAND;
91-
}
104+
public static boolean isCocoa(ItemStack stack) {
105+
if (stack == null || stack.stackSize <= 0) return false;
106+
return stack.getItem() == Items.DYE && stack.getItemDamage() == EnumDyeColor.BROWN.getDyeDamage();
107+
}
108+
109+
public static boolean canPlantOn(Item m, World w, BlockPos p) {
110+
if (!SEED_MAP.containsValue(m)) return false;
111+
return SEED_MAP.inverse().get(m).canPlaceBlockAt(w, p);
92112
}
93113
}

0 commit comments

Comments
 (0)