aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java12
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java32
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/RenderFishMixin.java26
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/FishingHelper.java35
4 files changed, 103 insertions, 2 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index a1e1dadc..6fddd3d0 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -356,6 +356,18 @@ public class SkyblockerConfig {
public static class Fishing {
@SerialEntry
public boolean enableFishingHelper = true;
+
+ @SerialEntry
+ public boolean enableFishingTimer = false;
+
+ @SerialEntry
+ public boolean changeTimerColor = true;
+
+ @SerialEntry
+ public float fishingTimerScale = 1f;
+
+ @SerialEntry
+ public boolean hideOtherPlayersRods = false;
}
public static class FairySouls {
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
index a74b9483..dbfbbb10 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
@@ -226,6 +226,38 @@ public class GeneralCategory {
newValue -> config.general.fishing.enableFishingHelper = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.enableFishingTimer"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.enableFishingTimer.@Tooltip")))
+ .binding(defaults.general.fishing.enableFishingTimer,
+ () -> config.general.fishing.enableFishingTimer,
+ newValue -> config.general.fishing.enableFishingTimer = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.changeTimerColor"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.changeTimerColor.@Tooltip")))
+ .binding(defaults.general.fishing.changeTimerColor,
+ () -> config.general.fishing.changeTimerColor,
+ newValue -> config.general.fishing.changeTimerColor = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.fishingTimerScale"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.fishingTimerScale.@Tooltip")))
+ .binding(defaults.general.fishing.fishingTimerScale,
+ () -> config.general.fishing.fishingTimerScale,
+ newValue -> config.general.fishing.fishingTimerScale = newValue)
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.hideOtherPlayers"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.hideOtherPlayers.@Tooltip")))
+ .binding(defaults.general.fishing.hideOtherPlayersRods,
+ () -> config.general.fishing.hideOtherPlayersRods,
+ newValue -> config.general.fishing.hideOtherPlayersRods = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
.build())
//Fairy Souls Helper
diff --git a/src/main/java/de/hysky/skyblocker/mixin/RenderFishMixin.java b/src/main/java/de/hysky/skyblocker/mixin/RenderFishMixin.java
new file mode 100644
index 00000000..e74bbaea
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/mixin/RenderFishMixin.java
@@ -0,0 +1,26 @@
+package de.hysky.skyblocker.mixin;
+
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.Utils;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.render.VertexConsumerProvider;
+import net.minecraft.client.render.entity.FishingBobberEntityRenderer;
+import net.minecraft.client.util.math.MatrixStack;
+import net.minecraft.entity.projectile.FishingBobberEntity;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Mixin(FishingBobberEntityRenderer.class)
+public abstract class RenderFishMixin {
+
+ @Inject(method = "render", at = @At("HEAD"), cancellable = true)
+ private void skyblocker$render(FishingBobberEntity fishingBobberEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, CallbackInfo ci) {
+ //if rendered bobber is not the players and option to hide others is enabled do not render the bobber
+ if (Utils.isOnSkyblock() && fishingBobberEntity.getPlayerOwner() != MinecraftClient.getInstance().player && SkyblockerConfigManager.get().general.fishing.hideOtherPlayersRods) {
+ ci.cancel();
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/FishingHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/FishingHelper.java
index 9e7cf541..7676860f 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/FishingHelper.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/FishingHelper.java
@@ -4,6 +4,8 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.RenderHelper;
import de.hysky.skyblocker.utils.render.title.Title;
+import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
+import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.fabricmc.fabric.api.event.player.UseItemCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
@@ -11,6 +13,7 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.FishingRodItem;
import net.minecraft.item.ItemStack;
import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket;
+import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.TypedActionResult;
import net.minecraft.util.math.MathHelper;
@@ -19,6 +22,7 @@ import net.minecraft.util.math.Vec3d;
public class FishingHelper {
private static final Title title = new Title("skyblocker.fishing.reelNow", Formatting.GREEN);
private static long startTime;
+ private static long startTimeFish;
private static Vec3d normalYawVector;
public static void init() {
@@ -36,31 +40,58 @@ public class FishingHelper {
}
return TypedActionResult.pass(stack);
});
+ WorldRenderEvents.AFTER_TRANSLUCENT.register(FishingHelper::render);
}
public static void start(PlayerEntity player) {
startTime = System.currentTimeMillis();
+ startTimeFish = System.currentTimeMillis();
float yawRad = player.getYaw() * 0.017453292F;
normalYawVector = new Vec3d(-MathHelper.sin(yawRad), 0, MathHelper.cos(yawRad));
}
public static void reset() {
startTime = 0;
+ startTimeFish = 0;
+ }
+
+ public static void resetFish() {
+ startTimeFish = 0;
}
public static void onSound(PlaySoundS2CPacket packet) {
String path = packet.getSound().value().getId().getPath();
- if (SkyblockerConfigManager.get().general.fishing.enableFishingHelper && startTime != 0 && System.currentTimeMillis() >= startTime + 2000 && ("entity.generic.splash".equals(path) || "entity.player.splash".equals(path))) {
+ if (SkyblockerConfigManager.get().general.fishing.enableFishingHelper && startTimeFish != 0 && System.currentTimeMillis() >= startTimeFish + 2000 && ("entity.generic.splash".equals(path) || "entity.player.splash".equals(path))) {
ClientPlayerEntity player = MinecraftClient.getInstance().player;
if (player != null && player.fishHook != null) {
Vec3d soundToFishHook = player.fishHook.getPos().subtract(packet.getX(), 0, packet.getZ());
if (Math.abs(normalYawVector.x * soundToFishHook.z - normalYawVector.z * soundToFishHook.x) < 0.2D && Math.abs(normalYawVector.dotProduct(soundToFishHook)) < 4D && player.getPos().squaredDistanceTo(packet.getX(), packet.getY(), packet.getZ()) > 1D) {
RenderHelper.displayInTitleContainerAndPlaySound(title, 10);
- reset();
+ resetFish();
}
} else {
reset();
}
}
}
+
+ public static void render(WorldRenderContext context) {
+ if (SkyblockerConfigManager.get().general.fishing.enableFishingTimer && startTime != 0) {
+ ClientPlayerEntity player = MinecraftClient.getInstance().player;
+ if (player != null && player.fishHook != null) {
+ float time = (int) ((System.currentTimeMillis() - startTime) / 100f) / 10f; //leave 1dp in seconds
+ float scale = SkyblockerConfigManager.get().general.fishing.fishingTimerScale;
+ Vec3d pos = player.fishHook.getPos().add(0, 0.4 + scale / 10, 0);
+
+ Text text;
+ if (time >= 20 && SkyblockerConfigManager.get().general.fishing.changeTimerColor) {
+ text = Text.literal(String.valueOf(time)).formatted(Formatting.GREEN);
+ } else {
+ text = Text.literal(String.valueOf(time));
+ }
+
+ RenderHelper.renderText(context, text, pos, scale, true);
+ }
+ }
+ }
}