Skip to content

Commit

Permalink
= Pests Destroyer - Improved flying and obstruction detection
Browse files Browse the repository at this point in the history
= Pests Destroyer - Improved suffocating after warping to plot. It has a chance to get out of the blocks if possible
= Visitors Macro - Some improvements to ignored list
  • Loading branch information
May2Beez committed Jan 18, 2024
1 parent 70dea81 commit 5e023d6
Show file tree
Hide file tree
Showing 7 changed files with 144 additions and 65 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ baseGroup=com.jelly.farmhelperv2
mcVersion=1.8.9
modid=farmhelperv2
modName=FarmHelper
version=2.4.2
version=2.4.3
shouldRelease=true
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,21 @@ public boolean shouldAltTab() {
@Override
public void onBlockChange(BlockChangeEvent event) {
if (FailsafeManager.getInstance().firstCheckReturn()) return;
if (event.update.getBlock().equals(Blocks.air) && !CropUtils.isCrop(event.old.getBlock())) {
LogUtils.sendDebug("[Failsafe] Block destroyed: " + event.pos);
blocksDestroyedByPlayer.add(new Tuple<>(event.pos, System.currentTimeMillis()));
}
blocksDestroyedByPlayer.removeIf(tuple -> System.currentTimeMillis() - tuple.getSecond() > 2000);
if ((event.old.getBlock().equals(Blocks.air) || CropUtils.isCrop(event.old.getBlock()) || event.old.getBlock().equals(Blocks.water) || event.old.getBlock().equals(Blocks.flowing_water)) &&
event.update.getBlock() != null && !event.update.getBlock().equals(Blocks.air) &&
!CropUtils.isCrop(event.update.getBlock()) && event.update.getBlock().isCollidable() &&
!event.update.getBlock().equals(Blocks.trapdoor) && !event.update.getBlock().equals(Blocks.ladder) &&
!event.update.getBlock().equals(Blocks.water) && !event.update.getBlock().equals(Blocks.flowing_water) &&
event.update.getBlock().isFullCube()) { // If old block was air or crop and new block is not air, crop, trapdoor, water or flowing water
if (blocksDestroyedByPlayer.stream().anyMatch(tuple -> tuple.getFirst().equals(event.pos))) {
LogUtils.sendDebug("[Failsafe] Block destroyed by player and resynced by hypixel: " + event.pos);
return;
}
LogUtils.sendWarning("[Failsafe] Someone put a block on your garden! Block pos: " + event.pos);
dirtBlocks.add(new Tuple<>(event.pos, System.currentTimeMillis()));
}
Expand Down Expand Up @@ -227,6 +236,7 @@ public void endOfFailsafeTrigger() {

@Override
public void resetStates() {
blocksDestroyedByPlayer.clear();
dirtBlocks.clear();
dirtCheckState = DirtCheckState.NONE;
positionBeforeReacting = null;
Expand All @@ -253,6 +263,8 @@ public boolean hasDirtBlocks() {
}

private final ArrayList<Tuple<BlockPos, Long>> dirtBlocks = new ArrayList<>();
private final ArrayList<Tuple<BlockPos, Long>> blocksDestroyedByPlayer = new ArrayList<>();

private BlockPos positionBeforeReacting = null;
private Rotation rotationBeforeReacting = null;
private boolean dirtOnLeft = false;
Expand Down
134 changes: 87 additions & 47 deletions src/main/java/com/jelly/farmhelperv2/feature/impl/PestsDestroyer.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -916,6 +916,17 @@ private void onVisitorsState() {
}
LogUtils.sendDebug("[Visitors Macro] Items to buy: " + itemsToBuy);

Optional<Tuple<String, String>> profitableReward = currentRewards.stream().filter(item -> {
String name = StringUtils.stripControlCodes(item.getFirst());
return profitRewards.stream().anyMatch(reward -> reward.toLowerCase().contains(name.toLowerCase()) || name.toLowerCase().contains(reward.toLowerCase()));
}).findFirst();

profitNpc = profitableReward.isPresent();
if (profitNpc && FarmHelperConfig.sendVisitorsMacroLogs) {
String reward = StringUtils.stripControlCodes(profitableReward.get().getFirst());
LogUtils.webhookLog("[Visitors Macro]\\nVisitors Macro found profitable item: " + reward, FarmHelperConfig.pingEveryoneOnVisitorsMacroLogs);
}

switch (npcRarity) {
case UNKNOWN:
LogUtils.sendDebug("[Visitors Macro] The visitor is unknown rarity. Accepting offer...");
Expand Down Expand Up @@ -1202,17 +1213,8 @@ private boolean moveAwayIfPlayerTooClose() {
}

private void checkIfCurrentVisitorIsProfitable() {
Optional<Tuple<String, String>> profitableReward = currentRewards.stream().filter(item -> {
String name = StringUtils.stripControlCodes(item.getFirst());
System.out.println(name);
return profitRewards.stream().anyMatch(reward -> reward.toLowerCase().contains(name.toLowerCase()) || name.toLowerCase().contains(reward.toLowerCase()));
}).findFirst();
if (profitableReward.isPresent()) {
if (profitNpc) {
LogUtils.sendDebug("[Visitors Macro] The visitor is profitable");
String reward = profitableReward.get().getFirst();
profitNpc = true;
if (FarmHelperConfig.sendVisitorsMacroLogs)
LogUtils.webhookLog("[Visitors Macro]\\nVisitors Macro found profitable item: " + reward, FarmHelperConfig.pingEveryoneOnVisitorsMacroLogs);
LogUtils.sendDebug("[Visitors Macro] Accepting offer...");
} else {
LogUtils.sendWarning("[Visitors Macro] The visitor is not profitable, skipping...");
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/jelly/farmhelperv2/util/BlockUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -747,6 +747,12 @@ public static List<BlockPos> getBlocksAroundEntity(Entity entity) {
return blocks;
}

public static boolean hasCollision(BlockPos blockPos) {
Block block = mc.theWorld.getBlockState(blockPos).getBlock();
return block != null && block.getCollisionBoundingBox(mc.theWorld, blockPos, mc.theWorld.getBlockState(blockPos)) != null;
}


public enum Direction {
FORWARD,
BACKWARD,
Expand Down
28 changes: 23 additions & 5 deletions src/main/java/com/jelly/farmhelperv2/util/KeyBindUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,28 @@ public static List<KeyBinding> getNeededKeyPresses(Vec3 orig, Vec3 dest) {
return keys;
}

public static List<KeyBinding> getKeyPressesToDecelerate() {
if (Math.abs(mc.thePlayer.motionX) < 0.05 && Math.abs(mc.thePlayer.motionZ) < 0.05) return new ArrayList<>();
Vec3 orig = mc.thePlayer.getPositionVector();
Vec3 dest = mc.thePlayer.getPositionVector().addVector(Math.abs(mc.thePlayer.motionX) >= 0.05 ? -mc.thePlayer.motionX : 0, 0, Math.abs(mc.thePlayer.motionZ) >= 0.05 ? -mc.thePlayer.motionZ : 0);
return getNeededKeyPresses(orig, dest);
public static List<KeyBinding> getOppositeKeys(List<KeyBinding> kbs) {
List<KeyBinding> keys = new ArrayList<>();
kbs.forEach(key -> {
switch (key.getKeyCode()) {
case 17:
keys.add(mc.gameSettings.keyBindBack);
break;
case 30:
keys.add(mc.gameSettings.keyBindRight);
break;
case 31:
keys.add(mc.gameSettings.keyBindLeft);
break;
case 32:
keys.add(mc.gameSettings.keyBindForward);
break;
}
});
return keys;
}

public static List<KeyBinding> getKeyPressesToDecelerate(Vec3 orig, Vec3 dest) {
return getOppositeKeys(getNeededKeyPresses(orig, dest));
}
}
5 changes: 3 additions & 2 deletions src/main/java/com/jelly/farmhelperv2/util/PlayerUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ public static boolean isStandingOnRewarpLocation() {
}
if (closest == null) return false;
BlockPos playerPos = BlockUtils.getRelativeBlockPos(0, 0, 0);
return playerPos.getX() == closest.getX() && playerPos.getY() == closest.getY() && playerPos.getZ() == closest.getZ();
return playerPos.distanceSqToCenter(closest.getX() + 0.5, closest.getY() + 0.5, closest.getZ() + 0.5) < 1;
}

public static boolean shouldPushBack() {
Expand Down Expand Up @@ -302,7 +302,8 @@ public static boolean isSpawnLocationSet() {

public static boolean isStandingOnSpawnPoint() {
BlockPos pos = BlockUtils.getRelativeBlockPos(0, 0, 0);
return pos.getX() == FarmHelperConfig.spawnPosX && pos.getY() == FarmHelperConfig.spawnPosY && pos.getZ() == FarmHelperConfig.spawnPosZ;
BlockPos spawnPoint = new BlockPos(FarmHelperConfig.spawnPosX + 0.5, FarmHelperConfig.spawnPosY + 0.5, FarmHelperConfig.spawnPosZ + 0.5);
return pos.distanceSqToCenter(spawnPoint.getX(), spawnPoint.getY(), spawnPoint.getZ()) < 1;
}

public static Vec3 getSpawnLocation() {
Expand Down

0 comments on commit 5e023d6

Please sign in to comment.