I have been trying to create a Player ESP, Block ESP, and Tracers for a while, I've tried many different methods, but every single method I try just throws an error. I need a way to render blocks or display a green overlay through blocks.
I also need a way to see players through blocks. All of the different methods of getting a position x,y cords on the screen, or even trying to render certain things after other things, but no matter what I try it either gives x,y cords that aren't on the screen or it just throws these unfixable errors.
If possible when showing an example follow this class setup:
public class BasicModule {
    private String name;
    private String description;
    private List<Setting> settings = new ArrayList<>();
    public boolean SToggle;
    public List<Setting> getSettings() {
        return settings;
    }
    public void addSetting(Setting setting) {
        settings.add(setting);
    }
    public void addSettings(Setting... settings) {
        this.settings.addAll(List.of(settings));
    }
    private Category category;
    private int key;
    private String displayName;
    private boolean enabled;
    protected Minecraft mc = Minecraft.getInstance();
    public BasicModule(String name, String description, Category category) {
        this.name = name;
        this.displayName = name;
        this.description = description;
        this.category = category;
        this.SToggle = false;
    }
    public void toggle() {
        this.enabled = !this.enabled;
        if (this.enabled) {
            this.onEnable();
        } else {
            this.onDisable();
        }
    }
    public static void doEnabled(BasicModule module, boolean enabled) {
        module.setEnabled(enabled);
    }
    public static void setE(boolean enabled) {
        enabled = enabled;
    }
    public void setModuleEnabled(boolean enabled) {
        this.enabled = enabled;
    }
    public boolean isModuleEnabled() {
        return this.enabled;
    }
    public void onEnable() {
    }
    public void onDisable() {
    }
    public String getDisplayName() {
        return this.displayName;
    }
    public boolean getStoggle() {
        return this.SToggle;
    }
    public void setStoggle(boolean stoggle) {
        this.SToggle = stoggle;
    }
    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }
    public void onTick() {
        this.enabled = enabled;
    }
    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
        if (enabled) onEnable();
        else onDisable();
    }
    public boolean isEnabled() {
        return this.enabled;
    }
    public String getName() {
        return name;
    }
    public String getDescription() {
        return description;
    }
    public Category getCategory() {
        return category;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public int getKey() {
        return key;
    }
    public void setKey(int key) {
        this.key = key;
    }
    public void render(GuiGraphics drawContext, float tickDelta) {
    }
    public enum Category {
        PVP("PvP"),
        MOVEMENT("Movement"),
        RENDER("Render"),
        STAFF("Staff"),
        DEV("Developer");
        public String name;
        private Category(String name) {
            this.name = name;
        }
    }
}