@@ -212,6 +212,7 @@ public void onPacketReceive(PacketEvent.Receive event) {
212
212
213
213
this .placeCount .remove (pos );
214
214
this .placeDelayMS .reset ();
215
+ this .breakDelayMS .reset ();
215
216
}
216
217
}
217
218
@@ -230,6 +231,11 @@ public void onPacketReceive(PacketEvent.Receive event) {
230
231
}
231
232
}
232
233
}
234
+
235
+ if (hitList ) {
236
+ this .placeCount .clear ();
237
+ this .hitCount .clear ();
238
+ }
233
239
}
234
240
}
235
241
}
@@ -297,7 +303,7 @@ public void onClientTickEvent(ClientTickEvent event) {
297
303
}
298
304
299
305
protected void update () {
300
- if (this .breakDelayMS .isPassedMS (settingBreakDelay .getValue ().floatValue ()) && ! settingPredict . getValue () ) {
306
+ if (this .breakDelayMS .isPassedMS (settingBreakDelay .getValue ().floatValue ())) {
301
307
this .entityID = this .findCrystalBreak ();
302
308
303
309
if (this .entityID != -1 ) {
@@ -410,23 +416,36 @@ protected BlockPos findCrystalPlace() {
410
416
return null ;
411
417
}
412
418
413
- BlockPos position = null ;
419
+ final BlockPos selfPos = new BlockPos (mc .player .posX , mc .player .posY , mc .player .posZ );
420
+ float range = settingPlaceRange .getValue ().floatValue ();
414
421
415
- for (BlockPos places : CrystalUtil .getSphereCrystalPlace (settingPlaceRange .getValue ().floatValue (), settingPlace113 .getValue (), true )) {
416
- float entityDamage = CrystalUtil .calculateDamage (places , this .entity );
417
- float selfDamage = CrystalUtil .calculateDamage (places , mc .player );
422
+ for (int x = (int ) (selfPos .x - range ); x <= selfPos .x + range ; x ++) {
423
+ for (int z = (int ) (selfPos .z - range ); z <= selfPos .z + range ; z ++) {
424
+ for (int y = (int ) (selfPos .y - range ); y <= selfPos .y + range ; y ++) {
425
+ double dist = (selfPos .x - x ) * (selfPos .x - x ) + (selfPos .z - z ) * (selfPos .z - z ) + (selfPos .y - y ) * (selfPos .y - y );
418
426
419
- if (this .entity .getDistance (places .x , places .y , places .z ) >= 6.0f ) {
420
- continue ;
421
- }
427
+ if (dist < range * range ) {
428
+ BlockPos block = new BlockPos (x , y , z );
422
429
423
- if ( settingWallCheck . getValue () && mc . player . getDistance ( places . x , places . y , places . z ) > settingWallRange . getValue (). floatValue () && mc . world . rayTraceBlocks ( new Vec3d ( mc . player . posX , mc . player . posY + ( double ) mc . player . getEyeHeight (), mc . player . posZ ), new Vec3d ( places . getX () + 0.5f , places . getY () - settingFacingY . getValue (). floatValue (), places . getZ () + 0.5f ), false , true , false ) != null ) {
424
- continue ;
425
- }
430
+ if ( CrystalUtil . isCrystalPlaceable ( block , settingPlace113 . getValue (), true ) ) {
431
+ float entityDamage = CrystalUtil . calculateDamage ( block , this . entity ) ;
432
+ float selfDamage = CrystalUtil . calculateDamage ( block , mc . player );
426
433
427
- if (entityDamage > settingMinimumDamage .getValue ().floatValue () && entityDamage > damage && selfDamage < settingSelfDamage .getValue ().floatValue ()) {
428
- damage = entityDamage ;
429
- position = places ;
434
+ if (this .entity .getDistance (block .x , block .y , block .z ) >= 6.0f ) {
435
+ continue ;
436
+ }
437
+
438
+ if (settingWallCheck .getValue () && mc .player .getDistance (block .x , block .y , block .z ) > settingWallRange .getValue ().floatValue () && mc .world .rayTraceBlocks (new Vec3d (mc .player .posX , mc .player .posY + (double ) mc .player .getEyeHeight (), mc .player .posZ ), new Vec3d (block .getX () + 0.5f , block .getY () - settingFacingY .getValue ().floatValue (), block .getZ () + 0.5f ), false , true , false ) != null ) {
439
+ continue ;
440
+ }
441
+
442
+ if (entityDamage > settingMinimumDamage .getValue ().floatValue () && entityDamage > damage && selfDamage < settingSelfDamage .getValue ().floatValue ()) {
443
+ damage = entityDamage ;
444
+ position = block ;
445
+ }
446
+ }
447
+ }
448
+ }
430
449
}
431
450
}
432
451
0 commit comments