seppuku/src/main/java/me/rigamortis/seppuku/impl/module/render/XrayModule.java

160 lines
4.8 KiB
Java

package me.rigamortis.seppuku.impl.module.render;
import me.rigamortis.seppuku.Seppuku;
import me.rigamortis.seppuku.api.event.gui.hud.modulelist.EventUIListValueChanged;
import me.rigamortis.seppuku.api.event.render.EventRenderBlockModel;
import me.rigamortis.seppuku.api.event.render.EventRenderBlockSide;
import me.rigamortis.seppuku.api.event.world.EventSetOpaqueCube;
import me.rigamortis.seppuku.api.module.Module;
import me.rigamortis.seppuku.api.value.Value;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import team.stiff.pomelo.impl.annotated.handler.annotation.Listener;
import java.util.ArrayList;
import java.util.List;
/**
* Author Seth
* 4/9/2019 @ 12:58 PM.
*/
public final class XrayModule extends Module {
public final Value<List<Block>> blocks = new Value<List<Block>>("Ids", new String[]{"id", "i"}, "Blocks to xray for.");
private float lastGamma;
private int lastAO;
public XrayModule() {
super("Xray", new String[]{"JadeVision", "Jade"}, "Allows you to filter what the world renders", "NONE", -1, ModuleType.RENDER);
this.blocks.setValue(new ArrayList<>());
if (Seppuku.INSTANCE.getConfigManager().isFirstLaunch())
this.add("diamond_ore");
}
@Override
public void onEnable() {
super.onEnable();
final Minecraft mc = Minecraft.getMinecraft();
lastGamma = mc.gameSettings.gammaSetting;
lastAO = mc.gameSettings.ambientOcclusion;
mc.gameSettings.gammaSetting = 100;
mc.gameSettings.ambientOcclusion = 0;
}
@Override
public void onDisable() {
super.onDisable();
Minecraft.getMinecraft().gameSettings.gammaSetting = lastGamma;
Minecraft.getMinecraft().gameSettings.ambientOcclusion = lastAO;
}
@Override
public void onToggle() {
super.onToggle();
Minecraft.getMinecraft().renderGlobal.loadRenderers();
}
/**
* Deprecated
* @param event
*/
@Listener
public void shouldSideBeRendered(EventRenderBlockSide event) {
/*
if (this.contains(event.getBlock())) {
event.setRenderable(true);
}
event.setCanceled(true);
*/
}
// @Listener
// public void renderBlockModel(EventRenderBlockModel event) {
// final Block block = event.getBlockState().getBlock();
// if (this.contains(block)) {
// if (Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer().renderModelFlat(event.getBlockAccess(), event.getBakedModel(), event.getBlockState(), event.getBlockPos(), event.getBufferBuilder(), event.isCheckSides(), event.getRand())) {
// event.setRenderable(true);
// }
// }
// event.setCanceled(true);
// }
@Listener
public void setOpaqueCube(EventSetOpaqueCube event) {
event.setCanceled(true);
}
@Listener
public void onUIListValueChanged(EventUIListValueChanged event) {
this.updateRenders();
}
public void updateRenders() {
//Minecraft.getMinecraft().renderGlobal.loadRenderers();
final Minecraft mc = Minecraft.getMinecraft();
mc.renderGlobal.markBlockRangeForRenderUpdate(
(int) mc.player.posX - 256,
(int) mc.player.posY - 256,
(int) mc.player.posZ - 256,
(int) mc.player.posX + 256,
(int) mc.player.posY + 256,
(int) mc.player.posZ + 256);
}
public boolean contains(Block block) {
return this.blocks.getValue().contains(block);
}
public void add(int id) {
final Block blockFromID = Block.getBlockById(id);
if (!contains(blockFromID)) {
this.blocks.getValue().add(blockFromID);
}
}
public void add(String name) {
final Block blockFromName = Block.getBlockFromName(name);
if (blockFromName != null) {
if (!contains(blockFromName)) {
this.blocks.getValue().add(blockFromName);
}
}
}
public void remove(int id) {
for (Block block : this.blocks.getValue()) {
final int blockID = Block.getIdFromBlock(block);
if (blockID == id) {
this.blocks.getValue().remove(block);
break;
}
}
}
public void remove(String name) {
final Block blockFromName = Block.getBlockFromName(name);
if (blockFromName != null) {
if (contains(blockFromName)) {
this.blocks.getValue().remove(blockFromName);
}
}
}
public int clear() {
final int count = this.blocks.getValue().size();
this.blocks.getValue().clear();
return count;
}
public Value<List<Block>> getBlocks() {
return blocks;
}
}