32
32
* This Mod is published under GPLv3
33
33
* Use it *AT YOUR OWN RISK*
34
34
* RecursiveG
35
- * 2014 Sept. 29th
35
+ * 2014 Sept. 29th
36
36
*
37
37
*
38
38
*
53
53
* along with this program. If not, see <http://www.gnu.org/licenses/>.
54
54
*/
55
55
56
- @ Mod (modid ="autoharvest" , name ="Auto Harvest Mod" , version ="0.1-dev " )
56
+ @ Mod (modid ="autoharvest" , name ="Auto Harvest Mod" , version ="1.0 " )
57
57
public class AutoHarvest {
58
58
private boolean enabled =false ;
59
59
private boolean harvestTick =true ;
60
60
private KeyBinding toggleKey =new KeyBinding ("Toggle Enabled/Disabled" , Keyboard .KEY_H ,"Auto Harvest Mod" );
61
61
private static int harvestRange =1 ;
62
+ private Minecraft mc =null ;
63
+
62
64
private static final Set <Integer > grassBlockIds =new HashSet <Integer >(Arrays .asList (new Integer []{
63
65
6 ,31 ,32 ,37 ,38 ,39 ,40 ,175
64
66
}));
65
- private Minecraft mc =null ;
66
67
private static final Set <Item > plantableItems =new HashSet <Item >(){{
67
68
add (Items .wheat_seeds );
68
69
add (Items .carrot );
@@ -134,8 +135,8 @@ private void doClearGrass(EntityPlayer p){
134
135
for (int deltaY =-1 ;deltaY <=1 ;++deltaY )
135
136
for (int deltaX =-2 ;deltaX <=2 ;++deltaX )
136
137
for (int deltaZ =-2 ;deltaZ <=2 ;++deltaZ )
137
- if (canClearGrass ( w , X + deltaX , Y +deltaY , Z + deltaZ )){
138
- mc .playerController .onPlayerDamageBlock (X + deltaX , Y + deltaY , Z + deltaZ , 1 );
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 );
139
140
return ;
140
141
}
141
142
}
@@ -148,7 +149,7 @@ private void doHarvest(EntityPlayer p){
148
149
for (int deltaX =-harvestRange ;deltaX <=harvestRange ;++deltaX )
149
150
for (int deltaZ =-harvestRange ;deltaZ <=harvestRange ;++deltaZ ){
150
151
if (canHarvest (w ,p ,X +deltaX ,Y ,Z +deltaZ )) {
151
- mc .playerController .onPlayerDamageBlock (X + deltaX , Y , Z + deltaZ , 1 );
152
+ mc .playerController .onPlayerDamageBlock (X + deltaX ,Y , Z + deltaZ ,1 );
152
153
return ;
153
154
}
154
155
}
@@ -161,35 +162,25 @@ private void doPlant(EntityPlayer p){
161
162
int Z =(int )Math .floor (p .posZ );
162
163
for (int deltaX =-harvestRange ;deltaX <=harvestRange ;++deltaX )
163
164
for (int deltaZ =-harvestRange ;deltaZ <=harvestRange ;++deltaZ ){
164
- if (canPlantOn (w , p ,X + deltaX , Y , Z + deltaZ )) {
165
+ if (canPlantOn (w ,p ,X + deltaX ,Y , Z + deltaZ )) {
165
166
ItemStack seed =mc .thePlayer .inventory .getCurrentItem ();
166
- mc .playerController .onPlayerRightClick (p , w , seed , X + deltaX , Y , Z + deltaZ , 1 ,
167
- Vec3 .createVectorHelper (X + deltaX + 0.5 , Y + 1 , Z + deltaZ + 0.5 ));
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 ));
168
169
return ;
169
170
}
170
171
}
171
172
}
172
173
173
- private boolean canClearGrass (World w ,int X ,int Y ,int Z ){
174
- return grassBlockIds .contains (Block .getIdFromBlock (w .getBlock (X , Y , Z )));
175
- }
176
-
177
174
private boolean canHarvest (World w ,EntityPlayer p ,int X ,int Y ,int Z ){
178
175
Class <?> c =w .getBlock (X , Y , Z ).getClass ();
179
- return harvestMap .containsKey (c )&&harvestMap .get (c )==p .inventory .getCurrentItem ().getItem ()&&CropGrown (w ,X ,Y ,Z ,c );
180
- }
181
-
182
- private boolean CropGrown (World w ,int X ,int Y ,int Z ,Class <?> cropClass ){
183
- int meta =w .getBlockMetadata (X ,Y ,Z );
184
- return cropMatureData .get (cropClass )==meta ;
176
+ return harvestMap .containsKey (c ) && cropMatureData .get (c )==w .getBlockMetadata (X ,Y ,Z ) &&
177
+ harvestMap .get (c ) == p .inventory .getCurrentItem ().getItem ();
185
178
}
186
179
187
180
private boolean canPlantOn (World w ,EntityPlayer p ,int X ,int Y ,int Z ){
188
181
Item i =p .inventory .getCurrentItem ().getItem ();
189
- boolean haveSpace =w .getBlock (X ,Y +1 ,Z )instanceof BlockAir ;
190
- boolean isFarm =w .getBlock (X ,Y ,Z ) instanceof BlockFarmland ;
191
- boolean CropOnFarm =plantableItems .contains (i );
192
- boolean nether_wart =(w .getBlock (X ,Y ,Z ) instanceof BlockSoulSand )&&(i ==Items .nether_wart );
193
- return haveSpace &&(nether_wart ||(isFarm &&CropOnFarm ));
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 );
194
185
}
195
186
}
0 commit comments