Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions api/src/main/java/com/rappytv/autofisher/FishingController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.rappytv.autofisher;

import net.labymod.api.reference.annotation.Referenceable;

@Referenceable
public abstract class FishingController {

private boolean manualRetraction = true;

public abstract void castFishingRod();

public abstract void retractFishingRod();

public void setManualRetraction(boolean value) {
this.manualRetraction = value;
}

public boolean isManualRetraction() {
return this.manualRetraction;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.rappytv.autofisher.event;

import net.labymod.api.event.Event;

public class FishHookBiteEvent implements Event {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.rappytv.autofisher.event;

import net.labymod.api.event.Event;

public record FishHookRetractEvent(boolean manual) implements Event {

}
23 changes: 11 additions & 12 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,26 @@ group = "org.example"
version = providers.environmentVariable("VERSION").getOrElse("1.0.0")

labyMod {
defaultPackageName = "org.example" //change this to your main package name (used by all modules)
defaultPackageName = "com.rappytv.autofisher"

addonInfo {
namespace = "autofisher"
displayName = "AutoFisher"
author = "RappyTV"
description = "Completely automate the way your fishing rod works"
minecraftVersion = "1.17.1<1.21.10"
version = rootProject.version.toString()
}

minecraft {
registerVersion(versions.toTypedArray()) {
runs {
getByName("client") {
// When the property is set to true, you can log in with a Minecraft account
// devLogin = true
devLogin = true
}
}
}
}

addonInfo {
namespace = "example"
displayName = "ExampleAddon"
author = "Example Author"
description = "Example Description"
minecraftVersion = "*"
version = rootProject.version.toString()
}
}

subprojects {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.rappytv.autofisher.core;

import com.rappytv.autofisher.FishingController;
import com.rappytv.autofisher.api.generated.ReferenceStorage;
import com.rappytv.autofisher.core.listener.FishingListener;
import net.labymod.api.addon.LabyAddon;
import net.labymod.api.models.addon.annotation.AddonMain;

@AddonMain
public class AutoFisherAddon extends LabyAddon<AutoFisherConfig> {

public static final String PERMISSION = "autofisher";
private static AutoFisherAddon instance;

@Override
protected void enable() {
instance = this;

this.registerSettingCategory();
this.registerListener(new FishingListener(this));
this.labyAPI().permissionRegistry().register(PERMISSION, true, true);
}

@Override
protected Class<? extends AutoFisherConfig> configurationClass() {
return AutoFisherConfig.class;
}

public static FishingController fishingController() {
return ((ReferenceStorage) instance.referenceStorageAccessor()).fishingController();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.rappytv.autofisher.core;

import net.labymod.api.addon.AddonConfig;
import net.labymod.api.client.gui.screen.widget.widgets.input.SliderWidget.SliderSetting;
import net.labymod.api.client.gui.screen.widget.widgets.input.SwitchWidget.SwitchSetting;
import net.labymod.api.configuration.loader.annotation.SpriteSlot;
import net.labymod.api.configuration.loader.annotation.SpriteTexture;
import net.labymod.api.configuration.loader.property.ConfigProperty;
import net.labymod.api.configuration.settings.annotation.SettingRequires;
import net.labymod.api.configuration.settings.annotation.SettingSection;

@SpriteTexture("settings.png")
public class AutoFisherConfig extends AddonConfig {

@SpriteSlot
@SwitchSetting
private final ConfigProperty<Boolean> enabled = new ConfigProperty<>(true);

@SpriteSlot(x = 1)
@SwitchSetting
private final ConfigProperty<Boolean> autoCast = new ConfigProperty<>(true);

@SettingSection("delay")
@SpriteSlot(x = 2)
@SettingRequires("autoCast")
@SwitchSetting
private final ConfigProperty<Boolean> enableDelay = new ConfigProperty<>(true);

@SpriteSlot(x = 3)
@SettingRequires("enableDelay")
@SwitchSetting
private final ConfigProperty<Boolean> randomDelay = new ConfigProperty<>(true);

@SpriteSlot(x = 4)
@SettingRequires(value = "randomDelay", invert = true)
@SliderSetting(min = 1, max = 20)
private final ConfigProperty<Integer> delay = new ConfigProperty<>(3);

@Override
public ConfigProperty<Boolean> enabled() {
return this.enabled;
}

public ConfigProperty<Boolean> autoCast() {
return this.autoCast;
}

public ConfigProperty<Boolean> enableDelay() {
return this.enableDelay;
}

public ConfigProperty<Boolean> randomDelay() {
return this.randomDelay;
}

public ConfigProperty<Integer> delay() {
return this.delay;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.rappytv.autofisher.core.listener;

import com.rappytv.autofisher.core.AutoFisherAddon;
import com.rappytv.autofisher.event.FishHookBiteEvent;
import com.rappytv.autofisher.event.FishHookRetractEvent;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import net.labymod.api.Laby;
import net.labymod.api.event.Subscribe;
import net.labymod.api.util.concurrent.task.Task;

public class FishingListener {

private static final Random random = new Random();
private static final Runnable retraction = AutoFisherAddon.fishingController()::castFishingRod;

private final AutoFisherAddon addon;

public FishingListener(AutoFisherAddon addon) {
this.addon = addon;
}

@Subscribe
public void onFishBite(FishHookBiteEvent event) {
if (!this.isAllowed()) {
return;
}
AutoFisherAddon.fishingController().retractFishingRod();
}

@Subscribe
public void onHookRetract(FishHookRetractEvent event) {
if (!this.isAllowed() || !this.addon.configuration().autoCast().get() || !event.manual()) {
return;
}

if (!this.addon.configuration().enableDelay().get()) {
retraction.run();
return;
}

int delay;
if (this.addon.configuration().randomDelay().get()) {
delay = random.nextInt(1, 6);
} else {
delay = this.addon.configuration().delay().get();
}

Task.builder(retraction).delay(delay, TimeUnit.SECONDS).build().execute();
}

@SuppressWarnings("all")
private boolean isAllowed() {
return Laby.labyAPI().permissionRegistry().isPermissionEnabled(AutoFisherAddon.PERMISSION);
}

}
25 changes: 0 additions & 25 deletions core/src/main/java/org/example/core/ExampleAddon.java

This file was deleted.

18 changes: 0 additions & 18 deletions core/src/main/java/org/example/core/ExampleConfiguration.java

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

30 changes: 30 additions & 0 deletions core/src/main/resources/assets/autofisher/i18n/en_us.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"autofisher": {
"settings": {
"header": {
"delay": {
"name": "Delay"
}
},
"enabled": {
"name": "Enabled"
},
"autoCast": {
"name": "Auto cast",
"description": "Automatically cast the fishing rod after retracting it"
},
"enableDelay": {
"name": "Delay",
"description": "Enables a delay before a new reel is casted"
},
"randomDelay": {
"name": "Random delay",
"description": "Picks a random delay between §b1 and 5 seconds§r."
},
"delay": {
"name": "Delay in seconds",
"description": "Choose your own delay in seconds"
}
}
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 0 additions & 9 deletions core/src/main/resources/assets/example/i18n/en_us.json

This file was deleted.

Loading