- Joined
- Jul 11, 2020
- Messages
- 0
- Reaction score
- 25
- Points
- 0
Hallo, hat nen guten InvCleaner, wie in Necrum, für mich?
package net.minecraft.inventory;
public enum ClickType
{
PICKUP,
QUICK_MOVE,
SWAP,
CLONE,
THROW,
QUICK_CRAFT,
PICKUP_ALL;
}
package me.dukeson.calum.mod.mods;
import me.dukeson.calum.mod.Mod;
import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.inventory.ClickType;
import net.minecraft.item.*;
import java.util.ArrayList;
import java.util.Random;
/**
* Created by Dukeson on 27.01.2017.
*/
public class InvHelper extends Mod {
private static Random random = new Random();
// private boolean sorted = false;
private ArrayList<Integer> uselessItems = new ArrayList<>();
private ArrayList<Item> items = new ArrayList<>();
// private ArrayList<Integer> stackAbleSlot = new ArrayList<>();
private long lastClick = 0;
//Diese Werte kannst du nach Belieben ändern.
private int delay = 200;
private boolean dropWholeStack = true;
private boolean instant = false;
private boolean dubOnly = true;
public InvHelper() {
super("InvCleaner", "J", 0x00ff88, Category.SCRIPT);
}
public void update() {
if (!(mc.currentScreen instanceof GuiInventory)) {
// sorted = false;
return;
}
uselessItems.clear();
// stackAbleSlot.clear();
// if (!sorted) {
// findStackAbleItems();
// if (!stackAbleSlot.isEmpty()) {
// if (lastClick + delay < System.currentTimeMillis()) {
// lastClick = System.currentTimeMillis();
// mc.playerController.windowClick(mc.player.inventoryContainer.windowId, stackAbleSlot.get(0), 0 , ClickType.PICKUP, mc.player);
// mc.playerController.windowClick(mc.player.inventoryContainer.windowId, stackAbleSlot.get(1), 0, ClickType.PICKUP, mc.player);
// }
// } else {
// sorted = true;
// }
// return;
// }
findUselessItems();
if (!uselessItems.isEmpty()){
if (instant) {
for (int i : uselessItems) {
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, i, 1, ClickType.THROW, mc.player);
}
} else if (lastClick + delay < System.currentTimeMillis()) {
lastClick = System.currentTimeMillis();
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, uselessItems.get(random.nextInt(uselessItems.size())), dropWholeStack ? 1 : 0, ClickType.THROW, mc.player);
}
}
}
/**
* Werte für i:
* 0 - 1.Slot in der Hotbar, links
* 1-7 - Hotbar Slots
* 8 - letzter Slot in der Hotbar, rechts
* 9-35 Inventar
* 36-39 RüstungsSlots
* 40 zweite Hand
*/
private void findUselessItems() {
if (dubOnly) items.clear();
for (int i = 0; i < 41; i++) {
if (i >= 0 && i <= 8) continue;
if (i >= 36 && i <= 39) continue;
if (i == 40) continue;
ItemStack itemStack = mc.player.inventory.getStackInSlot(i);
if (itemStack != null && !stackIsUseful(itemStack)) {
if (dubOnly) {
if (items.contains(itemStack.getItem())) uselessItems.add(i);
items.add(itemStack.getItem());
} else {
uselessItems.add(i);
}
}
}
}
private boolean stackIsUseful(ItemStack itemStack) {
if (Item.getIdFromItem(itemStack.getItem()) == 0) return true; //air um leere slots zu skippen
if (Item.getIdFromItem(itemStack.getItem()) == 30) return true; //cobweb
if (Item.getIdFromItem(itemStack.getItem()) == 258) return true; //iron axe
if (Item.getIdFromItem(itemStack.getItem()) == 259) return true; //flint & steel
if (Item.getIdFromItem(itemStack.getItem()) == 260) return true; //apple
if (Item.getIdFromItem(itemStack.getItem()) == 261) return true; //bow
if (Item.getIdFromItem(itemStack.getItem()) == 262) return true; //arrow
if (Item.getIdFromItem(itemStack.getItem()) == 264) return true; //diamond
if (Item.getIdFromItem(itemStack.getItem()) == 265) return true; //iron
if (Item.getIdFromItem(itemStack.getItem()) == 279) return true; //diamond axe
if (Item.getIdFromItem(itemStack.getItem()) == 282) return true; //mushroom stew
if (Item.getIdFromItem(itemStack.getItem()) == 297) return true; //bread
if (Item.getIdFromItem(itemStack.getItem()) == 320) return true; //cooked porkchop
if (Item.getIdFromItem(itemStack.getItem()) == 322) return true; //golden apple
if (Item.getIdFromItem(itemStack.getItem()) == 346) return true; //fishing rod
if (Item.getIdFromItem(itemStack.getItem()) == 364) return true; //steak
if (Item.getIdFromItem(itemStack.getItem()) == 366) return true; //cooked chicken
if (Item.getIdFromItem(itemStack.getItem()) == 384) return true; //bottle o' enchanting
if (Item.getIdFromItem(itemStack.getItem()) == 412) return true; //cooked rabbit
if (Item.getIdFromItem(itemStack.getItem()) == 424) return true; //cooked mutton
if (Item.getIdFromItem(itemStack.getItem()) == 442) return true; //shield
if (Item.getIdFromItem(itemStack.getItem()) == 443) return true; //elytra
if (itemStack.getItem() instanceof ItemArmor) return true;
if (itemStack.getItem() instanceof ItemSword) return true;
if (itemStack.getItem() instanceof ItemPotion) return true;
if (itemStack.getItem() instanceof ItemFlintAndSteel) return true;
if (itemStack.getItem() instanceof ItemEnderPearl) return true;
return false;
}
// private void findStackAbleItems() {
// for (int i = 0; i < 41; i++) {
// if (i >= 0 && i <= 8) continue;
// if (i >= 36 && i <= 39) continue;
// if (i == 40) continue;
// ItemStack itemStack = mc.player.inventory.getStackInSlot(i);
// if (itemStack != null
// && itemStack.getMaxStackSize() > itemStack.getCount()
// && !(itemStack.getItem() instanceof ItemAir)) {
// for (int i2 = 0; i2 < 41; i2++) {
// if (i2 >= 36 && i2 <= 39) continue;
// if (i2 == i) continue;
// ItemStack itemStack2 = mc.player.inventory.getStackInSlot(i2);
// if (itemStack2.getMaxStackSize() > itemStack2.getCount()) {
// if (itemStack.getItem().equals(itemStack2.getItem())) {
// if (!stackAbleSlot.contains(i2)) stackAbleSlot.add(i2);
// if (!stackAbleSlot.contains(i)) stackAbleSlot.add(i);
// }
// }
// }
// }
// }
// }
}
Ja bitte, das wäre nettIch bin gerade dabei einen zu schreiben, wenn du willst verlinke ich dich einfach beim Release
Um die Items im Inv zu vergleichen lmao lol roflWas bringt dir da'n Comparator lmao
Wie du wieder mal nichts checkst....Und bevor du weiter hier so'n Bullshit verbreitest der vielleicht die Noobs verwirrt, Objekte vergleichen tut man mit .equals(Object o).
Und falls man die Item ID's abgleichen möchte reicht ==. Gehört zu den simpelsten Java Basics und wird in vielen anderen Programmiersprachen ähnlich gemacht (bezogen jetzt auf den Operator).
Ein Comparator nimmt zwei Objekte an und vergleicht sie.Und bevor du weiter hier so'n Bullshit verbreitest der vielleicht die Noobs verwirrt, Objekte vergleichen tut man mit .equals(Object o).
Und falls man die Item ID's abgleichen möchte reicht ==. Gehört zu den simpelsten Java Basics und wird in vielen anderen Programmiersprachen ähnlich gemacht (bezogen jetzt auf den Operator).
Wie du wieder mal nichts checkst....
Ein Comparator für das Inventar könnte zum Beispiel nach der Anzahl der Items vergleichenDu weißt aber schon was ein Comparator ist?
Das fasse ich mal als Sarkasmus aufMagst du mir ein Beispiel geben? Kann kein Java und würde mich halt legit darüber freuen
So schwer zu verstehen?"Nach der Anzahl der Items"
Nochmal verständlich bitte?
Ein Comparator für das Inventar könnte zum Beispiel nach der Anzahl der Items vergleichen
Meine das schon ernst, kenne Comparator halt nicht :/Das fasse ich mal als Sarkasmus auf
Müssen wir uns jetzt ernsthaft wegen so etwas unnötigem streiten?Inhaltlich ist der Satz komplett unverständlich, brauchst noch n Rating wie unverständlich genau?
In Java gibt es zwei unterschiedliche Schnittstellen, mit denen man Vergleiche stellen kann:Meine das schon ernst, kenne Comparator halt nicht :/
Es geht einfach darum, dass du dich immer einmischt, weil du denkst du müsstest überall mitwirken.Wieso streiten ich versuchte lediglich zu verhindern, dass du unnötig Anfänger verwirrst mit deinem Bullshit.
Genau das meine ichOch nein bitte hör auf mit deinem Halbwissen.
Genau das meine ich
Einfach nur unnötiger Beitrag, der nichts anderes bewirken soll, als mich zu provozieren und dich als "Java Experte" hinzustellen.
Einfach nur traurig
Und schon wieder, du merkst es halt gar nicht ....Nö wenn du mitredest solltest du dich ein wenig mit der Materie auseinander gesetzt haben, das alles.
Ich weiß sehr wohl, wie Vergleichsklassen fungieren, aber danke für den hilfreichen BeitragEs geht einfach nur darum das du nicht zur Genze verstanden hast wozu Comparators verwendet werden (können).