Skip to content

Commit

Permalink
Added auto decompressor. Added /msg tabs. Fixed some Bugs with auto h…
Browse files Browse the repository at this point in the history
…opper and auto crafter. Updated type correction for the new word blacklist of GriferGames.
  • Loading branch information
tmbRandy committed Apr 14, 2024
1 parent bed6d81 commit 7da0352
Show file tree
Hide file tree
Showing 37 changed files with 1,095 additions and 75 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-version: '21'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
Expand Down
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,23 @@
### Autokomprimierer
Drücke bei geschlossenem Inventar die Pfeiltastet LINKS, RECHTS und OBEN gleichzeitig, um den Autokomprimierer zu starten. Es öffnet sich das Komprimieren-Menü mit dem Item, welches in deinem ersten Hotbar Slot liegt. Es gibt 2 verschiedene Listen, zwischen denen du während des Komprimierens mit den Pfeiltastet HOCH und RUNTER:

### Autodekomprimierer
Drücke bei geschlossenem Inventar die Pfeiltastet LINKS, RECHTS und UNTEN gleichzeitig, um den Autodekomprimierer zu starten. Es öffnet sich das Craftingmenü. Das Item, welches in deinem ersten Hotbar Slot liegt wird nun automatisch schrittweise dekomprimiert und auf den Boden geworfen.

#### Liste #1 (Standard)
Komprimiert die Stufen I, II, III, IV, V und fängt dann wieder von vorne an.

#### Liste #2 (Noch schneller)
Komprimiert die kleinen Stufen häufiger: I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, V, I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, V, VI und fängt dann wieder von vorne an. Geeignet für extrem große Mengen an Item-drops.

### Autocrafter V1
Öffne dein Craftingmenü mit /craft und lege das Rezept, welches du craften willst in die Werkbank. Drücke nun SHIFT + Enter um das Rezept zu speichern. Drücke Anschließend ENTER um eine Portion nach der anderen zu craften. Optional kannst du auch den Endlosmudus aktivieren, um alles automatisch zu craften oder du lässt die Items automatisch wegwerfen. Berücksichtigt auch komprimierte Items.
Öffne dein Craftingmenü mit /craft und lege das Rezept, welches du craften willst in die Werkbank. Drücke nun SHIFT + Enter um das Rezept zu speichern. Drücke anschließend ENTER um eine Portion nach der anderen zu craften. Optional kannst du auch den Endlosmudus aktivieren, um alles automatisch zu craften oder du lässt die Items automatisch wegwerfen. Berücksichtigt auch komprimierte Items.

### Autocrafter V2
Arbeitet wesentlich schneller. Lege das Item, welches gecraftet werden soll in den ersten Slot deiner Hotbar. Gib nun den Befehl /autocraft ein. Es öffnet sich das /rezepte Menü auf der Rezeptseite. Es wird nun solange der "Alles-komprimieren-Button" geklickt, bis du 9 Slots des zu craftenden Items im Inventar hast. Anschließend wechselt der Autocrafter automatisch in das Komprimieren-Menü, komprimiert die Stufen I - V einmal durch und craftet anschließend weiter. Alternativ können die gecrafteten Items auch aus dem Inventar geworfen werden. Dieser Autocrafter ist auf daraus ausgelegt, dass du dir die Items durch eine Werferanlage zudroppen lässt. Bitte übertreibe es nicht und baue mit Rücksicht auf die Serverleistung keine zu großen Werferanlagen.

### Optisch dargestellte Plotgrenzen auf CB Nature und Extreme
Die Plotgrenzen auf den beiden Natur-CBs können mit Linien grafisch dargestellt werden. Die Darstellung lässt sich bei Bedarf über einen Hotkey ein- und ausschalten.
Die Plotgrenzen auf den beiden Natur-CBs können mit Linien grafisch dargestellt werden. Die Darstellung lässt sich bei Bedarf über einen Hotkey ein- und ausschalten und optisch anpassen.

### Automatische Trichtereinstellung
Wenn du eine Vielzahl an Trichtern einstellen musst, kannst du die gewünschten Einstellungen festlegen. Sobald du dann ein Trichtermenü öffnest, werden je nach Einstellung Filteritem, Einsaugradius, Stackgröße und Schlussaktion, wie die Verbindung mit einem anderen Trichter automatisch vorgenommen. Du kannst außerdem festlegen, dass du bei Rechtsklick auf einen Trichter automatisch sneakst.
Expand Down Expand Up @@ -67,6 +70,9 @@ Dieses Widget zeigt dir eine Liste von Spielern in deiner unmittelbaren Umgebung
Validierung von Zahlungen
Bei eingehenden Zahlungen wird überprüft, ob es eine echte Zahlung, oder Fake Money ist. Hinter der Zahlung siehst du eine entsprechende Nachricht.

### /msg in Tabs
Bei der Chatkommunikation mit Spielern wird automatisch für jeden Spieler ein eigener Chat Tab angelegt. Dies verbessert nicht nur den Überblick, sondern erleichtert auch das Versenden von Nachrichten, da das Voranstellen von /r oder /msg <Name> nicht mehr nötig ist. Solange ein Tab mit einem Spielernamen geöffnet ist, werden Nachrichten immer an die entsprechende Person gesendet. Dies verhindert auch, dass Nachrichten an die falsche Person gesendet werden, wenn man mit /r antwortet und man vor dem Absenden eine Nachricht einer anderen Person erhält. Befehle beginnend mit "/" können funktionieren auch wenn ein /msg Tab geöffnet ist. Diese werden nicht als msg versendet.

### Autokorrektur
Die Autokorrektur verhindert die gängigsten Rechtschreibfehler. Gibst du z.B. "7msg AbgegrieftHD Hallo" ein, wird das 7msg durch ein /msg ersetzt, sodass die Nachricht ankommt und nicht im Chat erscheint.

Expand Down
12 changes: 2 additions & 10 deletions api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,13 @@ plugins {

dependencies {
labyApi("api")

// If you want to use external libraries, you can do that here.
// The dependencies that are specified here are loaded into your project but will also
// automatically be downloaded by labymod, but only if the repository is public.
// If it is private, you have to add and compile the dependency manually.
// You have to specify the repository, there are getters for maven central and sonatype, every
// other repository has to be specified with their url. Example:
// maven(mavenCentral(), "org.apache.httpcomponents:httpclient:4.5.13")
}

labyModProcessor {
referenceType = net.labymod.gradle.core.processor.ReferenceType.INTERFACE
}

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
}

group = "tmb.randy"
version = "1.2.1"
version = "1.3"

java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))

Expand Down Expand Up @@ -71,7 +71,7 @@ fun configureRun(provider: net.labymod.gradle.core.minecraft.provider.VersionPro

provider.javaVersion = when (gameVersion) {
else -> {
JavaVersion.VERSION_17
JavaVersion.VERSION_21
}
}

Expand Down
4 changes: 2 additions & 2 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ labyModProcessor {
}

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ public class AutoCrafterSubConfig extends Config {
@MultiKeyBindSetting
private final ConfigProperty<Key[]> autoCompHotkey = new ConfigProperty<>(new Key[]{Key.ARROW_LEFT, Key.ARROW_UP, Key.ARROW_RIGHT});

@MultiKeyBindSetting
private final ConfigProperty<Key[]> autoDecompHotkey = new ConfigProperty<>(new Key[]{Key.ARROW_LEFT, Key.ARROW_DOWN, Key.ARROW_RIGHT});

public ConfigProperty<QueueType> getAutoCraftSpeed() { return this.autoCraftSpeed; }
public ConfigProperty<Boolean> getAutoDrop() {
return this.autoDrop;
Expand All @@ -42,4 +45,6 @@ public ConfigProperty<Boolean> getEndlessMode() {
public ConfigProperty<AutoCrafterNewFinalAction> getFinalAction() { return finalAction; }

public ConfigProperty<Key[]> getAutoCompHotkey() {return autoCompHotkey;}

public ConfigProperty<Key[]> getAutoDecompHotkey() {return autoDecompHotkey;}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package tmb.randy.tmbgriefergames.core.config;

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.client.gui.screen.widget.widgets.input.TextFieldWidget.TextFieldSetting;
import net.labymod.api.client.gui.screen.widget.widgets.input.dropdown.DropdownWidget.DropdownSetting;
import net.labymod.api.configuration.loader.Config;
import net.labymod.api.configuration.loader.annotation.SpriteSlot;
import net.labymod.api.configuration.loader.property.ConfigProperty;
Expand Down Expand Up @@ -41,6 +40,10 @@ public class ChatSubConfig extends Config {
@SpriteSlot(size = 21, x = 1, y = 2)
private final ConfigProperty<Boolean> muteStreamer = new ConfigProperty<>(false);

@SpriteSlot(size = 21, y = 3)
@SwitchSetting
private final ConfigProperty<Boolean> msgTabMode = new ConfigProperty<>(true);



public ConfigProperty<Boolean> getTypeCorrection() {
Expand All @@ -57,4 +60,5 @@ public ConfigProperty<Boolean> getHideNews() {
public ConfigProperty<Boolean> getCleanChat() {return this.cleanChat;}
public ConfigProperty<Boolean> getHideEmptyLines() {return this.hideEmptyLines;}
public ConfigProperty<Boolean> getMuteStreamer() {return this.muteStreamer;}
public ConfigProperty<Boolean> getMsgTabMode() {return msgTabMode;}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package tmb.randy.tmbgriefergames.core.config;

import net.labymod.api.client.gui.screen.key.Key;
import net.labymod.api.client.gui.screen.widget.widgets.input.KeybindWidget.KeyBindSetting;
import net.labymod.api.client.gui.screen.widget.widgets.input.MultiKeybindWidget.MultiKeyBindSetting;
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.client.gui.screen.widget.widgets.input.color.ColorPickerWidget.ColorPickerSetting;
import net.labymod.api.configuration.loader.Config;
import net.labymod.api.configuration.loader.annotation.ParentSwitch;
import net.labymod.api.configuration.loader.property.ConfigProperty;
Expand All @@ -24,6 +24,10 @@ public class NatureSubConfig extends Config {
@SwitchSetting
private final ConfigProperty<Boolean> borderMaxHeight = new ConfigProperty<>(false);

@SwitchSetting
private final ConfigProperty<Boolean> rainbow = new ConfigProperty<>(true);
@ColorPickerSetting
private final ConfigProperty<Integer> borderColor = new ConfigProperty<>(1);


public ConfigProperty<Boolean> getShowBorders() { return this.showBorders; }
Expand All @@ -37,5 +41,6 @@ public ConfigProperty<Float> getBorderheight() {
public ConfigProperty<Boolean> getBorderMaxHeight() {
return this.borderMaxHeight;
}

public ConfigProperty<Boolean> getRainbow() {return rainbow;}
public ConfigProperty<Integer> getBorderColor() {return borderColor;}
}
17 changes: 16 additions & 1 deletion core/src/main/resources/assets/tmbgriefergames/i18n/de_de.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@
},
"hotkey": {
"name": "Hotkey"
},
"rainbow": {
"name": "Farbwechsel"
},
"borderColor": {
"name": "Farbe"
}
},
"hopperSubConfig": {
Expand Down Expand Up @@ -90,6 +96,9 @@
"muteStreamer": {
"name": "Streamer Nachrichten entfernen",
"description": "Entfernt die Chat Benachrichtigungen, wenn Streamer live gehen."
},
"msgTabMode": {
"name": "/msg in Tabs"
}
},
"itemProtection": {
Expand Down Expand Up @@ -119,7 +128,7 @@
"name": "Lobby überspringen"
},
"autoCrafterConfig": {
"name": "Autocrafter & Autokomprimierer",
"name": "Autocrafter & Auto(de)komprimierer",
"description": "Es gibt 2 verschiedene Autocrafter:\\n\\nV1 nutzt das Vanilla Crafting Menü (Werkbank). Lege dein Rezept in die Werkbank und speichere mit SHIFT + ENTER. Drücke anschließend ENTER, um das Rezept zu craften.\\n\\nV2 nutzt das /rezepte Menü. Lege das Item, welches du craften willst in deinen ersten Hotbar Slot. Gib anschließend /autocraft in den Chat ein. Das /rezepte Menü öffnet sich automatisch und craftet deine Items.",
"autoCraftSpeed": {
"name": "[V1] Geschwindigkeit"
Expand All @@ -140,6 +149,9 @@
},
"autoCompHotkey": {
"name": "Hotkey für Autokomprimierer"
},
"autoDecompHotkey": {
"name": "Hotkey für Autodekomprimierer"
}
}
},
Expand Down Expand Up @@ -211,6 +223,9 @@
"autoComp": {
"list": "Liste #"
},
"autoDecomp": {
"started": "Dekomprimiere..."
},
"autoCrafter": {
"recipeSaved": "Rezept gespeichert",
"active": "Endlosmodus §a§lAKTIV",
Expand Down
17 changes: 16 additions & 1 deletion core/src/main/resources/assets/tmbgriefergames/i18n/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@
},
"hotkey": {
"name": "hotkey"
},
"rainbow": {
"name": "change colors"
},
"borderColor": {
"name": "color"
}
},
"hopperSubConfig": {
Expand Down Expand Up @@ -93,6 +99,9 @@
"muteStreamer": {
"name": "remove streamer messages",
"description": "removes the messages that appear, when a streamer goes live."
},
"msgTabMode": {
"name": "/msg in tabs"
}
},
"itemProtection": {
Expand All @@ -119,7 +128,7 @@
"description": "Go to the previous plot (/p h <player> -1)"
},
"autoCrafterConfig": {
"name": "Auto-crafter & auto-compressor",
"name": "Auto-crafter & auto-(de)compressor",
"description": "There are 2 different Autocrafters:\n\nV1 uses the Vanilla Crafting menu (Workbench). Place your recipe in the Workbench and save with SHIFT + ENTER. Then press ENTER to craft the recipe.\n\nV2 uses the /recipes menu. Place the item you want to craft in your first hotbar slot. Then type /autocraft in the chat. The /recipes menu will open automatically and craft your items.",
"autoCraftSpeed": {
"name": "[V1] Speed"
Expand All @@ -140,6 +149,9 @@
},
"autoCompHotkey": {
"name": "Hotkey for auto-compressor"
},
"autoDecompHotkey": {
"name": "Hotkey for auto-decompressor"
}
}
},
Expand Down Expand Up @@ -211,6 +223,9 @@
"autoComp": {
"list": "list #"
},
"autoDecomp": {
"started": "decompressing..."
},
"autoCrafter": {
"recipeSaved": "Recipe saved",
"active": "Endless mode §a§ACTIVE",
Expand Down
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.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public void messageReceived(ChatReceiveEvent event) {
for (Account account : LabyMod.getInstance().getAccountManager().getAccounts()) {
String name = account.getUsername();
if(event.chatMessage().getPlainText().endsWith(name + " möchte sich zu dir teleportieren.") || event.chatMessage().getPlainText().endsWith(name + " möchte, dass du dich zu der Person teleportierst.")) {
Laby.labyAPI().minecraft().chatExecutor().chat("/tpaccept");
VersionisedBridge.sendCommand("/tpaccept");
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ private enum STATE {
private int cooldown;
private final LinkedList<Click> toSend = new LinkedList<>();
private Item itemToCraft;
private int subIDtoCraft = 0;
private STATE currentState = STATE.OPEN_RECEIPTS;
private boolean active;

Expand All @@ -54,7 +55,7 @@ public void onTickEvent(GameTickEvent event) {
currentState = STATE.OPEN_CRAFT_PAGE;
}
} else {
Minecraft.getMinecraft().player.sendChatMessage("/rezepte");
VersionisedBridge.sendCommand("/rezepte");
}
}
case OPEN_CRAFT_PAGE -> {
Expand Down Expand Up @@ -84,6 +85,7 @@ public void onTickEvent(GameTickEvent event) {
case CRAFT -> {
if(itemToCraft == null) {
itemToCraft = Minecraft.getMinecraft().player.openContainer.getSlot(25).getStack().getItem();
subIDtoCraft = Minecraft.getMinecraft().player.openContainer.getSlot(25).getStack().getMetadata();
}

if(getSlotCountOfItemInInventory() >= 27) {
Expand Down Expand Up @@ -121,7 +123,7 @@ public void onTickEvent(GameTickEvent event) {
Minecraft.getMinecraft().player.closeScreen();
currentState = STATE.OPEN_RECEIPTS;
} else {
ClickManager.getSharedInstance().dropItemsFromInventory(itemToCraft, true);
ClickManager.getSharedInstance().dropItemsFromInventory(itemToCraft, subIDtoCraft, true);
}
}
}
Expand Down Expand Up @@ -258,6 +260,7 @@ public void startCrafter() {
active = true;
if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(0).isEmpty()) {
itemToCraft = Minecraft.getMinecraft().player.inventory.getStackInSlot(0).getItem();
subIDtoCraft = Minecraft.getMinecraft().player.inventory.getStackInSlot(0).getMetadata();
}
currentState = STATE.OPEN_RECEIPTS;
}
Expand All @@ -266,6 +269,7 @@ public void startCrafter() {
public void stopCrafter() {
active = false;
itemToCraft = null;
subIDtoCraft = 0;
currentState = STATE.OPEN_RECEIPTS;
}

Expand All @@ -278,7 +282,7 @@ private void click(int slot) {
private int getSlotCountOfItemInInventory() {
int count = 0;
for (ItemStack itemStack : Minecraft.getMinecraft().player.inventory.mainInventory) {
if(itemStack.getItem().equals(itemToCraft)) {
if(itemStack.getItem().equals(itemToCraft) && itemStack.getMetadata() == subIDtoCraft) {
count++;
}
}
Expand All @@ -290,7 +294,7 @@ private int getSlotForItemToCraft() {
for (int i = 54; i < slotCount; i++) {
ItemStack stack = Minecraft.getMinecraft().player.openContainer.getSlot(i).getStack();
if(!stack.isEmpty()) {
if(stack.getItem().equals(itemToCraft)) {
if(stack.getItem().equals(itemToCraft) && stack.getMetadata() == subIDtoCraft) {
return i;
}
}
Expand Down
Loading

0 comments on commit 7da0352

Please sign in to comment.