Jump to content

Recommended Posts

Posted

Forge Version: 1.8.9-11.15.1.1722

Minecraft Version: 1.8.9

Downloads:

 

We all here have been working really hard to get the new Minecraft version, having re-written a large chunk of the decompiler, rendering system, mod interactions, registry handling, and much more. We are proud to present the first Recommended build of Forge for 1.8.9. Once I get back from Pax South this week I will be going through and pushing as many bug fixes and if needed another RB. But API wise this version is fairly stable.

We have many modders who already are updating to 1.8.9, and mods that are written for 1.8.8 will work on 1.8.9 just fine.

Some of these new systems are poorly documented, because you all know I suck at writing! So if there are things you wish to know on the modding end ask in the modder support section, or IRC and people will help you and hopefully get documentation at https://github.com/MinecraftForge/Documentation

 

Minecraft Forge 11.15.1 Changelog:

============================================================================

New:


  •  
  • New event to allow overriding of fuels recognized by vanilla fuel handling.
     
  • Enabled ModList GUI in game. Allowing for configurations in-game.
     
  • New Functional IMC messages support to allow more flexible inter-mod functions.
     
  • Merged Forge and FML event bus, simplifies events for modders.
     
  • Semi-Finalized SplashProgress API. Modders can now hook in and expand the progress bars during load.
     
  • MAJOR Game Registry cleanup, more flexible code allowing for potential exposure to modders.
     
  • New JLine intergration allowing tab-completion in commands as well as color codes in server console.
     
  • New Potion Registry, slowly moving away from IDs for another registry!
     
  • Made Potion.isBadEffect server and client side.
     
  • Increased console spam when mods do STUPID things {Coremods containing APIs}
     
  • New 'onLoad' method in TileEntity called after the TileEntity is added to the world.
     
  • Added EMERALD and SILVERFISH to GenerateMineable event.
     
  • More forcibly discourage modders from using FuildIDs, they should be using FluidNames.
     
  • New hook to allow blocks to define which faces in their neighbors get culled.
     
  • New hook to allow 'invisible' potion effects that are not rendered in-inventory.
     
  • New hook in item to override it's tooltip string.
     
  • New Block.addLandingEffects hook covering falling onto blocks.
     
  • Increased new model system interaction with older models.
     
  • New universal bucket model allowing for rendering an item with any fluid. Also allows Resource pack makers control of a single texture set for most buckets.
          A config option to enable this is defaulted to False.
     
     
  • Blocks are no longer erased from the registry if the mod isn't present. This means that modded blocks can potentially retain their IDs even if they are temporarily not present in the game. Currently TileEntity data associated with the block is erased.
     
  • Added an ability to register custom item variants, not ending with "#inventory". Should allow grouping multiple item models into 1 blockstate json.
     
  • New hook to customize slime particle spawming.
     
  • New default values for @SideProxy, nested ClientProxy and ServerProxy classes.
     
  • New get/setRegistryName function for items and blocks, and GameRegistry helper functions. STOP USING UNLOCALIZED NAME!
     
  • New simple ContainedDep mechanic to allow packing jars in mods, makes DepLoader even more redundant now.
     
  • Added progress bar to ModelLoader.
     
  • Implemented face culling for Item Models, improves performance.
     
  • Made WrongMinecraftVersionException and ModSortingException a bit easier to read in log files.
     
  • SRG named mods located in the mod folder during mod devlopment time will now load correctly. Easier mod intergration!
     
  • New GuiScreenEvent.BackgroundDrawnEvent for after backgrounds are drawn.
     
  • New hook to allow sleeping without solid bed block.
     
  • Skip hang detection on server load, potentially fixing slow loading mods killing the server.
     
  • New IItemHandler capability to sanitize Item interactions with TileEntities.
     
  • New EntityTravelToDimensionEvent.
     
  • New Model Animation system!

 

Bug Fix:


  •  
  • General code cleanup and deprecation culls with new decompiler changes.
     
  • Fixed skulls not placing on fences like vanilla
     
  • Fixed Client Login Issue when logging into a non existent dimension
     
  • Fixed incorrect position passes to Block.getExplosionResistance from entities.
     
  • Fixed client side onBlockDestroted hooks to sync with server.
     
  • Fixed bold fonts rendering incorrectly.
     
  • Fixed invalid positions for isAir/getLight calls.
     
  • Fixed some issues with fir tree generation.
     
  • Fixed forge lighting working incorrectly outside 0x1000000 coordinates.
     
  • Fixed duplicate faces in generated item mods.
     
  • Fixed lever placement issues.
     
  • Fixed mods throwing AbortExceptions not properly propogating the abort.
     
  • Fixed block placement around snow layers.
     
  • Fixed large mushroom generation.
     
  • Fixed World.getTileEntitiesIn potentially loading orphaned chunks.
     
  • Fixed internal server not stopping when exiting single player.
     
  • Fixed entity selections and entities with . in names.
     
  • Fixed language adaptor loading, allowing better support for aditional mod languages.
     
  • Fixed colored leather rendering.
     
  • Fixed generated item model faces orientations.
     
  • Fixed lighting values being incorrectly calculated in edge cases.
     
  • Fixed dispensors equipting armor incorrectly.
     
  • Fixed rendering issues with custom mod armors that are enchanted.
     
  • Potential fix for Netty log spam issue.
     
  • Fixed enchanting table incorrectly applying the same ecnahntment multiple times.
     
  • Fixed model lighting in some edge cases.
     
  • Fixed NPE in MultiLayerModel.
     
  • Fixed dependency resolution for models with custom data/textures.
     
  • Fixed registry issues that prevented connecting to a 1.8 Forge server.
     
  • Fixed vanilla bug related to spawning entities on top of fences.
     
  • Fixed the channel handler naming. It now uses the standard netty namer for it, by careful use of cunning reflection.
     
  • Fixed up persistent substitution.
     
  • Fixed ItemBlock remappings in registry causing errors.
     
  • Fixed random block position offset not applying correctly.
     
  • Fixed Button/Torch/Lever placement on stairs and slabs.
     
  • Fixed Forge-Type spawn eggs not spawning baby entities correctly.
     
  • Fixed color disabeling not working on the new Forge rendering pipeline.
     
  • Fixed TESRs rendering early breaking piston rendering.
     
  • Fixed lag issue related to fluid rendering.
     
  • Updated Forge logo to higher resolution GIF.
     
  • Fixed realms notification icon rendering on Mods button.
     
  • Fixed boss health bar rendering incorrectly when debug overlay is enabled.
     
  • Fixed some cases of URL detection in commands and messages.
     
  • Fixed implementation of IRetextureableModel in ItemLayerModel.
     
  • Fixed /give visual effect entity persisiting longer then intended.
     
  • Fixed GROUND item transform not persisting in block states.
     
  • Fixed GuiWrongMinecraft having wrong Log file name.
     
  • Fixed banners not droping the correct item when harvested using modded mechanics.
     
  • Fixed problem which meant runtime deobf to MCP names wasn't working. SRG named mods located in the mods dir of a dev environment will now load normally.
     
  • Fixed issue with LAN servers and custom packets.
     
  • Fixed TileEntity.shouldRefresh invalidating default TEs to often.
     
  • Fixed missing model error reporting, made block and item variants sort before loading, to make the splash screen info more useful.
     
  • Fixed items being dropped out of a GuiContainer when dealing with a slot outside of the xSize/ySize boundaries.

 

Major New Feature:

Capability System:


  • New Capability system allowing for more manageable world object features.
     
    When combined with @Optional this should address all issues of soft dependancy on mods/apis.
    This also addresses the issue of dynamic functionality in TileEntities/Entities.
     
    Current capability providers: TileEntity, Entity, ItemStack
     
    Also added INBTSerializeable, a generic interface for game objects that can be written to/from NBT tags.
     
    Vanilla capabilities will be coming soon, mostly on request and review.
    So start requesting capabiliteis on vanilla/Forge features.
     

  • IItemHandler Capability:
    See This Commit for more details and examples.

package net.minecraftforge.items;

import net.minecraft.item.ItemStack;

public interface IItemHandler
{
    /**
     * Returns the number of slots available
     *
     * @return The number of slots available
     **/
    int getSlots();

    /**
     * Returns the ItemStack in a given slot.
     *
     * The result's stack size may be greater than the itemstacks max size.
     *
     * If the result is null, then the slot is empty.
     * If the result is not null but the stack size is zero, then it represents
     * an empty slot that will only accept* a specific itemstack.
     *
     * <p/>
     * IMPORTANT: This ItemStack MUST NOT be modified. This method is not for
     * altering an inventories contents. Any implementers who are able to detect
     * modification through this method should throw an exception.
     * <p/>
     * SERIOUSLY: DO NOT MODIFY THE RETURNED ITEMSTACK
     *
     * @param slot Slot to query
     * @return ItemStack in given slot. May be null.
     **/
    ItemStack getStackInSlot(int slot);

    /**
     * Inserts an ItemStack into the given slot and return the remainder.
     * Note: This behaviour is subtly different from IFluidHandlers.fill()
     *
     * @param slot     Slot to insert into.
     * @param stack    ItemStack to insert
     * @param simulate If true, the insertion is only simulated
     * @return The remaining ItemStack that was not inserted (if the entire stack is accepted, then return null)
     **/
    ItemStack insertItem(int slot, ItemStack stack, boolean simulate);

    /**
     * Extracts an ItemStack from the given slot. The returned value must be null
     * if nothing is extracted, otherwise it's stack size must not be greater than amount or the
     * itemstacks getMaxStackSize().
     *
     * @param slot     Slot to extract from.
     * @param amount   Amount to extract (may be greater than the current stacks max limit)
     * @param simulate If true, the extraction is only simulated
     * @return ItemStack extracted from the slot, must be null, if nothing can be extracted
     **/
    ItemStack extractItem(int slot, int amount, boolean simulate);
}


  •  

 

Animation System:

New Animation system allowing blocks/tesrs the have a more universal way of animating.

68747470733a2f2f6661742e6766796361742e636f6d2f4661696e74456c61737469634166726963616e706f72637570696e652e676966

  • IAnimationStateMachine - state machine for animations; can load from json.
  • AnimationTESR - automatic TESR for animated models.
  • AnimationModelBase - same for entities.
  • ITimeValue - time-varying value, used to control animation parameters from code.
  • TESRs can now be batched - look at TESR.renderTileEntityFast + TE.hasFastRenderer.
  • RegionRenderCache is not accessible to TESRs and other client-side logic - MinecraftForgeClient.getRegionRenderCache.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Guest
This topic is now closed to further replies.

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.