Jump to content

Recommended Posts

Posted

i just creat a block which is called smelting furnace it should be a faster furnace for the default smelting recipes (like stone, clay, etc.).

At the moment the block has the normal furnace container and the normal recipes and i try to creat custom (container and recipe), but now im stuck.

1. registration of container:

- i creat a container which extends the vanilla AbstractFurnaceContainer

	public static final DeferredRegister<ContainerType<?>> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, Cave.Mod_Id);
	
	
	public static final RegistryObject<ContainerType<?>> SMELTING_CONTAINER = CONTAINERS.register("smelting_container", 
			() -> IForgeContainerType.create(SmeltingContainer::new));

but i cant register the container/ why doesn't work that way

 

2. registration of recipe serializer

- how to register a custom AbstractCookingRecipe and how to create form that a IRecipeType which i need for the container

	public static final DeferredRegister<IRecipeSerializer<?>> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Cave.Mod_Id);
	
	
	public static final RegistryObject<IRecipeSerializer<?>> SMELTING_RECIPE = RECIPE_SERIALIZERS.register("smelting_recipe", null);

what i have to set at "null"

Posted (edited)
17 minutes ago, diesieben07 said:

If you want it to use the normal furnace recipes, why are you making a custom serializer

i not want to use the normal recipes that already work but minecraft has the blast furnace which smelt ores and the smoker which "cook" food.

i want to creat a furnace which process / smelt the other recipes faster (like cobblestone to stone in 5 seconds instead of 10 seconds)

Edited by Luis_ST
Posted (edited)
27 minutes ago, diesieben07 said:

So you want it to use the normal furnace recipes, not the smoker recipes for example - yes?

normal furnace - No.

I think you don't understand exactly what I want,

so simplified I want recipes for a custom furnace with the same gui like the vanilla furnace

 

Short: I want custom recipes that only work in my furnace

Edited by Luis_ST
Posted (edited)

But back to my questions

3 hours ago, Luis_ST said:

1. registration of container:

- i creat a container which extends the vanilla AbstractFurnaceContainer

 

3 hours ago, Luis_ST said:

2. registration of recipe serializer

- how to register a custom AbstractCookingRecipe and how to create form that a IRecipeType which i need for the container

 

 

Edited by Luis_ST
Posted
15 minutes ago, diesieben07 said:

You can register your own IRecipeType in the same way vanilla does (look at IRecipeType).

To use your custom recipe type, you need to also implement IRecipeSerializer and return recipes that use your custom IRecipeType.

Okay thanks, but the more important question is how to properly register the container and recipe because that's the reason why i ask?

	public static final DeferredRegister<ContainerType<?>> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, Cave.Mod_Id);
	
	
	public static final RegistryObject<ContainerType<?>> SMELTING_CONTAINER = CONTAINERS.register("smelting_container", 
			() -> IForgeContainerType.create(null));

and

	public static final DeferredRegister<IRecipeSerializer<?>> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Cave.Mod_Id);
	
	
	public static final RegistryObject<IRecipeSerializer<?>> SMELTING_RECIPE = RECIPE_SERIALIZERS.register("smelting_recipe", null);

 

Posted
15 hours ago, diesieben07 said:

What is your question?

 

18 hours ago, Luis_ST said:

1. registration of container:

- i creat a container which extends the vanilla AbstractFurnaceContainer

but i cant register the container/ why doesn't work that way

and

18 hours ago, Luis_ST said:

how to register a custom AbstractCookingRecipe

for more information just read my post at the beginning

 

 

 

 

 

Posted
32 minutes ago, diesieben07 said:

Why can't you? What is your issue?

my IDE show this error: "The type SmeltingContainer does not define SmeltingContainer(int, PlayerInventory, PacketBuffer) that is applicable here"

this is my container class:

https://github.com/Luis-st/Forge-1.16.5-36.0.1-mdk/blob/main/forge-1.16.5-36.0.1-mdk/src/main/java/net/luis/cave/blocks/container/SmeltingContainer.java

 

38 minutes ago, diesieben07 said:

Recipes do not need to be registered. You register a recipe type and a recipe serializer.

i mean the recipe serializer

this is my registration class:

https://github.com/Luis-st/Forge-1.16.5-36.0.1-mdk/blob/main/forge-1.16.5-36.0.1-mdk/src/main/java/net/luis/cave/init/CaveRecipe.java

and my recipe serializer class:

https://github.com/Luis-st/Forge-1.16.5-36.0.1-mdk/blob/b55bad37a4e156a1cbc7979697809e027e3a4589/forge-1.16.5-36.0.1-mdk/src/main/java/net/luis/cave/blocks/recipes/SmeltingRecipe.java#L12

 

41 minutes ago, diesieben07 said:

Your recipe serializer...

like this:

public static final RegistryObject<IRecipeSerializer<?>> SMELTING_RECIPE = RECIPE_SERIALIZERS.register("smelting_recipe", SmeltingRecipe::new);

but i get the same error: "The type SmeltingRecipe does not define SmeltingRecipe() that is applicable here"

 

So what am I doing wrong / where is the mistake

Posted
1 hour ago, diesieben07 said:

You need to provide a method reference or lambda with the correct signature (look at IForgeContainerType.create to find out what is needed).

I found. I had to add a Packetbuffer i don't know what i need it for but the container works.

 

1 hour ago, diesieben07 said:

You need to specify your serializer. Your recipe class constructor is not useful here.

but how to get the serializer

Posted
50 minutes ago, diesieben07 said:

Yes you need an IRecipeSerializer. Look at the vanilla examples.

have I to implement / extend IRecipeSerializer?

now i creat this

package net.luis.cave.init;

import net.luis.cave.blocks.recipes.SmeltingRecipe;
import net.minecraft.item.crafting.CookingRecipeSerializer;
import net.minecraft.item.crafting.IRecipeSerializer;

public class CaveRecipeSerializer {

	CookingRecipeSerializer<SmeltingRecipe> CAVE_SMELTING = IRecipeSerializer.register("cave_smelting", new CookingRecipeSerializer<>(SmeltingRecipe::new, 100));

}

 

but i got an error: "The type CookingRecipeSerializer.IFactory<SmeltingRecipe> from the descriptor computed for the target context is not visible here."

Posted (edited)
16 hours ago, diesieben07 said:

You cannot use CookingRecipeSerialier, because it requires use of a private inner class (IFactory).

I found out that I need to create a serializer class in my recipe,

but I don't understand what to do in the class, is there a forge documentation

or can i copy the read and write methods from the CookingRecipeSerializer

when i return my SmeltingRecipe

 

Edited by Luis_ST
Posted
1 minute ago, diesieben07 said:

You can take a look at vanilla for examples. Basically your serializer needs to take the JSON and return the correct recipe instance for it. It also needs to handle serializing to and from PacketBuffer to manage syncing to the client.

i currently creat this:

1. is this correct?

2. i have to set the cookingTime but it's a private field so can i create a own one or should i use ObfuscationReflectionHelper to get the field

	public static class Serializer extends ForgeRegistryEntry<IRecipeSerializer<?>> implements IRecipeSerializer<SmeltingRecipe> {

		@Override
		@SuppressWarnings("deprecation")
		public SmeltingRecipe read(ResourceLocation recipeId, JsonObject json) {

			String s = JSONUtils.getString(json, "group", "");
			JsonElement jsonelement = (JsonElement) (JSONUtils.isJsonArray(json, "ingredient")
					? JSONUtils.getJsonArray(json, "ingredient")
					: JSONUtils.getJsonObject(json, "ingredient"));
			Ingredient ingredient = Ingredient.deserialize(jsonelement);
			ItemStack itemstack;

			if (!json.has("result")) {

				throw new JsonSyntaxException("Missing result, expected to find a string or object");

			}

			if (json.get("result").isJsonObject()) {

				itemstack = ShapedRecipe.deserializeItem(JSONUtils.getJsonObject(json, "result"));

			} else {

				String s1 = JSONUtils.getString(json, "result");
				ResourceLocation resourcelocation = new ResourceLocation(s1);
				itemstack = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow(() -> {

					return new IllegalStateException("Item: " + s1 + " does not exist");

				}));

			}

			float f = JSONUtils.getFloat(json, "experience", 0.0F);
//			int i = JSONUtils.getInt(json, "cookingtime", cookingTime);
			return new SmeltingRecipe(recipeId, s, ingredient, itemstack, f, 0);

		}

		@Override
		public SmeltingRecipe read(ResourceLocation recipeId, PacketBuffer buffer) {

			String s = buffer.readString(32767);
			Ingredient ingredient = Ingredient.read(buffer);
			ItemStack itemstack = buffer.readItemStack();
			float f = buffer.readFloat();
			int i = buffer.readVarInt();
			return new SmeltingRecipe(recipeId, s, ingredient, itemstack, f, i);

		}

		@Override
		public void write(PacketBuffer buffer, SmeltingRecipe recipe) {

			buffer.writeString(recipe.group);
			recipe.ingredient.write(buffer);
			buffer.writeItemStack(recipe.result);
			buffer.writeFloat(recipe.experience);
			buffer.writeVarInt(recipe.cookTime);

		}

	}

 

Posted
39 minutes ago, diesieben07 said:

AbstractCookingRecipe#cookTime is protected, however it's also final. But it's set via the constructor, just pass your desired cooking time into the constructor...

i just edit the recipe class / serializer class

now is this correct?

package net.luis.cave.blocks.recipes;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;

import net.luis.cave.init.CaveRecipe;
import net.luis.cave.init.blocks.CaveBlocks;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.AbstractCookingRecipe;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.item.crafting.ShapedRecipe;
import net.minecraft.network.PacketBuffer;
import net.minecraft.util.JSONUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry;
import net.minecraftforge.registries.ForgeRegistryEntry;

public class SmeltingRecipe extends AbstractCookingRecipe {
	
	public static int time;

	@SuppressWarnings("static-access")
	public SmeltingRecipe(ResourceLocation idIn, String groupIn, Ingredient ingredientIn, ItemStack resultIn, float experienceIn, int cookTimeIn) {

		super(IRecipeType.register("cave_smelting"), idIn, groupIn, ingredientIn, resultIn, experienceIn, cookTimeIn);
		this.time = cookTimeIn;
	}

	@Override
	public ItemStack getIcon() {

		return new ItemStack(CaveBlocks.SMELTING_FURNACE.get());

	}

	@Override
	public IRecipeSerializer<?> getSerializer() {

		return CaveRecipe.SMELTING_RECIPE.get();

	}

	public static class Serializer extends ForgeRegistryEntry<IRecipeSerializer<?>> implements IRecipeSerializer<SmeltingRecipe> {

		@Override
		@SuppressWarnings("deprecation")
		public SmeltingRecipe read(ResourceLocation recipeId, JsonObject json) {

			String s = JSONUtils.getString(json, "group", "");
			JsonElement jsonelement = (JsonElement) (JSONUtils.isJsonArray(json, "ingredient")
					? JSONUtils.getJsonArray(json, "ingredient")
					: JSONUtils.getJsonObject(json, "ingredient"));
			Ingredient ingredient = Ingredient.deserialize(jsonelement);
			ItemStack itemstack;

			if (!json.has("result")) {

				throw new JsonSyntaxException("Missing result, expected to find a string or object");

			}

			if (json.get("result").isJsonObject()) {

				itemstack = ShapedRecipe.deserializeItem(JSONUtils.getJsonObject(json, "result"));

			} else {

				String s1 = JSONUtils.getString(json, "result");
				ResourceLocation resourcelocation = new ResourceLocation(s1);
				itemstack = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow(() -> {

					return new IllegalStateException("Item: " + s1 + " does not exist");

				}));

			}

			float f = JSONUtils.getFloat(json, "experience", 0.0F);
			int i = JSONUtils.getInt(json, "cookingtime", SmeltingRecipe.time);
			return new SmeltingRecipe(recipeId, s, ingredient, itemstack, f, i);

		}

		@Override
		public SmeltingRecipe read(ResourceLocation recipeId, PacketBuffer buffer) {

			String s = buffer.readString(32767);
			Ingredient ingredient = Ingredient.read(buffer);
			ItemStack itemstack = buffer.readItemStack();
			float f = buffer.readFloat();
			int i = buffer.readVarInt();
			return new SmeltingRecipe(recipeId, s, ingredient, itemstack, f, i);

		}

		@Override
		public void write(PacketBuffer buffer, SmeltingRecipe recipe) {

			buffer.writeString(recipe.group);
			recipe.ingredient.write(buffer);
			buffer.writeItemStack(recipe.result);
			buffer.writeFloat(recipe.experience);
			buffer.writeVarInt(recipe.cookTime);

		}

	}

}

 

Posted (edited)
29 minutes ago, diesieben07 said:

Use NetworkHooks.openGui.

 

in the tileEntity?

I've never used that before

a few more information would be helpful

Edited by Luis_ST
Posted
1 hour ago, diesieben07 said:

When opening the GUI in your Block.

so like this:

	@Override
	protected void interactWith(World worldIn, BlockPos pos, PlayerEntity player) {
		
		TileEntity tileentity = worldIn.getTileEntity(pos);
		
		if (player instanceof ServerPlayerEntity && tileentity instanceof SmeltingFurnaceTileEntity) {
			
			NetworkHooks.openGui((ServerPlayerEntity) player, (INamedContainerProvider) tileentity, pos);
			
		}
		
	}

 

Posted (edited)
1 hour ago, diesieben07 said:

You never register your ContainerType, you get a giant error in the console from it, did you not read it?

I already registered it but forgot to add the registration to my mod constructor

I tested it again and it still doesn't work

and the consol show this:

[10:19:50] [Render thread/WARN] [minecraft/ScreenManager]: Failed to create screen for menu type: cave:smelting_container

 

I know where the error is coming from I still have to create a screen but where do I have to register / pass the container

Edited by Luis_ST
Posted (edited)
49 minutes ago, diesieben07 said:

You need to register a screen factory for your container type using ScreenManager.registerFactory in FMLClientSetupEvent with enqueueWork.

		event.enqueueWork(() -> ScreenManager.registerFactory(CaveContainer.SMELTING_CONTAINER.get(), SmeltingScreen::new));

why does it not work that way (at SmeltingSreen::new)

my screen extends the vanilla Furnace screen and the constructor looks like the vanilla one:

package net.luis.cave.blocks.container;

import net.minecraft.client.gui.screen.inventory.AbstractFurnaceScreen;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

@OnlyIn(Dist.CLIENT)
public class SmeltingScreen extends AbstractFurnaceScreen<SmeltingContainer> {
	
	private static final ResourceLocation FURNACE_GUI_TEXTURES = new ResourceLocation("textures/gui/container/furnace.png");

	public SmeltingScreen(SmeltingContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) {
		
		super(screenContainer, null, inv, titleIn, FURNACE_GUI_TEXTURES);
		
	}

}

 

this is the factory:

create(T p_create_1_, PlayerInventory p_create_2_, ITextComponent p_create_3_);

 

so i dont understand why my IDE show me an error

("The type SmeltingScreen does not define SmeltingScreen(M, PlayerInventory, ITextComponent) that is applicable here")

 

Edited by Luis_ST
Posted
14 minutes ago, diesieben07 said:

The solution is to declare the type of CaveContainer.SMELTING_CONTAINER properly.

What do you mean by "declare correctly" should I replace my container (SmeltingContainer) with generally all Containers (Container class).

So what do i have to do. I understand the problem but don't know how to fix it

Posted
2 hours ago, diesieben07 said:

Properly means don't use ?, use your container class.

okay thanks but now i got an error when i place the block.

beacuse i not init my Recipe Serializer so now my question is there a special way to register the serializer

or can I use DeferredRegister <IRecipeSerializer <?>>

 

 

Posted
1 hour ago, diesieben07 said:

IRecipeSerializer extends IForgeRegistryEntry, that means you can use it with DeferredRegister. Everything that implements IForgeRegistryEntry is a normal registry entry and the registration process is the same.

i hope these are my last two questions on this topic.

So first of all a question about the custom IRecipeType do I have to register this?

And secondly how do I tell the recipe book to show my recipes?

Posted
12 hours ago, diesieben07 said:

Same as vanilla does.

12 hours ago, diesieben07 said:

I don't know.

 

okay thanks unfortunately i still have two problems:
1. when I put items in the slots, close the gui and open it again, the items disappear
2. I added a custom recipe. I can transfer the item into the slot using shift, which means that the recipe works but the smelting process does not start

Posted (edited)
1 hour ago, diesieben07 said:

Your SmeltingContainer always uses the AbstractFurnaceContainer that is designed for the client side and which will create a temporary inventory. You need to use the constructor that actually takes in the furnace inventory on the server.

is the correct one the other constructor from the AbstractFurnaceContainer class?

Edited by Luis_ST
Posted
3 hours ago, diesieben07 said:

Yes, the one that takes an inventory.

okay i change the constructor but now i have a costructor with:

	public SmeltingContainer(int id, PlayerInventory playerInventory, IInventory inventory, IIntArray array) {
		
		super(ModContainer.SMELTING_CONTAINER.get(), ModRecipeType.SMELTING_RECIPE, RecipeBookCategory.FURNACE, id, playerInventory, inventory, array);
		
	}

 

but now i cant register my container type because my constructor contains worng things (IInventory and the IIntArray)

so what i have to set there/ did i get this things from the PacketBuffer which i need in the constructor

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • As long as the packets you are sending aren't lost, there's nothing wrong with what you're currently doing. Although, this sounds like something that would benefit from you making your own datapack registry instead of trying to arbitrarily sync static maps. Check out `DataPackRegistryEvent.NewRegistry`.
    • Hey all, I've been working a lot with datapacks lately, and I'm wondering what the most efficient way to get said data from server to client is.  I'm currently using packets, but given that a lot of the data I'm storing involves maps along the lines of Map<ResourceLocation, CustomDataType>, it can easily start to get messy if I need to transmit a lot of that data all at once. Recently I started looking into the ReloadableServerResources class, which is where Minecraft stores its built-ins.  I see you can access it via the server from the server's resources.managers, and it seems like this can be done even from the client to appropriately retrieve data from the server, unless I'm misunderstanding.  However, from what I can tell, this only works via built-in methods such as getRecipeManager() or getLootTables(), etc.  These are all SimpleJsonResourceReloadListeners, just like my datapack entries are, so it seems like it could be possible for me to access my datapack entries similarly?  But I don't see anywhere in ReloadableServerResources that stores loaded modded entries, so either I'm looking in the wrong place or it doesn't seem to be a thing. Are packets really the best way of doing this, or am I missing a method that would let me use ReloadableServerResources or something similar?
    • Hi, everyone! I'm new to minecraft modding stuff and want ask you some questions. 1. I checked forge references and saw there com.mojang and net.minecraft (not net.minecraftforge) and as I understand it's original game packages with all minecraft logic inside including renderers and so on, right? 2. Does it mean that forge has a limited set of instruments which doesn't cover all the aspects of the game? If make my question more specific then does forge provide such instruments that allow me totally change minecraft itself, like base mechanics and etc.? Or I have to use "original game packages" to implement such things? 3. I actively learning basic concepts with forge documentation and tutorials. So in my plans make different inventory system like in diabloids. Is that possible with forge? 4. It is last question related to the second one. So how deeply I can change minecraft with forge? I guess all my questions above because of that I haven't globally understanding what forge is and how it works inside and how it works with minecraft. It would be great if you provide some links or topics about it or explain it by yourself but I guess it's to big to be explained in that post at once. Anyway, thank you all for any help!
    • Im trying add to block a hole in center, just a usual block and in center of it on up side, there is should be a hole. I tried to add it via BlockModelBuilder, but its not working. Problem is that it only can change block size outside. I tried it to do with VoxelShape and its working, but its has been on server side and looks like its just changed collision shape, but for client, there is a texture covering this hole. I tried to use: base.renderType("cutout"); and removed some pixels from texture. I thought its should work, but game optimization makes block inside looks transparent. So, only custom model?
    • I Made this modpack myself and When i Open a world with embeddium enabeld no chuncks are loading in and when i have the mod brute force rendering culling eanbled the game will not start     This is the Modlist:   Chef's Delight [Forge] (by redstone3game) Yung Structures Addon for Loot Integrations (by someaddon) Macaw's Paths and Pavings (by sketch_macaw) My Nether's Delight (by soytutta) Client Crafting (by someaddon) Integrated Stronghold (by CraisinLord) Delightful (by brnbrd) Immersive Aircraft [Fabric/Forge] (by Conczin) Mysterious Mountain Lib (by sz0999312) Infinity Buttons (by LarsMans) SuperMartijn642's Core Lib (by SuperMartijn642) Clumps (by Jaredlll08) Embeddium (by FiniteReality) Cosmetic Armor Reworked (by LainMI) Creeper Overhaul (by joosh_7889) Balm (by BlayTheNinth) HT's TreeChop (by hammertater) Fastload (by StockiesLad) ImmediatelyFast (by RaphiMC) Integrated Dungeons and Structures (by CraisinLord) Mobtimizations - Entity Performance Fixes (by Corosus) Handcrafted (by terrariumearth) SuperMartijn642's Config Lib (by SuperMartijn642) Dramatic Doors (by FizzWare) Allurement (by TeamAbnormals) Xaero's World Map (by xaero96) Panda's Extra Details (by ThePandaOliver) Geophilic – Vanilla Biome Overhauls (by bebebea_loste) Auroras (by Verph) Naturalist (by Starfish_Studios) Iron Chests (by ProgWML6) Corpse (by henkelmax) FastSuite (by Shadows_of_Fire) Controlling (by Jaredlll08) Ash API (by Trikzon) Eating Animation [Neo/Forge] (by matyrobbrt) Macaw's Doors (by sketch_macaw) ForgeEndertech (by EnderLanky) Philip's Ruins (by philipmoddev) Resourceful Config (by ThatGravyBoat) ModernFix (by embeddedt) Quark (by Vazkii) Illager Invasion [Forge & Fabric] (by Fuzs) Integrated API (by CraisinLord) Redirector [Modern] (by pOtAto__bOy) Macaw's Fences and Walls (by sketch_macaw) Diagonal Windows [Forge & Fabric] (by Fuzs) Waystones (by BlayTheNinth) [EMF] Entity Model Features [Fabric & Forge] (by Traben) FerriteCore ((Neo)Forge) (by malte0811) CodeChicken Lib 1.8.+ (by covers1624) Macaw's Roofs (by sketch_macaw) Server Country Flags (by khajiitos) Bookshelf (by DarkhaxDev) Comforts (Fabric/Forge/Quilt) (by TheIllusiveC4) Enchantment Descriptions (by DarkhaxDev) Entity Culling Fabric/Forge (by tr7zw) Embeddium++ (by SrRapero720) Embeddium (Rubidium) Extra (by dimadencep) Smooth Boot (Reloaded) (by AbdElAziz333) Dungeons and Taverns (by Nova_Wostra) Placeables (by ItzSkay) CoroUtil (by Corosus) Small Ships [Fabric & Forge] (by talhanation) Trade Cycling (by henkelmax) Better Fps - Render Distance[Forge] (by someaddon) Better Villages - Forge (by jtl_elisa) PandaLib (by ThePandaOliver) Curios API (Forge/NeoForge) (by TheIllusiveC4) Stoneworks [Forge & Fabric] (by Fuzs) Pastel Shaders (by ElocinDev) Integrated Villages (by CraisinLord) More Axolotl Variants API (by AkashiiKun69) Potato Shader (by RRe36) Better Archeology (by Pandarix) Block Runner [Forge & Fabric] (by Fuzs) Cloth Config API (Fabric/Forge/NeoForge) (by shedaniel) Kiwi 🥝 (Neo/Forge) (by Snownee) Macaw's Lights and Lamps (by sketch_macaw) Loot Integrations (by someaddon) Farmers Structures (by BlackAuresArt) Wilderness (by ketok) Corpse x Curios API Compat (by Project8gbDeRam) Friends&Foes (Forge/NeoForge) (Copper Golem,Glare,Crab,Moobloom,Iceologer,Rascal,Tuff Golem,Wildfire,Illusioner) (by Faboslav) More Mob Variants (by nyuppo) Better Than Mending (by legobmw99) Remove Reloading Screen (by dimadencep) Simply Swords [Fabric & Forge] (by sweenuss) Better Brightness Slider (by LaidBackSloth) Krypton Reforged (by Txni) AppleSkin (by squeek502) Supplementaries Squared (by plantspookable) Horse Expert (by Fuzs) YUNG's Menu Tweaks (Forge) (by YUNGNICKYOUNG) Pet Cemetery (by TeamAbnormals) Leaky - Item Lag Fix[Forge/Fabric] (by someaddon) Tectonic (by Apollo) Saturn (by AbdElAziz333) Searchables (by Jaredlll08) Inventory HUD+ (by dmitrylovin) Moonlight Lib (by MehVahdJukaar) Explorify – Dungeons & Structures (by bebebea_loste) Placebo (by Shadows_of_Fire) Overflowing Bars [Forge & Fabric] (by Fuzs) Citadel (by sbom_xela) Alex's Mobs - Naturalist Compat (by Kanadeyoru) Forge CIT (by tfarecnim) Create (by simibubi) Starlight (Forge) (by Spottedleaf) [ETF] Entity Texture Features - [Fabric & Forge] (by Traben) Advanced Chimneys (by EnderLanky) Corn Delight[Forge] (by sz0999312) Trials Chambers [1.20.1 Backport] (by Jusey1z) MVS - Moog's Voyager Structures (by finndog_123) Macaw's Paintings (by sketch_macaw) Alternate Current (by SpaceWalkerRS) Hopo Better Ruined Portals (Fabric/Forge/NeoForge) (by hoponopono) Alex's Delight (by Baisylia) Macaw's Biomes O' Plenty (by Samlegamer_) Resourceful Lib (by ThatGravyBoat) FindMe (by Buuz135) Macaw's Bridges (by sketch_macaw) YUNG's Better Witch Huts (Forge) (by YUNGNICKYOUNG) MNS - Moog's Nether Structures (by finndog_123) Mowzie's Mobs (by bobmowzie) FastWorkbench (by Shadows_of_Fire) Transparent (by Trikzon) Artifacts (by ochotonida) Passable Foliage 🌳 (Neo/Forge) (by Snownee) Supplementaries (by MehVahdJukaar) Atmospheric (by TeamAbnormals) Alex's Caves (by sbom_xela) Alex's Caves Delight (by FixerLink1) Ocean's Delight (by scouter567) Brute force Rendering Culling (by RogoShum) fix GPU memory leak[Forge/Fabric] (by someaddon) Burnt: Better Vanilla Fire (by pxlbnk) YDM's Weapon Master (by YourDailyModderx) Curios Compat Layer for Accessories (by Blodhgarm) MES - Moog's End Structures (by finndog_123) Pale Garden and Creaking (by MinoBanana) YUNG's Better Jungle Temples (Forge) (by YUNGNICKYOUNG) AddonsLib (by Samlegamer_) Athena (by CodexAdrian) MakeUp - Ultra Fast | Shaders (by XavierFST) Xaero's Minimap (by xaero96) Macaw's Trapdoors (by sketch_macaw) Translocators 1.8.+ (by covers1624) Additional Structures (by XxRexRaptorxX) AI Improvements (by QueenOfMissiles) Autochef's Delight (by Snownee) Iron Furnaces (by XenoMustache) Iris/Oculus & GeckoLib Compat (by ElocinDev) Connectivity (by someaddon) Easy Magic [Forge & Fabric] (by Fuzs) Blueprint (by TeamAbnormals) VillagersPlus (FORGE) (by finallion_13) Panda's Falling Tree's (by ThePandaOliver) Xaero's Minimap & World Map - Waystones Compatibility [Forge] (by ArcaneAlloy) ServerCore (by Wesley8081) MrCrayfish's Furniture Mod: Refurbished (by MrCrayfish) Just Enough Items (JEI) (by mezz) Farmer's Delight (by vectorwing) Old fisherman swamp house (by SuperWarioModTeam) YUNG's Better Nether Fortresses (Forge) (by YUNGNICKYOUNG) Lithostitched (by Apollo) FastFurnace (by Shadows_of_Fire) DrDestens MCShaders (by DrDesten) Server Performance - Smooth Chunk Save[Forge/Fabric] (by someaddon) Noisium (by Steveplays28) Puzzles Lib [Forge & Fabric] (by Fuzs) YUNG's Bridges (Forge) (by YUNGNICKYOUNG) Alex's Mobs (by sbom_xela) Regions Unexplored (forge/fabric) (by UHQ_GAMES) Architectury API (by shedaniel) Radium Reforged (by Asek3) Separated Leaves (by LarsMans) CullLessLeaves Reforged (Unofficial) (by ccr4ft3r) Just Enough Effect Descriptions (JEED) (by MehVahdJukaar) FastBoot (by dnlayu) Framework (by MrCrayfish) Chipped (by terrariumearth) MSS - Moog's Soaring Structures (by finndog_123) GeckoLib (by Gecko) CB Multipart (by covers1624) GlitchCore (by TheAdubbz) Realm RPG: Fallen Adventurers (by nocubeyt) Zume (by Nolij) Library Ferret - Forge (by jtl_elisa) Recipe Essentials[Forge/Fabric] (by someaddon) Macaw's Stairs (by sketch_macaw) Accessories (by Blodhgarm) What Are They Up To (Watut) (by Corosus) GroovyModLoader (GML) (by matyrobbrt) Fruits Delight (by lcy0x1) Just Enough Breeding (JEBr) (by Christofmeg) Farmer's Respite (by lumpazl) YUNG's API (Forge) (by YUNGNICKYOUNG) Underground Villages (by Mrbysco) Easy Anvils [Forge & Fabric] (by Fuzs) Cupboard (by someaddon) Diagonal Walls (by Fuzs) Large Ore Deposits (by EnderLanky) More Axolotl Variants Mod (by AkashiiKun69) Zeta (by Vazkii) TerraBlender (Forge) (by TheAdubbz) Biomes O' Plenty (by Forstride) Bocchium (by pOtAto__bOy) FramedBlocks (by XFactHD) Patchouli (by Vazkii) Quark Delight (by nocubeyt) Just Enough Resources (JER) (by way2muchnoise) Amendments (by plantspookable) Simple Hats (by fonnymunkey) Oculus (by Asek3) OpenBlocks Elevator (by vsngarcia) YUNG's Better Mineshafts (Forge) (by YUNGNICKYOUNG) Skin Layers 3D (Fabric/Forge) (by tr7zw) Mouse Tweaks (by YaLTeR) YUNG's Extras (Forge) (by YUNGNICKYOUNG)
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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