Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CookieLukas

Members
  • Joined

  • Last visited

Everything posted by CookieLukas

  1. NEVERMIND, FOUND THE ISSUE, I HAD A MAP IN THE RECIPE CLASS WHICH WAS NOT INITALIZED CORRECTLY. It was the json, I misspelled something, but now its still not loading, It crashes while it tries to load the advancements. Ive found this anwser from you, but I dont think anything in my recipe could be invalid: Heres all the relevant info: Recipe: { "type": "masa:blast_recipe", "result": { "item": "minecraft:diamond" }, "input": { "item": "minecraft:coal" }, "time": 10 } Class: @Override public BlastFurnaceRecipe readFromJson(ResourceLocation recipeId, JsonObject json) { ItemStack output = readOutput(json.get("result")); Ingredient input = Ingredient.deserialize(json.get("input")); int time = JSONUtils.getInt(json, "time", 200); ItemStack slag = ItemStack.EMPTY; if(json.has("slag")) slag = readOutput(JSONUtils.getJsonObject(json, "slag")); System.out.println("recipemod"); System.out.println(output.getDisplayName().getString()); return new BlastFurnaceRecipe(recipeId, output, input, time, slag); } @Nullable @Override public BlastFurnaceRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { ItemStack output = buffer.readItemStack(); Ingredient input = Ingredient.read(buffer); int time = buffer.readInt(); ItemStack slag = ItemStack.EMPTY; if(buffer.readBoolean()) slag = buffer.readItemStack(); System.out.println("recipemod"); System.out.println(output.getDisplayName().getString()); return new BlastFurnaceRecipe(recipeId, output, input, time, slag); } [m[32m[10:05:04] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.advancements.PlayerAdvancements@65947359 [m[1;31m[10:05:04] [Server thread/ERROR] [minecraft/MinecraftServer]: Encountered an unexpected exception net.minecraft.crash.ReportedException: Ticking memory connection at net.minecraft.network.NetworkSystem.tick(NetworkSystem.java:158) ~[?:?] {re:classloading} at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:903) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:821) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:120) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:662) [?:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151] {} Caused by: java.lang.RuntimeException: Why did the advancements not load yet?! at net.minecraftforge.common.AdvancementLoadFix.loadVisibility(AdvancementLoadFix.java:51) ~[?:?] {re:classloading} at net.minecraft.advancements.PlayerAdvancements.load(PlayerAdvancements.java:157) ~[?:?] {re:classloading} at net.minecraft.advancements.PlayerAdvancements.<init>(PlayerAdvancements.java:65) ~[?:?] {re:classloading} at net.minecraft.server.management.PlayerList.getPlayerAdvancements(PlayerList.java:806) ~[?:?] {re:classloading} at net.minecraft.entity.player.ServerPlayerEntity.<init>(ServerPlayerEntity.java:167) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.management.PlayerList.createPlayerForUser(PlayerList.java:395) ~[?:?] {re:classloading} at net.minecraft.network.login.ServerLoginNetHandler.tryAcceptPlayer(ServerLoginNetHandler.java:120) ~[?:?] {re:classloading} at net.minecraft.network.login.ServerLoginNetHandler.tick(ServerLoginNetHandler.java:64) ~[?:?] {re:classloading} at net.minecraft.network.NetworkManager.tick(NetworkManager.java:246) ~[?:?] {re:classloading} at net.minecraft.network.NetworkSystem.tick(NetworkSystem.java:152) ~[?:?] {re:classloading} // Daisy, daisy... Time: 11/03/21 10:05 Description: Ticking memory connection java.lang.RuntimeException: Why did the advancements not load yet?! at net.minecraftforge.common.AdvancementLoadFix.loadVisibility(AdvancementLoadFix.java:51) ~[?:?] {re:classloading} at net.minecraft.advancements.PlayerAdvancements.load(PlayerAdvancements.java:157) ~[?:?] {re:classloading} at net.minecraft.advancements.PlayerAdvancements.<init>(PlayerAdvancements.java:65) ~[?:?] {re:classloading} at net.minecraft.server.management.PlayerList.getPlayerAdvancements(PlayerList.java:806) ~[?:?] {re:classloading} at net.minecraft.entity.player.ServerPlayerEntity.<init>(ServerPlayerEntity.java:167) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.management.PlayerList.createPlayerForUser(PlayerList.java:395) ~[?:?] {re:classloading} at net.minecraft.network.login.ServerLoginNetHandler.tryAcceptPlayer(ServerLoginNetHandler.java:120) ~[?:?] {re:classloading} at net.minecraft.network.login.ServerLoginNetHandler.tick(ServerLoginNetHandler.java:64) ~[?:?] {re:classloading} at net.minecraft.network.NetworkManager.tick(NetworkManager.java:246) ~[?:?] {re:classloading} at net.minecraft.network.NetworkSystem.tick(NetworkSystem.java:152) ~[?:?] {re:classloading} at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:903) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:821) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:120) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:662) ~[?:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_151] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at net.minecraftforge.common.AdvancementLoadFix.loadVisibility(AdvancementLoadFix.java:51) at net.minecraft.advancements.PlayerAdvancements.load(PlayerAdvancements.java:157) at net.minecraft.advancements.PlayerAdvancements.<init>(PlayerAdvancements.java:65) at net.minecraft.server.management.PlayerList.getPlayerAdvancements(PlayerList.java:806) at net.minecraft.entity.player.ServerPlayerEntity.<init>(ServerPlayerEntity.java:167) at net.minecraft.server.management.PlayerList.createPlayerForUser(PlayerList.java:395) at net.minecraft.network.login.ServerLoginNetHandler.tryAcceptPlayer(ServerLoginNetHandler.java:120) at net.minecraft.network.login.ServerLoginNetHandler.tick(ServerLoginNetHandler.java:64) at net.minecraft.network.NetworkManager.tick(NetworkManager.java:246) -- Ticking connection -- Details: Connection: net.minecraft.network.NetworkManager@d0ff70a Stacktrace: at net.minecraft.network.NetworkSystem.tick(NetworkSystem.java:152) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:903) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:821) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:120) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:662) at java.lang.Thread.run(Thread.java:748)
  2. Ok, here the whole class, everything else is working fine. public class Registration { private static final DeferredRegister<Block> BLOCKS = new DeferredRegister<>(ForgeRegistries.BLOCKS, MODID); private static final DeferredRegister<Item> ITEMS = new DeferredRegister<>(ForgeRegistries.ITEMS, MODID); private static final DeferredRegister<TileEntityType<?>> TILES = new DeferredRegister<>(ForgeRegistries.TILE_ENTITIES, MODID); private static final DeferredRegister<ContainerType<?>> CONTAINERS = new DeferredRegister<>(ForgeRegistries.CONTAINERS, MODID); private static final DeferredRegister<EntityType<?>> ENTITIES = new DeferredRegister<>(ForgeRegistries.ENTITIES, MODID); private static final DeferredRegister<ModDimension> DIMENSIONS = new DeferredRegister<>(ForgeRegistries.MOD_DIMENSIONS, MODID); private static final DeferredRegister<Biome> BIOMES = new DeferredRegister<>(ForgeRegistries.BIOMES, MODID); private static final DeferredRegister<Fluid> FLUIDS = new DeferredRegister<>(ForgeRegistries.FLUIDS, MODID); //private static final DeferredRegister<SpecialRecipeSerializer<IRecipe<?>>> RECIPE_SERIALIZER = new DeferredRegister<>(ForgeRegistries.RECIPE_SERIALIZERS, MODID); public static final DeferredRegister<IRecipeSerializer<?>> RECIPE_SERIALIZERS = new DeferredRegister<>(ForgeRegistries.RECIPE_SERIALIZERS, MODID); public static void init() { BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); TILES.register(FMLJavaModLoadingContext.get().getModEventBus()); CONTAINERS.register(FMLJavaModLoadingContext.get().getModEventBus()); ENTITIES.register(FMLJavaModLoadingContext.get().getModEventBus()); DIMENSIONS.register(FMLJavaModLoadingContext.get().getModEventBus()); BIOMES.register(FMLJavaModLoadingContext.get().getModEventBus()); FLUIDS.register(FMLJavaModLoadingContext.get().getModEventBus()); RECIPE_SERIALIZERS.register(FMLJavaModLoadingContext.get().getModEventBus()); } //---------------------------------------- public static final RegistryObject<Biome> TESTBIOME = BIOMES.register("testbiome", TestBiome::new); public static final RegistryObject<VoidModDimension> DIMENSION = DIMENSIONS.register("dimension", VoidModDimension::new); public static final RegistryObject<BlastFurnaceRecipeSerializer> BLAST_FURNACE_RECIPES = RECIPE_SERIALIZERS.register("blast_recipe", BlastFurnaceRecipeSerializer::new); public static final RegistryObject<BlockIronFurnace> IRON_FURNACE = BLOCKS.register(BlockIronFurnace.IRON_FURNACE, BlockIronFurnace::new); public static final RegistryObject<Item> IRON_FURNACE_ITEM = ITEMS.register(BlockIronFurnace.IRON_FURNACE, () -> new BlockItem(IRON_FURNACE.get(), new Item.Properties().group(ItemGroup.MISC))); public static final RegistryObject<TileEntityType<BlockIronFurnaceTile>> IRON_FURNACE_TILE = TILES.register(BlockIronFurnace.IRON_FURNACE, () -> TileEntityType.Builder.create(BlockIronFurnaceTile::new, IRON_FURNACE.get()).build(null)); public static final RegistryObject<ContainerType<BlockIronFurnaceContainer>> IRON_FURNACE_CONTAINER = CONTAINERS.register(BlockIronFurnace.IRON_FURNACE, () -> IForgeContainerType.create((windowId, inv, data) -> { BlockPos pos = data.readBlockPos(); return new BlockIronFurnaceContainer(windowId, Minecraft.getInstance().world, pos, inv, Minecraft.getInstance().player); })); //-------------------------------------------------------------------- //fluidtest public static final RegistryObject<Item> OIL_BUCKET = ITEMS.register("oil_bucket", () -> new BucketItem(() -> ModFluids.oil, new Item.Properties().group(ItemGroup.MISC).maxStackSize(1))); public static final RegistryObject<Block> OIL = BLOCKS.register("flowing_oil", ()-> new FlowingFluidBlock(() -> ModFluids.oil, Block.Properties.create(Material.WATER).doesNotBlockMovement().noDrops())); //test public static final RegistryObject<Item> TESTITEM = ITEMS.register("testitem", TestItem::new); public static final RegistryObject<Item> FIRSTITEM = ITEMS.register("firstitem", () -> new Item(new Item.Properties().group(ItemGroup.MISC).maxStackSize(4))); public static final RegistryObject<Item> SECONDITEM = ITEMS.register("seconditem", () -> new Item(new Item.Properties().group(ItemGroup.MISC).maxStackSize(64))); }
  3. Sorry, that was a bit unclear, I tried both. Heres the revevant stuff of the registration, I appreciate you help: public static final DeferredRegister<IRecipeSerializer<?>> RECIPE_SERIALIZERS = new DeferredRegister<>(ForgeRegistries.RECIPE_SERIALIZERS, MODID); public static void init() { RECIPE_SERIALIZERS.register(FMLJavaModLoadingContext.get().getModEventBus()); }
  4. I have registered a custom recipe serilizer called BlastFurnaceRecipeSerializer, which extends from my class MasaRecipeSerializer. I copyed most of the the structure from ImmersiveEngineering. Now I registered the method like this: public static final RegistryObject<BlastFurnaceRecipeSerializer> BLAST_FURNACE_RECIPES = RECIPE_SERIALIZERS.register("blast_recipe", BlastFurnaceRecipeSerializer::new); //or static { BlastFurnaceRecipe.SERIALIZER = RECIPE_SERIALIZERS.register( "blast_recipes", BlastFurnaceRecipeSerializer::new ); } And put a debug message in the read function of the serilizer. The message is not being printed. What could be the problem. Heres my reciepy: { "type": "masa:blast_recipe", "result": { "tag": "minecraft:glass" }, "input": { "tag": "minecraft:diamond" }, "time": 5 }
  5. OK, thats a good idea, Ive managed to do that, now I have two problems: 1)The Lighting, the "blockRenderer.renderBlock" requires a field called "combinedLighting", Ive found the method "mc.worldRenderer.getCombinedLight()" it requires the a "BlockPos", and a "ILightReader", how can I get the current ILightReader instance? 2) The block is "wobbling" because now I only translate with "stack.translate(0, 60, 1);" what can I do against that? Before, I was translating with: Vec3d view = mc.gameRenderer.getActiveRenderInfo().getProjectedView(); stack.translate(-view.x, -view.y, -view.z);
  6. The following code just sets a small rendered plane with the texture of "polished_andesite" at the coordinates 0|60|0 But even in complete darkness, the plane still "glows". How can I get the plane to interact with the local light level? Im using the following options: public static final RenderType OVERLAY_PLATE = makeType("overlay_plate", DefaultVertexFormats.POSITION_TEX, GL11.GL_QUADS, 256, RenderType.State.getBuilder() .layer(PROJECTION_LAYERING) .transparency(TRANSLUCENT_TRANSPARENCY) .texture(new TextureState(new ResourceLocation("minecraft:textures/block/polished_andesite.png"), false, false)) .depthTest(DEPTH_ALWAYS) .cull(CULL_DISABLED) .lightmap(LIGHTMAP_DISABLED) .writeMask(COLOR_WRITE) .build(true)); And the following code to render: @SubscribeEvent public void render(RenderWorldLastEvent event) { IRenderTypeBuffer.Impl bufferSource = Minecraft.getInstance().getRenderTypeBuffers().getBufferSource(); IVertexBuilder builder = bufferSource.getBuffer(ModRenderTypes.OVERLAY_PLATE); Vec3d view = Minecraft.getInstance().gameRenderer.getActiveRenderInfo().getProjectedView(); int x = 0; int y = 60; int z = 0; MatrixStack stack = event.getMatrixStack(); stack.push(); stack.translate(-view.x, -view.y, -view.z); Matrix4f lastStack = stack.getLast().getMatrix(); builder.pos(lastStack, x, y + 1.0f, z + 1.0f).tex(0, 1).endVertex(); builder.pos(lastStack, x + 1.0f, y + 1.0f, z + 1.0f).tex(1, 1).lightmap(0, 240).endVertex(); builder.pos(lastStack, x + 1.0f, y + 1.0f, z).tex(1, 0).lightmap(0, 240).endVertex(); builder.pos(lastStack, x, y + 1.0f, z).tex(0, 0).lightmap(0, 240).endVertex(); stack.pop(); bufferSource.finish(ModRenderTypes.OVERLAY_PLATE); } My idea was to copy some code out of the BlockRendererDispatcher and use it every tick with the measured light level. Is that a possible? Any help is appreciated, -Lukas
  7. Hi, what is the difference between them, and when should you use which? Also, whats the correct way of using them in 1.15.2? In 1.14.4 I used this code to render something static in the world: Vec3d projectedView = mc.gameRenderer.getActiveRenderInfo().getProjectedView(); GL11.glTranslated(-projectedView.x, -projectedView.y, -projectedView.z); But this wont work in 1.15.2. If this question is dumb, forgive me, Im a beginner in termstherms of rendering. Thanks in advance, -Lukas
  8. Oh, sorry, the code was 1.10.2, but as its not allowed here, I updated it to 1.14.4.
  9. Im trying to render a simple plane with the following code: Minecraft mc = Minecraft.getInstance(); @SubscribeEvent public void renderWorldLastEvent(RenderWorldLastEvent evt){ System.out.println("renderWorldLast"); GL11.glPushMatrix(); Vec3d projectedView = mc.gameRenderer.getActiveRenderInfo().getProjectedView(); GL11.glTranslated(-projectedView.x, -projectedView.y, -projectedView.z); float x = 0; float y = 57; float z = 0; ResourceLocation texture = new ResourceLocation(ExampleMod.MODID, "debug.png"); mc.textureManager.bindTexture(texture); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferbuilder = tessellator.getBuffer(); GL11.glEnable(GL11.GL_TEXTURE_2D); bufferbuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); bufferbuilder.pos(x, y + 1.1, z + 1.0D).tex(0, 1).endVertex(); bufferbuilder.pos(x + 1.0D, y + 1.1, z + 1.0D).tex(1, 1).endVertex(); bufferbuilder.pos(x + 1.0D, y + 1.1, z).tex(1, 0).endVertex(); bufferbuilder.pos(x, y + 1.1, z).tex(0, 0).endVertex(); GL11.glEnd(); tessellator.draw(); GlStateManager.popMatrix(); } It renders the plane perfectly, but it just completly ignores lighting. I tried stuff like GlStateManager.enableLighting(); but I cant get it work. Also, some textures like staind glass or water wont render in from of it. How can I fix those issues? Thanks in advance -Lukas

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.