Hello everyone, i'm new with programing Mods, and will need a lot of your help if possible, 
 
	Im trying to make a new GUI interface responsible to control the Droprate of game, it will control de loot drop and loot table for mobs and even blocks, but i try to make a simple Gui Screen, and wenever i try to use it, the game crash's with the error message in the subject, here is the code im using to:  
	 
	IDE: IntelliJ Comunity - latest version 
	Forge: 47.3.0 
	Minecraft version: 1.20.1 
	mapping_channel: parchment
 
	mapping_version=2023.09.03-1.20.1
 
	Crash report link: https://pastebin.com/6dV8k1Fw
 
	 
 
	Code im using is: 
 
	 
 
package createchronical.droprateconfig;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import java.util.HashMap;
import java.util.Map;
public class ConfigScreen extends Screen {
    private static final ResourceLocation BACKGROUND_TEXTURE =
            new ResourceLocation("droprateconfig", "textures/gui/config_background.png");
    // Mapa de mobs e itens com seus respectivos drop rates
    private final Map<String, Integer> dropRates = new HashMap<>();
    public ConfigScreen() {
        super(Component.literal("Configurações de Drop Rate"));
        // Inicializa com valores de drop rate padrão
        dropRates.put("Zombie", 10);  // Exemplo de mob
        dropRates.put("Creeper", 5);  // Exemplo de mob
        dropRates.put("Iron Ore", 50);  // Exemplo de item
        dropRates.put("Diamond", 2);  // Exemplo de item
    }
    @Override
    protected void init() {
        // Cria um botão para cada mob/item e adiciona na tela
        int yOffset = this.height / 2 - 100; // Posicionamento inicial
        for (Map.Entry<String, Integer> entry : dropRates.entrySet()) {
            String itemName = entry.getKey();
            int dropRate = entry.getValue();
            // Cria um botão para cada mob/item
            this.addRenderableWidget(Button.builder(
                    Component.literal(itemName + ": " + dropRate + "%"),
                    button -> onDropRateButtonPressed(itemName)
            ).bounds(this.width / 2 - 100, yOffset, 200, 20).build());
            yOffset += 25; // Incrementa a posição Y para o próximo botão
        }
        // Adiciona o botão de "Salvar Configurações"
        this.addRenderableWidget(Button.builder(Component.literal("Salvar Configurações"), button -> onSavePressed())
                .bounds(this.width / 2 - 100, yOffset, 200, 20)
                .build());
    }
    private void onDropRateButtonPressed(String itemName) {
        // Lógica para alterar o drop rate do item/mob selecionado
        // Aqui, vamos apenas incrementar o valor como exemplo
        int currentRate = dropRates.get(itemName);
        dropRates.put(itemName, currentRate + 5); // Aumenta o drop rate em 5%
    }
    private void onSavePressed() {
        // Lógica para salvar as configurações (temporariamente apenas na memória)
        // Vamos apenas imprimir para verificar
        dropRates.forEach((item, rate) -> {
            System.out.println("Item: " + item + " | Novo Drop Rate: " + rate + "%");
        });
        // Fecha a tela após salvar
        Screen pGuiScreen = null;
        assert this.minecraft != null;
        this.minecraft.setScreen(pGuiScreen);
    }
    @Override
    public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) {
        this.renderBackground(guiGraphics);
        guiGraphics.blit(BACKGROUND_TEXTURE, this.width / 2 - 128, this.height / 2 - 128, 0, 0, 256, 256, 256, 256);
        super.render(guiGraphics, mouseX, mouseY, partialTicks);
    }
}