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

Commit efb22eb

Browse files
committed
1.8
1 parent dcfd599 commit efb22eb

File tree

3 files changed

+71
-171
lines changed

3 files changed

+71
-171
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
*
2+
!build.gradle
3+
!.gitignore
4+
!src
5+
!LICENSE
6+
!README

build.gradle

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
11
buildscript {
22
repositories {
3-
mavenCentral()
3+
jcenter()
44
maven {
55
name = "forge"
66
url = "http://files.minecraftforge.net/maven"
77
}
8-
maven {
9-
name = "sonatype"
10-
url = "https://oss.sonatype.org/content/repositories/snapshots/"
11-
}
128
}
139
dependencies {
14-
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
10+
classpath 'net.minecraftforge.gradle:ForgeGradle:2.0-SNAPSHOT'
1511
}
1612
}
13+
apply plugin: 'net.minecraftforge.gradle.forge'
1714

18-
apply plugin: 'forge'
19-
20-
version = "1.0"
15+
version = "0.2-dev"
2116
group= "org.devinprogress.autoharvest"
22-
archivesBaseName = "AutoHarvestMod"
17+
archivesBaseName = "AutoHarvest-1.8"
2318

2419
minecraft {
25-
version = "1.7.2-10.12.2.1121"
26-
assetDir = "eclipse/assets"
20+
version = "1.8-11.14.4.1563"
21+
runDir = "../gameDir"
22+
mappings = "stable_18"
2723
}
2824

25+
dependencies { }
26+
2927
processResources
3028
{
3129
inputs.property "version", project.version
Lines changed: 55 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -1,186 +1,82 @@
11
package org.devinprogress.autoharvest;
22

3-
import cpw.mods.fml.client.FMLClientHandler;
4-
import cpw.mods.fml.client.registry.ClientRegistry;
5-
import cpw.mods.fml.common.FMLCommonHandler;
6-
import cpw.mods.fml.common.Mod;
7-
import cpw.mods.fml.common.event.FMLInitializationEvent;
8-
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
9-
import cpw.mods.fml.common.gameevent.InputEvent;
10-
import cpw.mods.fml.common.gameevent.TickEvent;
11-
import cpw.mods.fml.relauncher.Side;
12-
import net.minecraft.block.*;
13-
import net.minecraft.client.Minecraft;
14-
import net.minecraft.client.settings.KeyBinding;
15-
import net.minecraft.entity.player.EntityPlayer;
16-
import net.minecraft.init.Items;
17-
import net.minecraft.item.Item;
18-
import net.minecraft.item.ItemStack;
3+
import net.minecraft.client.resources.I18n;
194
import net.minecraft.util.ChatComponentText;
20-
import net.minecraft.util.Vec3;
21-
import net.minecraft.world.World;
22-
import net.minecraftforge.common.MinecraftForge;
23-
import org.lwjgl.input.Keyboard;
5+
import net.minecraftforge.fml.client.FMLClientHandler;
6+
import net.minecraftforge.fml.common.FMLCommonHandler;
7+
import net.minecraftforge.fml.common.Mod;
8+
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
9+
import net.minecraftforge.fml.relauncher.Side;
10+
import net.minecraftforge.fml.relauncher.SideOnly;
2411

25-
import java.util.*;
26-
27-
/**
28-
* Auto Harvest Mod
29-
* This Mod can help you harvest crops automatically.
30-
* It can also help you clear the ground.
31-
* Works for both SSP & SMP
32-
* This Mod is published under GPLv3
33-
* Use it *AT YOUR OWN RISK*
34-
* RecursiveG
35-
* 2014 Sept. 29th
36-
*
37-
*
38-
*
39-
* Auto Harvest Mod
40-
* Copyright (C) 2014 RecursiveG
41-
*
42-
* This program is free software: you can redistribute it and/or modify
43-
* it under the terms of the GNU General Public License as published by
44-
* the Free Software Foundation, either version 3 of the License, or
45-
* (at your option) any later version.
46-
*
47-
* This program is distributed in the hope that it will be useful,
48-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
49-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
50-
* GNU General Public License for more details.
51-
*
52-
* You should have received a copy of the GNU General Public License
53-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
54-
*/
55-
56-
@Mod(modid="autoharvest", name="Auto Harvest Mod", version="1.0")
12+
@Mod(modid = "autoharvest", name = "Auto Harvest", version = "0.2")
13+
@SideOnly(Side.CLIENT)
5714
public class AutoHarvest {
58-
private boolean enabled=false;
59-
private boolean harvestTick=true;
60-
private KeyBinding toggleKey=new KeyBinding("Toggle Enabled/Disabled", Keyboard.KEY_H,"Auto Harvest Mod");
61-
private static int harvestRange=1;
62-
private Minecraft mc=null;
15+
public enum HarvestMode {
16+
//SMART, // Harvest then re-plant
17+
EAGER, // Harvest only
18+
PLANT, // Plant only
19+
SEED, // Harvest seeds & flowers
20+
FEED, // Feed animals
21+
//ATTACK, // Attack zombies
22+
OFF; // Turn off mod
23+
private static HarvestMode[] vals = values();
6324

64-
private static final Set<Integer> grassBlockIds =new HashSet<Integer>(Arrays.asList(new Integer[]{
65-
6,31,32,37,38,39,40,175
66-
}));
67-
private static final Set<Item> plantableItems=new HashSet<Item>(){{
68-
add(Items.wheat_seeds);
69-
add(Items.carrot);
70-
add(Items.potato);
71-
add(Items.melon_seeds);
72-
add(Items.pumpkin_seeds);
73-
}};
74-
private static final Map<Class<?>,Item> harvestMap=new HashMap<Class<?>,Item>(){{
75-
put(BlockCrops.class,Items.wheat_seeds);
76-
put(BlockCarrot.class,Items.carrot);
77-
put(BlockPotato.class,Items.potato);
78-
put(BlockNetherWart.class,Items.nether_wart);
79-
}};
80-
static final Map<Class<?>,Integer> cropMatureData=new HashMap<Class<?>, Integer>(){{
81-
put(BlockCrops.class,7);
82-
put(BlockCarrot.class,7);
83-
put(BlockPotato.class,7);
84-
put(BlockNetherWart.class,3);
85-
}};
25+
public AutoHarvest.HarvestMode next() {
26+
return vals[(this.ordinal() + 1) % vals.length];
27+
}
28+
}
8629

30+
@Mod.Instance
31+
public static AutoHarvest instance;
32+
private HarvestMode mode = HarvestMode.OFF;
33+
private TickListener listener = null;
8734

8835
@Mod.EventHandler
89-
@SuppressWarnings("unused")
90-
public void load(FMLInitializationEvent event) {
91-
ClientRegistry.registerKeyBinding(toggleKey);
92-
MinecraftForge.EVENT_BUS.register(this);
93-
FMLCommonHandler.instance().bus().register(this);
36+
public void preInit(FMLPreInitializationEvent event) {
37+
FMLCommonHandler.instance().bus().register(new KeyPressListener());
9438
}
9539

96-
private void sendPlayerPrivateMsg(String str){
97-
FMLClientHandler.instance().getClient().thePlayer.addChatMessage(new ChatComponentText(str));
98-
}
99-
100-
@SubscribeEvent
101-
@SuppressWarnings("unused")
102-
public void onToggle(InputEvent.KeyInputEvent e){
103-
if(toggleKey.isPressed()){
104-
if(!enabled){
105-
enabled=true;
106-
mc=FMLClientHandler.instance().getClient();
107-
sendPlayerPrivateMsg("[Auto Harvest] Enabled");
108-
}else{
109-
enabled=false;
110-
sendPlayerPrivateMsg("[Auto Harvest] Disabled");
111-
}
40+
private void setEnabled() {
41+
if (listener == null) {
42+
listener = new TickListener(mode);
43+
FMLCommonHandler.instance().bus().register(listener);
11244
}
11345
}
11446

115-
@SubscribeEvent
116-
public void onInGameTick(TickEvent.PlayerTickEvent e){//one block a tick
117-
if(enabled && e.side==Side.CLIENT && e.player!=null){
118-
if(e.player.inventory.getCurrentItem()==null){
119-
doClearGrass(e.player);
120-
}else{
121-
if(harvestTick)
122-
doHarvest(e.player);
123-
else
124-
doPlant(e.player);
125-
harvestTick=!harvestTick;
126-
}
47+
private void setDisabled() {
48+
if (listener != null) {
49+
listener.self_stop();
50+
listener = null;
12751
}
12852
}
12953

130-
private void doClearGrass(EntityPlayer p){
131-
World w=p.worldObj;
132-
int X=(int)Math.floor(p.posX);
133-
int Y=(int)Math.floor(p.posY-1.45);//the "leg block"
134-
int Z=(int)Math.floor(p.posZ);
135-
for(int deltaY=-1;deltaY<=1;++deltaY)
136-
for(int deltaX=-2;deltaX<=2;++deltaX)
137-
for(int deltaZ=-2;deltaZ<=2;++deltaZ)
138-
if(grassBlockIds.contains(Block.getIdFromBlock(w.getBlock(X+deltaX,Y+deltaY,Z+deltaZ)))){
139-
mc.playerController.onPlayerDamageBlock(X+deltaX,Y+deltaY,Z+deltaZ,1);
140-
return;
141-
}
54+
public HarvestMode toNextMode() {
55+
setDisabled();
56+
mode = mode.next();
57+
if (mode != HarvestMode.OFF) {
58+
setEnabled();
59+
}
60+
return mode;
14261
}
14362

144-
private void doHarvest(EntityPlayer p){
145-
World w=p.worldObj;
146-
int X=(int)Math.floor(p.posX);
147-
int Y=(int)Math.floor(p.posY-1.45);//the "leg block"
148-
int Z=(int)Math.floor(p.posZ);
149-
for(int deltaX=-harvestRange;deltaX<=harvestRange;++deltaX)
150-
for(int deltaZ=-harvestRange;deltaZ<=harvestRange;++deltaZ){
151-
if(canHarvest(w,p,X+deltaX,Y,Z+deltaZ)) {
152-
mc.playerController.onPlayerDamageBlock(X+deltaX,Y,Z+deltaZ,1);
153-
return;
154-
}
155-
}
63+
public void toNextMode(HarvestMode nextMode) {
64+
setDisabled();
65+
mode = nextMode;
66+
if (mode != HarvestMode.OFF) {
67+
setEnabled();
68+
}
15669
}
15770

158-
private void doPlant(EntityPlayer p){
159-
World w=p.worldObj;
160-
int X=(int)Math.floor(p.posX);
161-
int Y=(int)Math.floor(p.posY-2.45);//Block player stand on;
162-
int Z=(int)Math.floor(p.posZ);
163-
for(int deltaX=-harvestRange;deltaX<=harvestRange;++deltaX)
164-
for(int deltaZ=-harvestRange;deltaZ<=harvestRange;++deltaZ){
165-
if(canPlantOn(w,p,X+deltaX,Y,Z+deltaZ)) {
166-
ItemStack seed=mc.thePlayer.inventory.getCurrentItem();
167-
mc.playerController.onPlayerRightClick(p,w,seed,X+deltaX,Y,Z+deltaZ,1,
168-
Vec3.createVectorHelper(X+deltaX+0.5,Y+1,Z+deltaZ+0.5));
169-
return;
170-
}
171-
}
71+
private static void sendMessage(String msg) {
72+
FMLClientHandler.instance().getClient().thePlayer.addChatMessage(new ChatComponentText(msg));
17273
}
17374

174-
private boolean canHarvest(World w,EntityPlayer p,int X,int Y,int Z){
175-
Class<?> c=w.getBlock(X, Y, Z).getClass();
176-
return harvestMap.containsKey(c) && cropMatureData.get(c)==w.getBlockMetadata(X,Y,Z) &&
177-
harvestMap.get(c) == p.inventory.getCurrentItem().getItem();
75+
public static void sendI18nMsg(String id) {
76+
sendMessage(i18n(id));
17877
}
17978

180-
private boolean canPlantOn(World w,EntityPlayer p,int X,int Y,int Z){
181-
Item i=p.inventory.getCurrentItem().getItem();
182-
return w.getBlock(X,Y+1,Z)instanceof BlockAir &&
183-
(w.getBlock(X,Y,Z) instanceof BlockFarmland && plantableItems.contains(i) ||
184-
w.getBlock(X,Y,Z) instanceof BlockSoulSand && i==Items.nether_wart);
79+
private static String i18n(String key) {
80+
return I18n.format(key);
18581
}
18682
}

0 commit comments

Comments
 (0)