Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

[Request] InvCleaner

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Hallo, hat nen guten InvCleaner, wie in Necrum, für mich?
 
Ich bin gerade dabei einen zu schreiben, wenn du willst verlinke ich dich einfach beim Release :)

@Doritoboyxxxx
Hier als Edit damit man den Spaß auch finden kann^^
Hier jetzt einfach mal ein einfacher InvCleaner, wie du wolltest. Das ganze ist jetzt auf der 1.11.2 geschrieben, aber bis auf das du aus mc.player mc.thePlayer machen musst und die ClickTypes in Integers ändern musst, sollte wohl auch alles auf den anderen Versionen funktionieren. Dazu habe ich noch ein Feature begonnen,welches ItemStacks die stapelbar sind stapel soll. Hier ist das ganze auskommentiert.

Die Item Ids solltest du selbst noch überprüfen und eventuell noch abändern. Kann nur
http://minecraft-ids.grahamedgecombe.com/ empfehlen.

[HIDE-THANKS]
Vlt. hilfts ja :) Sollte in der gleichen Reihenfolge sein, aber idk..
Code:
package net.minecraft.inventory;

public enum ClickType
{
    PICKUP,
    QUICK_MOVE,
    SWAP,
    CLONE,
    THROW,
    QUICK_CRAFT,
    PICKUP_ALL;
}

update() kannst du mit deinem onUpdate ersetzen. Habe so eine Methode einfach nicht :)

Code:
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);
//                        }
//                    }
//                }
//            }
//        }
//    }
}
[/HIDE-THANKS]
 
Last edited by a moderator:
Es gibt Methoden, mit denen kannst du Items (Objekte) im Inventar vergleichen. Probiere es mal mit dem Comparator aus.
 
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....

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.
 
Last edited by a moderator:
Wie du wieder mal nichts checkst....

Wie alt bist du? Und du solltest wirklich aufhören dein Halbwissen zu verbreiten und anfangen dich ernsthaft über deine Interessengebiete zu informieren.
 
Magst du mir ein Beispiel geben? Kann kein Java und würde mich halt legit darüber freuen :)
 
Meine das schon ernst, kenne Comparator halt nicht :/
In Java gibt es zwei unterschiedliche Schnittstellen, mit denen man Vergleiche stellen kann:
Comparable und Comparator.
Mit Comparable können sich die Objekte selbst mit anderen Objekten vergleichen.
Comparator nimmt zwei Objekte an und vergleicht sie.
 
Wieso streiten ich versuchte lediglich zu verhindern, dass du unnötig Anfänger verwirrst mit deinem Bullshit.
Es geht einfach darum, dass du dich immer einmischt, weil du denkst du müsstest überall mitwirken.
Du bist dich der Materie einigermaßen bewusst, das bestreite ich gar nicht, aber immer und immer irgendwas zu kritisieren, woran inhaltlich nichts auszusetzen ist, ist einfach nur Arrogant und unnötig. Alleine das du den Fragesteller als "Anfänger" bezeichnest. Er wird selber am besten wissen, was er versteht, da musst du ihm das nicht vornehmen.
 
Och 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
 
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

Es geht einfach nur darum das du nicht zur Genze verstanden hast wozu Comparators verwendet werden (können).
 
Nö wenn du mitredest solltest du dich ein wenig mit der Materie auseinander gesetzt haben, das alles.
Und schon wieder, du merkst es halt gar nicht ....
Du stellst dich wieder als Experte hin, indem du schreibst "mitreden"... Wie auf dem Pausenhof bei der "coolen" Clique.
 
Es geht einfach nur darum das du nicht zur Genze verstanden hast wozu Comparators verwendet werden (können).
Ich weiß sehr wohl, wie Vergleichsklassen fungieren, aber danke für den hilfreichen Beitrag
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top