added Container Viewer

This commit is contained in:
Cloudburst
2021-06-04 20:39:36 +02:00
parent 8df32e28bd
commit 414a2f3bf0
2 changed files with 105 additions and 0 deletions

View File

@@ -59,6 +59,7 @@ public class MeteorRejectsAddon extends MeteorAddon {
HUD hud = modules.get(HUD.class); HUD hud = modules.get(HUD.class);
hud.elements.add(new AppleHud(hud)); hud.elements.add(new AppleHud(hud));
hud.elements.add(new ContainerViewerHud(hud));
hud.elements.add(new CrystalHud(hud)); hud.elements.add(new CrystalHud(hud));
hud.elements.add(new ExpHud(hud)); hud.elements.add(new ExpHud(hud));
} }

View File

@@ -0,0 +1,104 @@
package cloudburst.rejects.hud;
import com.mojang.blaze3d.systems.RenderSystem;
import minegame159.meteorclient.rendering.Matrices;
import minegame159.meteorclient.settings.*;
import minegame159.meteorclient.systems.modules.render.hud.HUD;
import minegame159.meteorclient.systems.modules.render.hud.HudRenderer;
import minegame159.meteorclient.systems.modules.render.hud.modules.HudElement;
import minegame159.meteorclient.utils.Utils;
import minegame159.meteorclient.utils.render.RenderUtils;
import minegame159.meteorclient.utils.render.color.Color;
import net.minecraft.block.ChestBlock;
import net.minecraft.block.ShulkerBoxBlock;
import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
public class ContainerViewerHud extends HudElement {
private static final Identifier TEXTURE = new Identifier("meteor-client", "textures/container.png");
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting<Double> scale = sgGeneral.add(new DoubleSetting.Builder()
.name("scale")
.description("Scale of inventory viewer.")
.defaultValue(3)
.min(0.1)
.sliderMin(0.1)
.max(10)
.build()
);
private final Setting<Boolean> echestNoItem = sgGeneral.add(new BoolSetting.Builder()
.name("echest-when-empty")
.description("Display contents of ender chest if not holding any other container")
.defaultValue(true)
.build()
);
private final ItemStack[] inventory = new ItemStack[9 * 3];
public ContainerViewerHud(HUD hud) {
super(hud, "container-viewer", "Displays containers.", false);
}
@Override
public void update(HudRenderer renderer) {
box.setSize(176 * scale.get(), 67 * scale.get());
}
@Override
public void render(HudRenderer renderer) {
double x = box.getX();
double y = box.getY();
ItemStack container = getContainer();
if (container == null) return;
drawBackground((int) x, (int) y, container);
Utils.getItemsInContainerItem(container, inventory);;
for (int row = 0; row < 3; row++) {
for (int i = 0; i < 9; i++) {
ItemStack stack = inventory[row * 9 + i];
if (stack == null) continue;
RenderUtils.drawItem(stack, (int) (x + (8 + i * 18) * scale.get()), (int) (y + (7 + row * 18) * scale.get()), scale.get(), true);
}
}
}
private ItemStack getContainer() {
if (isInEditor()) return Items.ENDER_CHEST.getDefaultStack();
ItemStack item = mc.player.inventory.getMainHandStack();
if (!(item.getItem() instanceof BlockItem)) item = mc.player.getOffHandStack();
if (item.getItem() == Items.ENDER_CHEST) return item;
if (!(item.getItem() instanceof BlockItem)) return echestNoItem.get()?Items.ENDER_CHEST.getDefaultStack():null;
if (((BlockItem)item.getItem()).getBlock() instanceof ShulkerBoxBlock) return item;
if (((BlockItem)item.getItem()).getBlock() instanceof ChestBlock) return item;
return echestNoItem.get()?Items.ENDER_CHEST.getDefaultStack():null;
}
private void drawBackground(int x, int y, ItemStack container) {
int w = (int) box.width;
int h = (int) box.height;
Color color = Utils.getShulkerColor(container);
RenderSystem.color4f(color.r / 255F, color.g / 255F, color.b / 255F, color.a / 255F);
mc.getTextureManager().bindTexture(TEXTURE);
DrawableHelper.drawTexture(Matrices.getMatrixStack(), x, y, 0, 0, 0, w, h, h, w);
}
}