Posted November 11, 20195 yr Hello, I want to create a mod where textures are generated at the start of Minecraft from bufferedImage create in code. ? For example, if I want to create a stone with custom color, it will take the stone resource, color it and link it to a ResourceLocation. But I don't know how to do this step. I try to use DynamicTexture ? : public static ResourceLocation addTexture(BufferedImage img, ResourceLocation loc) { TextureManager textureManager = Minecraft.getInstance().getTextureManager(); NativeImage n = new NativeImage(img.getWidth(), img.getHeight(), true); for (int i = 0; i < img.getWidth; i++) { for (int j = 0; j < img.getHeight(); j++) { double[] c = img.getRaster().getPixel(i, j, new double[0]); color = (((((c[3] >> 8) + c[2]) >> 8) + c[1]) >> 8) + c[0]; n.setPixelRGBA(i, j, color); } } DynamicTexture dyn = new DynamicTexture(n); textureManager.loadTexture(loc, dyn); return loc; } But I have errors like that ? : FATAL ERROR in native method: Thread[Server-Worker-3,5,main]: No context is current or a function that is not available in the current context was called. The JVM will abort execution. at org.lwjgl.opengl.GL11C.nglGenTextures(Native Method) at org.lwjgl.opengl.GL11C.glGenTextures(GL11C.java:664) at org.lwjgl.opengl.GL11.glGenTextures(GL11.java:2492) at com.mojang.blaze3d.platform.GlStateManager.genTexture(GlStateManager.java:419) at com.mojang.blaze3d.platform.TextureUtil.generateTextureId(TextureUtil.java:27) at net.minecraft.client.renderer.texture.Texture.getGlTextureId(Texture.java:45) at net.minecraft.client.renderer.texture.DynamicTexture.<init>(DynamicTexture.java:16) at fr.ptlc.randomdimensions.CustomTexture.add(CustomTexture.java:28) And I don't know why... I've made many searches and find nothing working I hope you can help me. ? Edited November 11, 20195 yr by PTLC
November 11, 20195 yr Author All the stacktrace ?) : Spoiler FATAL ERROR in native method: Thread[Server-Worker-8,5,main]: No context is current or a function that is not available in the current context was called. The JVM will abort execution. at org.lwjgl.opengl.GL11C.nglGenTextures(Native Method) at org.lwjgl.opengl.GL11C.glGenTextures(GL11C.java:664) at org.lwjgl.opengl.GL11.glGenTextures(GL11.java:2492) at com.mojang.blaze3d.platform.GlStateManager.genTexture(GlStateManager.java:419) at com.mojang.blaze3d.platform.TextureUtil.generateTextureId(TextureUtil.java:27) at net.minecraft.client.renderer.texture.Texture.getGlTextureId(Texture.java:45) at net.minecraft.client.renderer.texture.DynamicTexture.<init>(DynamicTexture.java:16) at fr.ptlc.randomdimensions.CustomTexture.add(CustomTexture.java:28) at fr.ptlc.randomdimensions.Main$RegistryEvents.stitcherEventPre(Main.java:124) at net.minecraftforge.eventbus.ASMEventHandler_3_RegistryEvents_stitcherEventPre_Pre.invoke(.dynamic) at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:80) at net.minecraftforge.eventbus.EventBus.post(EventBus.java:258) at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:163) at net.minecraftforge.fml.ModLoader.lambda$postEvent$30(ModLoader.java:240) at net.minecraftforge.fml.ModLoader$$Lambda$2280/2054805916.accept(Unknown Source) at java.util.HashMap.forEach(HashMap.java:1289) at net.minecraftforge.fml.ModList.forEachModContainer(ModList.java:209) at net.minecraftforge.fml.ModLoader.postEvent(ModLoader.java:240) at net.minecraftforge.client.ForgeHooksClient.onTextureStitchedPre(ForgeHooksClient.java:171) at net.minecraft.client.renderer.texture.AtlasTexture.stitch(AtlasTexture.java:96) at net.minecraft.client.renderer.texture.SpriteUploader.prepare(SpriteUploader.java:34) at net.minecraft.client.renderer.texture.SpriteUploader.prepare(SpriteUploader.java:10) at net.minecraft.client.resources.ReloadListener.lambda$reload$0(ReloadListener.java:12) at net.minecraft.client.resources.ReloadListener$$Lambda$2416/905830050.get(Unknown Source) at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590) at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1582) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) FATAL ERROR in native method: Thread[Server-Worker-3,5,main]: No context is current or a function that is not available in the current context was called. The JVM will abort execution. at org.lwjgl.opengl.GL11C.nglGenTextures(Native Method) at org.lwjgl.opengl.GL11C.glGenTextures(GL11C.java:664) at org.lwjgl.opengl.GL11.glGenTextures(GL11.java:2492) at com.mojang.blaze3d.platform.GlStateManager.genTexture(GlStateManager.java:419) at com.mojang.blaze3d.platform.TextureUtil.generateTextureId(TextureUtil.java:27) at net.minecraft.client.renderer.texture.Texture.getGlTextureId(Texture.java:45) at net.minecraft.client.renderer.texture.DynamicTexture.<init>(DynamicTexture.java:16) at fr.ptlc.randomdimensions.CustomTexture.add(CustomTexture.java:28) at fr.ptlc.randomdimensions.Main$RegistryEvents.stitcherEventPre(Main.java:124) at net.minecraftforge.eventbus.ASMEventHandler_3_RegistryEvents_stitcherEventPre_Pre.invoke(.dynamic) at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:80) at net.minecraftforge.eventbus.EventBus.post(EventBus.java:258) at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:163) at net.minecraftforge.fml.ModLoader.lambda$postEvent$30(ModLoader.java:240) I've try to call this method from the events FMLClientSetupEvent and then from TextureStitchEvent.Pre.
November 11, 20195 yr Author It doesn't crash ? But it doesn't have effect in game... I think the texture can be load from BufferedImage now, but I don't think how to display it as block texture With a model (in a file) probably, I try but it doesn't work But it's not the final goal because I want blocks with name and id defined in code Do you have a solution ?
November 11, 20195 yr Author It isn't possible ? ? ? I wanted to create config (or with a seed) at the first mod start, and create the same blocks following the config
November 11, 20195 yr Author And if the mod create a block with a specific same id but with different texture (following config), can it be possible ?
November 11, 20195 yr Author For exemple, I want to create a block with the id colored_stone - if in my config file there is red, the block will be red - if there is #FF8080, the block will be colored with this color Furthermore I want the possibility to add a pattern amont several patterns (like ore, plant, flower...)
November 11, 20195 yr Author A tileentity ? Even if all the colored_block are the same ? I want : If you stop Minecraft, edit the config and restart a world, all the existing colored_block will change texture.
November 11, 20195 yr Author No I don't want multiple colored_block, Just a colored_block which will never change from the start to the stop of Minecraft. And it's texture is drew at the start
November 11, 20195 yr Author It was because I wanted to create like red_block, blue_block and green_block but only one of them per Minecraft launch. But I can create a colored_block and link it to a texture during the Minecraft start. It will be same in game. I juste don't how to link my texture (BufferedImage) to my colored_block at Minecraft start.
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.