aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/features
diff options
context:
space:
mode:
authorRoseGoldIsntGay <yoavkau@gmail.com>2022-01-21 19:06:33 +0200
committerRoseGoldIsntGay <yoavkau@gmail.com>2022-01-21 19:06:33 +0200
commitfdc569f2ab7674d850d25b41519b4e3da244dd00 (patch)
tree941cc71de47f731920ba19816d8103606cbbdbfc /src/main/java/rosegoldaddons/features
parent5db7e7cb4918c64f25f57797345b9bc6c0527942 (diff)
downloadRGA-fdc569f2ab7674d850d25b41519b4e3da244dd00.tar.gz
RGA-fdc569f2ab7674d850d25b41519b4e3da244dd00.tar.bz2
RGA-fdc569f2ab7674d850d25b41519b4e3da244dd00.zip
2.7.0-pre2
Diffstat (limited to 'src/main/java/rosegoldaddons/features')
-rw-r--r--src/main/java/rosegoldaddons/features/CropNuker.java15
-rw-r--r--src/main/java/rosegoldaddons/features/MithrilNuker.java8
-rw-r--r--src/main/java/rosegoldaddons/features/PinglessMining.java132
3 files changed, 149 insertions, 6 deletions
diff --git a/src/main/java/rosegoldaddons/features/CropNuker.java b/src/main/java/rosegoldaddons/features/CropNuker.java
index 46744df..fc00737 100644
--- a/src/main/java/rosegoldaddons/features/CropNuker.java
+++ b/src/main/java/rosegoldaddons/features/CropNuker.java
@@ -5,15 +5,19 @@ import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
import net.minecraft.network.play.client.C07PacketPlayerDigging;
import net.minecraft.util.*;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import rosegoldaddons.Main;
import rosegoldaddons.utils.ChatUtils;
import rosegoldaddons.utils.PlayerUtils;
+import rosegoldaddons.utils.RenderUtils;
+import java.awt.*;
import java.util.ArrayList;
public class CropNuker {
+ private static BlockPos crop = null;
private static final ArrayList<BlockPos> broken = new ArrayList<>();
private static int ticks = 0;
@@ -24,7 +28,7 @@ public class CropNuker {
broken.clear();
return;
}
- BlockPos crop = closestCrop();
+ crop = closestCrop();
if (crop != null) {
Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C07PacketPlayerDigging(C07PacketPlayerDigging.Action.START_DESTROY_BLOCK, crop, EnumFacing.DOWN));
PlayerUtils.swingItem();
@@ -33,7 +37,16 @@ public class CropNuker {
}
+ @SubscribeEvent
+ public void onRender(RenderWorldLastEvent event) {
+ if (!Main.nukeCrops) return;
+ if(crop != null) {
+ RenderUtils.drawBlockBox(crop, new Color(255, 0, 0), true, event.partialTicks);
+ }
+ }
+
private BlockPos closestCrop() {
+ if(Minecraft.getMinecraft().theWorld == null) return null;
double r = 6;
BlockPos playerPos = Minecraft.getMinecraft().thePlayer.getPosition();
playerPos = playerPos.add(0, 1, 0);
diff --git a/src/main/java/rosegoldaddons/features/MithrilNuker.java b/src/main/java/rosegoldaddons/features/MithrilNuker.java
index a6c2be4..c84b378 100644
--- a/src/main/java/rosegoldaddons/features/MithrilNuker.java
+++ b/src/main/java/rosegoldaddons/features/MithrilNuker.java
@@ -4,14 +4,12 @@ import net.minecraft.block.*;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
-import net.minecraft.item.EnumDyeColor;
import net.minecraft.network.play.client.C07PacketPlayerDigging;
import net.minecraft.util.*;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import rosegoldaddons.Main;
-import rosegoldaddons.utils.ChatUtils;
import rosegoldaddons.utils.PlayerUtils;
import rosegoldaddons.utils.RenderUtils;
import rosegoldaddons.utils.RotationUtils;
@@ -26,7 +24,7 @@ public class MithrilNuker {
@SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event) {
- if (!Main.mithrilNuker) {
+ if (!Main.mithrilNuker || Minecraft.getMinecraft().thePlayer == null || Minecraft.getMinecraft().theWorld == null) {
currentDamage = 0;
return;
}
@@ -66,7 +64,7 @@ public class MithrilNuker {
@SubscribeEvent
public void renderWorld(RenderWorldLastEvent event) {
- if (!Main.mithrilNuker) return;
+ if (!Main.mithrilNuker || Minecraft.getMinecraft().theWorld == null) return;
if (blockPos != null) {
IBlockState blockState = Minecraft.getMinecraft().theWorld.getBlockState(blockPos);
if(blockState.getBlock() == Blocks.stone) {
@@ -79,7 +77,7 @@ public class MithrilNuker {
private BlockPos closestMithril() {
int r = 6;
- if (Minecraft.getMinecraft().thePlayer == null) return null;
+ if (Minecraft.getMinecraft().thePlayer == null || Minecraft.getMinecraft().theWorld == null) return null;
BlockPos playerPos = Minecraft.getMinecraft().thePlayer.getPosition();
playerPos = playerPos.add(0, 1, 0);
Vec3 playerVec = Minecraft.getMinecraft().thePlayer.getPositionVector();
diff --git a/src/main/java/rosegoldaddons/features/PinglessMining.java b/src/main/java/rosegoldaddons/features/PinglessMining.java
new file mode 100644
index 0000000..9b21e91
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/PinglessMining.java
@@ -0,0 +1,132 @@
+package rosegoldaddons.features;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.init.Blocks;
+import net.minecraft.network.play.client.C07PacketPlayerDigging;
+import net.minecraft.util.*;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.utils.PlayerUtils;
+import rosegoldaddons.utils.RenderUtils;
+
+import java.awt.*;
+import java.util.ArrayList;
+
+public class PinglessMining {
+ private static BlockPos block = null;
+ private static final ArrayList<BlockPos> broken = new ArrayList<>();
+ private final KeyBinding lc = Minecraft.getMinecraft().gameSettings.keyBindAttack;
+ private static int ticks = 0;
+
+ @SubscribeEvent
+ public void onTick80(TickEvent.PlayerTickEvent event) {
+ if (!Main.configFile.pinglessMining) return;
+ if (Main.configFile.pinglessSpeed == 0 || Main.configFile.pinglessSpeed == 1) return;
+ ticks++;
+ if(ticks % 80 == 0) {
+ broken.clear();
+ }
+ if (lc != null && lc.isKeyDown()) {
+ if (block != null) {
+ MovingObjectPosition movingObjectPosition = Minecraft.getMinecraft().objectMouseOver;
+ if (movingObjectPosition != null && movingObjectPosition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
+ Block b = Minecraft.getMinecraft().theWorld.getBlockState(movingObjectPosition.getBlockPos()).getBlock();
+ if (b == Blocks.stone || b == Blocks.emerald_ore || b == Blocks.lapis_ore || b == Blocks.redstone_ore ||
+ b == Blocks.iron_ore || b == Blocks.gold_ore || b == Blocks.coal_ore || b == Blocks.diamond_ore) {
+ broken.add(block);
+ Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C07PacketPlayerDigging(C07PacketPlayerDigging.Action.START_DESTROY_BLOCK, block, EnumFacing.DOWN));
+ PlayerUtils.swingItem();
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick40(TickEvent.PlayerTickEvent event) {
+ if (!Main.configFile.pinglessMining) return;
+ if (Main.configFile.pinglessSpeed == 2) return;
+ if (Main.configFile.pinglessSpeed == 0 && event.phase == TickEvent.Phase.END) return;
+ ticks++;
+ if(ticks % 80 == 0) {
+ broken.clear();
+ }
+ if (lc != null && lc.isKeyDown()) {
+ if (block != null) {
+ MovingObjectPosition movingObjectPosition = Minecraft.getMinecraft().objectMouseOver;
+ if (movingObjectPosition != null && movingObjectPosition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
+ Block b = Minecraft.getMinecraft().theWorld.getBlockState(movingObjectPosition.getBlockPos()).getBlock();
+ if (b == Blocks.stone || b == Blocks.emerald_ore || b == Blocks.lapis_ore || b == Blocks.redstone_ore ||
+ b == Blocks.iron_ore || b == Blocks.gold_ore || b == Blocks.coal_ore || b == Blocks.diamond_ore) {
+ broken.add(block);
+ Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C07PacketPlayerDigging(C07PacketPlayerDigging.Action.START_DESTROY_BLOCK, block, EnumFacing.DOWN));
+ PlayerUtils.swingItem();
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onRender(RenderWorldLastEvent event) {
+ if (!Main.configFile.pinglessMining || Minecraft.getMinecraft().thePlayer == null || Minecraft.getMinecraft().theWorld == null) {
+ broken.clear();
+ return;
+ }
+ block = closestBlock(event);
+ if (block != null) {
+ RenderUtils.drawBlockBox(block, new Color(255, 0, 0), true, event.partialTicks);
+ }
+ }
+
+ private BlockPos closestBlock(RenderWorldLastEvent event) {
+ int r = 5;
+ BlockPos playerPos = Minecraft.getMinecraft().thePlayer.getPosition().add(0, 1, 0);
+ Vec3 playerVec = Minecraft.getMinecraft().thePlayer.getPositionVector();
+ Vec3i vec3i = new Vec3i(r, r, r);
+ ArrayList<Vec3> blocks = new ArrayList<>();
+ for (BlockPos blockPos : BlockPos.getAllInBox(playerPos.add(vec3i), playerPos.subtract(vec3i))) {
+ IBlockState blockState = Minecraft.getMinecraft().theWorld.getBlockState(blockPos);
+ if (isLookingAtBlock(blockPos, event) && !broken.contains(blockPos) && blockState.getBlock() != Blocks.air) {
+ blocks.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY(), blockPos.getZ() + 0.5));
+ }
+ }
+ double smallest = 9999;
+ Vec3 closest = null;
+ for (Vec3 block : blocks) {
+ double dist = block.distanceTo(playerVec);
+ if (dist < smallest) {
+ smallest = dist;
+ closest = block;
+ }
+ }
+ if (closest != null) {
+ return new BlockPos(closest.xCoord, closest.yCoord, closest.zCoord);
+ }
+ return null;
+ }
+
+ private boolean isLookingAtBlock(BlockPos blockPos, RenderWorldLastEvent event) {
+ AxisAlignedBB aabb = AxisAlignedBB.fromBounds(blockPos.getX(), blockPos.getY(), blockPos.getZ(), blockPos.getX() + 1, blockPos.getY() + 1, blockPos.getZ() + 1);
+ Vec3 position = new Vec3(Minecraft.getMinecraft().thePlayer.posX, (Minecraft.getMinecraft().thePlayer.posY + Minecraft.getMinecraft().thePlayer.getEyeHeight()), Minecraft.getMinecraft().thePlayer.posZ);
+ Vec3 look = Minecraft.getMinecraft().thePlayer.getLook(event.partialTicks);
+ look = scaleVec(look, 0.2F);
+ for (int i = 0; i < 40; i++) {
+ if (aabb.minX <= position.xCoord && aabb.maxX >= position.xCoord && aabb.minY <= position.yCoord && aabb.maxY >= position.yCoord && aabb.minZ <= position.zCoord && aabb.maxZ >= position.zCoord) {
+ return true;
+ }
+ position = position.add(look);
+ }
+
+ return false;
+ }
+
+ private static Vec3 scaleVec(Vec3 vec, float f) {
+ return new Vec3(vec.xCoord * (double) f, vec.yCoord * (double) f, vec.zCoord * (double) f);
+ }
+}