Jump to content

Recommended Posts

Posted

Forge version: 47.3.0
Minecraft version: 1.20.1

Downloads:

Intro:

This third recommended build for MC 1.20.1 offers improved performance, bugfixes, new features and various backports from newer versions such as 1.20.2, 1.20.4 and 1.20.6.

As a reminder, the release policy for recommended builds has changed - we now aim to release new recommended builds for fully supported MC versions more frequently - as long as there's a reasonable amount of changes since last recommended build. 

New:

  • Add a CrashReportAnalyser that tries to identify the mod that crashed the game
    • This feature scans your crash report as it is being generated and lists suspected mods that could be the cause of the crash, accounting for coremodding as well.
    • This makes it easier to find the culprit as it is often listed clearly in the crash report itself (e.g. "Suspected mods: buggymod")
  • Improve mod loading error message for errors inside mod constructors (#9751)
    • No longer shows a vague error if the error happens inside a constructor - Forge now tells you the actual error
  • Optimise registries by using fastutils collections to minimize boxing. (#9749)
  • Datagen addOptionalTag/s methods that allow passing the TagKey itself instead of passing the location (#9807)
  • Optimise Forge's config system, backport of #9810 (#9824)
  • Make common DisplayTest registration tasks easier, backport of #9822 (#9823)
    • Before: 
      ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> "ANY", (remote, isServer) -> true));
    • After: 
      ModLoadingContext.get().registerDisplayTest(IExtensionPoint.DisplayTest.IGNORE_ALL_VERSION);
    • The old method still works for backwards-compatibility. The new method has also been backported to 1.19.4, 1.19.2 and 1.18.2.
  • Add support for running with Java 22 and 23 
  • Add ASMAPI.MethodType.DYNAMIC in JS CoreMods (CoreMods#44)
  • Add Leaves method to ModelProvider.java (#9889)
  • Make common config screen registration tasks easier, backport of #9884 (#9912)
    • Before: 
      ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((mc, modsScreen) -> new MyConfigScreen(modsScreen));
    • After: 
      MinecraftForge.registerConfigScreen(modsScreen -> new MyConfigScreen(modsScreen));
    • The old method still works for backwards-compatibility. The new method has also been backported to 1.19.4, 1.19.2 and 1.18.2.
  • Add CPU usage config option to early window, hide by default, backport of #9866 (#9915)
    • New cleaner look, slightly improved client mod loading performance
  • Add helper method to `OnDatapackSyncEvent`, backport of #9901 (#9919)
  • Optimise capabilities, backport of #9886 (#9911)

Fixed:

  • Fix misaligned patch in RegistryDataLoader
  • Fix tag loading being unordered. Closes #9774
  • Fix rare crash with early display window, fixes #9673 (#9798)
  • Don't turn off VSync when rendering from Minecraft context (#9800)
  • Fix KeyModifiers not being properly taken into account. Closes #9806
  • Rework KeyModifiers system to properly allow keybinds to be triggered when multiple modifiers are pressed.
    • Fix setting keybinds while using keyboard inputs to select the menu. Closes #9793
  • Fix LoadingErrorScreen inner headers are not centered. Closes #9687
  • Fix TagLoader error not printing tag name correctly. Closes #9693
  • Fix fire related mobs not taking enough freezing damage. Closes #9686
  • Fix missing patch for Item.onInventoryTick. Closes #9812
  • Fix ASMAPI.getSystemPropertyFlag() not working as expected (CoreMods#45)
  • Fix slightly offset mods screen link positioning, backport of #9860 (#9861)
  • Fix NPE when acceptableValues in defineInList() does not allow nulls, backport of #9903 (#9907)
  • Prevent mixins from crashing the game when there are missing mods, backport of the same fix for 1.20.4 (#9916)
  • Fix early window crash when parsing options.txt, backport of #9933 (#9934)
  • Fix erroneous patch in FireBlock. Closes #9996
  • Fix LevelSettings ignoring data configuration. Closes #9938

 

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • the modpack keep crashing idk why,cause it never said anything about any mods causing it. crash log:https://drive.google.com/file/d/1iYKlUgvHUob8DjyRc3gqP_Viv_kSHO6L/view?usp=sharing mod list:https://drive.google.com/file/d/1MvMT-z9Jg2BITQ4uLshJ1uOh7q9EMBfC/view?usp=sharing but the server(anternos) works just fine
    • Hello, I am trying to make 2 recipes for a ruby. The first one is turning a block into a ruby and the other one is 9 nuggets into a ruby. But I keep on getting a error java.lang.IllegalStateException: Duplicate recipe rubymod:ruby   Any help would be great on how to fix it
    • 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); } }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.