Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.15.2] Custom RenderType does not render


Alex Sim
 Share

Recommended Posts

Hello, I'm trying to create a custom RenderType for my block, using a custom lightmap LightmapStateCustom

 

object RenderTypes {
    private val SHADE_ENABLED = RenderState.ShadeModelState(true)
    private val LIGHTMAP_ENABLED = LightmapStateCustom()
    private val BLOCK_SHEET_MIPPED = RenderState.TextureState(AtlasTexture.LOCATION_BLOCKS_TEXTURE, false, true)

    val SOLID2: RenderType = RenderType.makeType("solid2", DefaultVertexFormats.BLOCK, 7, 2097152, true, false, RenderType.State.getBuilder().shadeModel(SHADE_ENABLED).lightmap(LIGHTMAP_ENABLED).texture(BLOCK_SHEET_MIPPED).build(true))
}

 

For now the only methods LightmapStateCustom overrides are `equals(other)` and `hashCode()` (`RenderType.makeType` would otherwise return an existing RenderType) so the RenderType is logically identical to SOLID, but the block does not render (as you can see on the screenshot below)

 

x9llQ0N.png

Edited by Alex Sim
Link to comment
Share on other sites

Howdy 

I'm not sure I understand what you're trying to do.

If you make a custom render type for your block, you need to render those blocks yourselves manually.

 

Minecraft renders blocks as follows:

1) Creates a render buffer based on SOLID. Look for all blocks which have SOLID render layer; call their rendering methods to write to the SOLID render buffer

2) Create a render buffer based on CUTOUT.Look for all blocks which have CUTOUT render layer; call their rendering methods to write to the CUTOUT render buffer

3) CUTOUTMIPPED

4) TRANSLUCENT

 

Just because you've given your block a custom RenderType, doesn't mean that vanilla will create a suitable render buffer for it.  If your render type doesn't match the four vanilla block render types, it won't get drawn at all.  If it does match a vanilla render type (because you have done something tricky with equals()) then it will be rendered with the vanilla render type, not your custom render type.

 

-TGG

 

 

Link to comment
Share on other sites

23 minutes ago, TheGreyGhost said:

Howdy 

I'm not sure I understand what you're trying to do.

If you make a custom render type for your block, you need to render those blocks yourselves manually.

 

Minecraft renders blocks as follows:

1) Creates a render buffer based on SOLID. Look for all blocks which have SOLID render layer; call their rendering methods to write to the SOLID render buffer

2) Create a render buffer based on CUTOUT.Look for all blocks which have CUTOUT render layer; call their rendering methods to write to the CUTOUT render buffer

3) CUTOUTMIPPED

4) TRANSLUCENT

 

Just because you've given your block a custom RenderType, doesn't mean that vanilla will create a suitable render buffer for it.  If your render type doesn't match the four vanilla block render types, it won't get drawn at all.  If it does match a vanilla render type (because you have done something tricky with equals()) then it will be rendered with the vanilla render type, not your custom render type.

 

-TGG

 

 

 

Ok thanks for the info, how would I go about it tho?

 

After a little bit of digging i found out WorldRenderer calls renderBlockLayer for each block RenderType inside the updateCameraAndRender method, is it possible to render my blocks without changing vanilla code?

Link to comment
Share on other sites

Hi

Nothing easy springs to mind; if you only have a few of your blocks in the world at any one time then a TileEntityRenderer will do it.  Alternatively you could render them in RenderWorldLastEvent with your own caching + chunk-culling logic but that may have side effects with translucent textures.

 

The first thing I would personally try would be to replace WorldRenderer with a derived class (will require reflection)- at the cost of being pretty fragile and perhaps making your mod incompatible with others.  Other folks have used Reflection and asm to locate and overwrite the byte code to insert a call to a new method at the desired location - that's getting very arcane and perhaps not worth the trouble.

 

There might be other ways to do it if you have other mods installed (perhaps Optifine or similar provides an alternative mechanism for what you want to do)

 

-TGG

Link to comment
Share on other sites

On 5/12/2020 at 12:10 PM, TheGreyGhost said:

Other folks have used Reflection and asm to locate and overwrite the byte code to insert a call to a new method at the desired location

Is it possible to learn this power?

Link to comment
Share on other sites

3 hours ago, Alex Sim said:

Is it possible to learn this power?

Not from a Jedi.

Just wondering, but what is the specific purpose of your custom render type? It seems you just want a custom lightmap, but it would help to know your reasons since there might be safer alternatives.

I'm eager to learn and am prone to mistakes. Don't hesitate to tell me how I can improve.

Link to comment
Share on other sites

Just now, imacatlolol said:

Not from a Jedi.

Just wondering, but what is the specific purpose of your custom render type? It seems you just want a custom lightmap, but it would help to know your reasons since there might be safer alternatives.

I was just experimenting for now but my (probably unreachable) goal is to light every pixel differently (maybe using the alpha level) like so:

 

68747470733a2f2f7062732e7477696d672e636f

Link to comment
Share on other sites

11 minutes ago, Alex Sim said:

I was just experimenting for now but my (probably unreachable) goal is to light every pixel differently (maybe using the alpha level) like so

I see! That would certainly be achievable without needing a custom render type or lightmap.

In this case, you would want to make a custom IModelLoader and model to use with your block JSONs. See MultiLayerModel and its usages for roughly what that process would be.

Applied Energistics actually achieved this effect, but their repo is outdated and most of the actual code no longer applies. It's still a good reference for how you could try implementing it yourself if you get stumped. Just take a look at the charged certus quartz ore.

I'm eager to learn and am prone to mistakes. Don't hesitate to tell me how I can improve.

Link to comment
Share on other sites

27 minutes ago, imacatlolol said:

I see! That would certainly be achievable without needing a custom render type or lightmap.

In this case, you would want to make a custom IModelLoader and model to use with your block JSONs. See MultiLayerModel and its usages for roughly what that process would be.

Applied Energistics actually achieved this effect, but their repo is outdated and most of the actual code no longer applies. It's still a good reference for how you could try implementing it yourself if you get stumped. Just take a look at the charged certus quartz ore.

 

Thanks, that's very helpful, I basically have to do something like this, definitely way easier than whatever tf I was trying to do

Edited by Alex Sim
Link to comment
Share on other sites

On 5/12/2020 at 12:10 PM, TheGreyGhost said:

Other folks have used Reflection and asm to locate and overwrite the byte code to insert a call to a new method at the desired location

My quarantine fueled boredom led my to try this anyway (would be useful for other purposes in my mod)

So I made an utility class that uses Kotlin (1.4) extension functions, here is the Kotlin class on pastebin

 

The methods to use are `addMethodAfter`, `addMethodBefore`, `replaceMethod` and `replaceMethodOrFallback`

It's pretty small and should be easy enough to convert it to Java

Here is an usage example (I call it from my mod's constructor):

 

/**
 * Replaces animateTick so that it does nothing (fire particles not spawned) if in the Glacia dimension
 * Otherwise fallback to default method
**/
WallTorchBlock::class.replaceMethodOrFallback(WallTorchBlock::animateTick) {(_, world) ->
    if ((world as World).dimension?.type != Glacia.DIMENSION.type) RedefineUtils.fallback()
}

 

Edited by Alex Sim
Link to comment
Share on other sites

13 minutes ago, diesieben07 said:

...

Please don't write jar mods in Java / Kotlin / JVM languages and don't use the instrumentation stuff. I don't even know how you expect that to work outside the development environment.

If you must, use Forge's coremod system.

I use Johnrengelman's shadowJar plugin to embed the libraries I use in my mod (and rename the base package), including the Kotlin runtime

You're right about the instrumentation stuff though, it apparently doesn't work outside the dev environment ?

Link to comment
Share on other sites

1 minute ago, Alex Sim said:

I use Johnrengelman's shadowJar plugin to embed the libraries I use in my mod (and rename the base package), including the Kotlin runtime

That's not what I was referring to. Writing stuff in Kotlin is fine (much better than Java :P), and so is using libraries.

Forge's coremods are intentionally very limited. You must write them in JavaScript and they are only given a very limited set of access.

Link to comment
Share on other sites

2 hours ago, diesieben07 said:

...

Please don't write jar mods in Java / Kotlin / JVM languages and don't use the instrumentation stuff. I don't even know how you expect that to work outside the development environment.

If you must, use Forge's coremod system.

BTW correct me if I'm wrong but the only issue here seems to be the attach library, if there was a way to use it in JRE (I'm open to suggestions) the rest would probably work

Edited by Alex Sim
Link to comment
Share on other sites

19 minutes ago, Alex Sim said:

BTW correct me if I'm wrong but the only issue here seems to be the attach library, if there was a way to use it in JRE (I'm open to suggestions) the rest would probably work

No.

You should not go around the coremod system that is in place. Coremods are intentionally very limited.

Link to comment
Share on other sites

18 minutes ago, diesieben07 said:

No.

You should not go around the coremod system that is in place. Coremods are intentionally very limited.

Should or could? Sorry if I sound insistent but I don't see what's the issue. Aside from practical ones (whether I could, and I seem to be one dll away from being able to), why should I not?

My boredom knows no "should"

Edited by Alex Sim
Link to comment
Share on other sites

2 minutes ago, diesieben07 said:

Coremods need to load in a very early stage of the game. In a different classloader than normal mods.

ClassPool.getDefault().apply {appendClassPath(LoaderClassPath(Thread.currentThread().contextClassLoader))}

This seems to work on non-dev-environment Minecraft, it used to throw javassist.NotFoundException without it;

But you probably already know why this won't work and crush my hopes and dreams ?

Link to comment
Share on other sites

3 minutes ago, diesieben07 said:

I don't know how you expect this to work.

Mods load way after Minecraft classes are already loaded. There is no way to transform them then.

Doesn't redefineClasses also retransform classes?

 

public class Hello {
    public int helloWorld() {
        LogManager.getLogger().log(Level.INFO, "Hello World")
    }
}

init { //Based on my tests
    val hello = Hello()
    hello.helloWorld() //Prints "Hello World"
    Hello::class.addMethodAfter(Hello::helloWorld) {
        LogManager.getLogger().log(Level.INFO, "Goodbye World")
    }
    hello.helloWorld() //Prints "Hello World", then "Goodbye World"
}

 

I cannot add new methods or fields, but what I CAN do is change an existing method's bytecode, which is exactly what I'm doing (if you look at my source I found a little workaround to call my local variable (functional interface) by creating a new static class at runtime)

Link to comment
Share on other sites

2 hours ago, diesieben07 said:

You are abusing this API. This is not what the JVM's instrumentation API is designed for.

 

Please use Forge's coremods.

Maybe, but that's exactly what the Javassist library is designed for: to assist me raping the JVM

 

Jokes aside, this would allow me to retain the old logic for a method on top of mine, and also possibly be compatible with any other hypothetical mod that would use the same approach (as if). I'm honestly not sure whether that's possible with coremods, but as far as I know two mods replacing the same class will conflict with each other

 

If that's not the case I'll look into coremods

Edited by Alex Sim
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • any download link for that please?    
    • Posting here due to having a related issue, not a custom pack, its a curseforge pack, HR- New Beginnings. Been following the advice here but my crash logs dont come with the preamble of this for example. It starts as the Caused by part. Here's the log. ---- Minecraft Crash Report ---- // Uh... Did I do that? Time: 5/12/21 11:33 PM Description: Exception in server tick loop com.electronwill.nightconfig.core.io.ParsingException: Not enough data available at com.electronwill.nightconfig.core.io.ParsingException.notEnoughData(ParsingException.java:22) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.io.ReaderInput.directReadChar(ReaderInput.java:36) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.io.AbstractInput.readChar(AbstractInput.java:49) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.io.CharacterInput.readCharAndSkip(CharacterInput.java:59) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.toml.Toml.readNonSpaceChar(Toml.java:48) ~[toml-3.6.2.jar:?] {} at com.electronwill.nightconfig.toml.TableParser.parseTableName(TableParser.java:126) ~[toml-3.6.2.jar:?] {} at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:51) ~[toml-3.6.2.jar:?] {} at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37) ~[toml-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.load(WriteSyncFileConfig.java:73) ~[core-3.6.2.jar:?] {} at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.load(AutosaveCommentedFileConfig.java:85) ~[core-3.6.2.jar:?] {} at net.minecraftforge.fml.config.ConfigFileTypeHandler.lambda$reader$1(ConfigFileTypeHandler.java:53) ~[?:?] {re:classloading} at net.minecraftforge.fml.config.ConfigTracker.openConfig(ConfigTracker.java:104) ~[?:?] {re:classloading} at net.minecraftforge.fml.config.ConfigTracker.lambda$loadConfigs$1(ConfigTracker.java:83) ~[?:?] {re:classloading} at java.lang.Iterable.forEach(Unknown Source) ~[?:1.8.0_311] {} at java.util.Collections$SynchronizedCollection.forEach(Unknown Source) ~[?:1.8.0_311] {} at net.minecraftforge.fml.config.ConfigTracker.loadConfigs(ConfigTracker.java:83) ~[?:?] {re:classloading} at net.minecraftforge.fml.server.ServerLifecycleHooks.handleServerAboutToStart(ServerLifecycleHooks.java:87) ~[?:?] {re:classloading} at net.minecraft.server.integrated.IntegratedServer.func_71197_b(IntegratedServer.java:95) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:613) [?:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Unknown Source) [?:1.8.0_311] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.15.2 Minecraft Version ID: 1.15.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_311, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 1069460008 bytes (1019 MB) / 2735734784 bytes (2609 MB) up to 4772593664 bytes (4551 MB) CPUs: 8 JVM Flags: 3 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xms512m -Xmx5120m ModLauncher: 5.1.2+70+master.2845bb9 ModLauncher launch target: fmlclient ModLauncher naming: srg ModLauncher services: /mixin-0.8.2.jar mixin PLUGINSERVICE /eventbus-2.2.1-service.jar eventbus PLUGINSERVICE /forge-1.15.2-31.2.47-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.15.2-31.2.47-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-2.1.3-shadowed.jar accesstransformer PLUGINSERVICE /forge-1.15.2-31.2.47-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.15.2-31.2.47-launcher.jar runtimedistcleaner PLUGINSERVICE /mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE /forge-1.15.2-31.2.47-launcher.jar fml TRANSFORMATIONSERVICE /MixinBootstrap-1.0.5.jar mixinbootstrap TRANSFORMATIONSERVICE FML: 31.2 Forge: net.minecraftforge:31.2.47 FML Language Providers: javafml@31.2 minecraft@1 Mod List: NetherPortalFix_1.15.2-6.0.2.jar NetherPortalFix {netherportalfix@6.0.2 DONE} refinedpipes-0.4.2.jar Refined Pipes {refinedpipes@0.4.2 DONE} DoggyTalents-1.15.2-2.0.1.2.jar Doggy Talents 2 {doggytalents@2.0.1.2 DONE} mcws-win-1.15.2-v1.0.2.jar Macaw's Windows {mcwwindows@1.0.2 DONE} SilentMechanisms-1.15.2-0.8.0+59.jar Silent's Mechanisms {silents_mechanisms@0.8.0+59 DONE} Industrial Agriculture[Core]-1.15.2-1.7.0.jar Industrial Agriculture {industrialagriculture@1.15.2-1.7.0 DONE} strawgolem-1.15.2-1.9.jar Straw Golem {strawgolem@1.15.2-1.9 DONE} essentials-1.15.2-2.7.4.jar Essentials {essentials@1.15.2-2.7.4 DONE} Placebo-1.15.2-3.1.0.jar Placebo {placebo@3.1.0 DONE} NamePain-1.3.1 Forge-1.15.2.jar Name Pain {namepain@1.3.1 DONE} theloader-1.15.2-1.1.0.jar The Loader {theloader@1.15.2-1.1.0 DONE} WitherSkeletonTweaks-1.15.2-4.0.2.jar Wither Skeleton Tweaks {wstweaks@4.0.2 DONE} u_team_core-1.15.2-3.0.2.169.jar U Team Core {uteamcore@3.0.2.169 DONE} randompatches-1.15.2-1.22.1.1.jar RandomPatches {randompatches@1.15.2-1.22.1.1 DONE} buildinggadgets-3.4.1.jar Building Gadgets {buildinggadgets@3.4.1 DONE} ProgressiveBosses-2.1.5-mc1.15.2.jar Progressive Bosses {progressivebosses@2.1.5-mc1.15.2 DONE} mcw-doors-1.0.2-mc1.15.2.jar Macaw's Doors {mcwdoors@1.0.2 DONE} Morpheus-1.15.2-4.2.50.jar Morpheus {morpheus@version DONE} MekanismGenerators-1.15.2-9.10.9.422.jar Mekanism: Generators {mekanismgenerators@9.10.9 DONE} Hwyla-forge-1.10.8-B72_1.15.2.jar Waila {waila@version DONE} SnowRealMagic-1.15.2-1.7.5.jar Snow! Real Magic! {snowrealmagic@1.7.5 DONE} refinedstorage-1.8.8.jar Refined Storage {refinedstorage@1.8.8 DONE} PackMenu-1.15.2-1.2.8.jar Pack Menu {packmenu@1.2.8 DONE} mcw-bridges-1.0.5-mc1.15.2.jar Macaw's Bridges {mcwbridges@1.0.5 DONE} industrial-foregoing-1.15.2-2.3.3-e356e61.jar Industrial Foregoing {industrialforegoing@2.3.3 DONE} useful_backpacks-1.15.2-1.10.3.77.jar Useful Backpacks {usefulbackpacks@1.10.3.77 DONE} AmbientSounds_v3.0.20_mc1.15.2.jar Ambient Sounds {ambientsounds@3.0.3 DONE} Industrial Agriculture[Silent's Mechanisms]-1.15.2-1.6.1.jar Industrial Agriculture Plugin-Silent's Mechanisms {iapsm@1.15.2-1.6.1 DONE} BiomesOPlenty-1.15.2-10.0.0.366-universal.jar Biomes O' Plenty {biomesoplenty@1.15.2-10.0.0.366 DONE} phosphor-forge-mc1.15.2-0.5.2+build.4.jar Phosphor {phosphor@0.5.2+build.4 DONE} Blur-1.1.0-1.jar Blur {blur@1.1.0-1 DONE} valhelsia_structures-15.0.3a.jar Valhelsia Structures {valhelsia_structures@15.0.3a DONE} mcw-trapdors-1.0.1-mc1.15.2.jar Macaw's Trapdoors {mcwtrpdoors@1.0.1 DONE} mining_dimension-1.15.2-1.0.4.jar Mining World {mining_dimension@1.15.2-1.0.4 DONE} SilentGear-1.15.2-1.11.4+187.jar Silent Gear {silentgear@1.11.4+187 DONE} simplefarming-1.15.2-1.3.4.jar Simple Farming {simplefarming@1.15.1-1.3.4 DONE} MysticalAdaptations-1.15.2-1.2.3.jar Mystical Adaptations {mysticaladaptations@NONE DONE} MysticalAgradditions-1.15.2-3.0.1.jar Mystical Agradditions {mysticalagradditions@3.0.1 DONE} curios-FORGE-1.15.2-2.0.2.7.jar Curios API {curios@FORGE-1.15.2-2.0.2.7 DONE} Patchouli-1.15.2-1.2-35.jar Patchouli {patchouli@1.15.2-1.2-35 DONE} config-2-3.0.jar Cloth Config v2 API {cloth-config2@3.0 DONE} OreExcavation-1.7.151.jar Ore Excavation {oreexcavation@NONE DONE} libnonymous-1.15.2-1.1.1.5.jar Libnonymous {libnonymous@1.1.1.5 DONE} elevatorid-1.15.2-1.7.1.jar Elevator Mod {elevatorid@1.15.2-1.7.1 DONE} obfuscate-0.5.0-1.15.2.jar Obfuscate {obfuscate@0.5.0 DONE} NaturesAura-28.5.jar Nature's Aura {naturesaura@28.5 DONE} furniture-7.0.0-pre16-1.15.1.jar MrCrayfish's Furniture Mod {cfm@7.0.0-pre16 DONE} AI-Improvements-1.15.2-0.3.0.jar AI-Improvements {aiimprovements@0.3.0 DONE} mcw-furniture-1.0.1-mc1.15.1 1.15.2.jar Macaw's Furnitures {mcwfurnitures@1.0.1 DONE} the_bumblezone-1.15.2-1.3.10.jar The Bumblezone {the_bumblezone@1.15.2-1.3.10 DONE} FastLeafDecay-v22.1.jar FastLeafDecay {fastleafdecay@v22.1 DONE} inventorysorter-1.15.2-17.0.0.jar Simple Inventory Sorter {inventorysorter@17.0.0 DONE} Cucumber-1.15.2-3.0.9.jar Cucumber Library {cucumber@3.0.9 DONE} mining-helmet-1.15.2-1.0.9.jar Mining Helmet {mining_helmet@1.0.9 DONE} metalbarrels-2.2.jar Metal Barrels {metalbarrels@2.2 DONE} FallingTree-1.15.2-2.4.0.jar Falling Tree {falling_tree@2.4.0 DONE} fishtraps-forge-1.15.2-0.0.5.jar Fish Traps {fishtraps@1.14.4-0.0.4 DONE} Abnormals-Core-1.15.2-1.0.6.jar Abnormals Core {abnormals_core@1.0.6 DONE} Buzzier-Bees-1.15.2-1.5.2.jar Buzzier Bees {buzzierbees@1.5.2 DONE} KiwiBirds 1.3 1.15.2.jar Kiwi Birds {kiwibirds@1.2 1.15.2 DONE} goblintraders-1.2.0-1.15.2.jar Goblin Traders {goblintraders@1.2.0 DONE} Mekanism-1.15.2-9.10.9.422.jar Mekanism {mekanism@9.10.9 DONE} Waystones_1.15.2-6.0.2.jar Waystones {waystones@6.0.2 DONE} goldenhopper-1.1.1-1.15.2.jar Golden Hopper {goldenhopper@1.1.1 DONE} light-overlay-4.7.2.jar Light Overlay Forge {lightoverlay-forge@NONE DONE} journeymap-1.15.2-5.7.0b3.jar Journeymap {journeymap@5.7.0b3 DONE} comforts-FORGE-1.15.2-2.0.0.4.jar Comforts {comforts@FORGE-1.15.2-2.0.0.4 DONE} NaturesCompass-1.15.2-1.8.5.jar Nature's Compass {naturescompass@1.15.2-1.8.5 DONE} FruitTrees-1.15.2-1.7.0.jar Fruit Trees {fruittrees@1.7.0 DONE} Kiwi-1.15.2-2.8.5.jar Kiwi {kiwi@2.8.5 DONE} VanillaTweaks-1.15.2.1.5.30.jar VanillaTweaks {vanillatweaks@1.15.2.1.5.30 DONE} DefaultSettings-1.14.x-1.15.2-2.2.0.jar DefaultSettings {defaultsettings@2.2.0 DONE} betteranimalsplus-1.15.2-10.1.0.jar Better Animals Plus {betteranimalsplus@10.1.0 DONE} snowundertrees-1.15.2-v1.1.1.jar Snow Under Trees {snowundertrees@v1.1.1 DONE} BonsaiTrees-2.1.2.6.jar Bonsai Trees 2 {bonsaitrees2@2.1.2.6 DONE} JEITweaker-1.15.2-1.0.1.3.jar JEI Tweaker {jeitweaker@1.0.1.3 DONE} CraftTweaker-1.15.2-6.0.0.24.jar CraftTweaker {crafttweaker@6.0.0.24 DONE} Swamp-Expansion-1.15.2-1.7.3.jar Swamp Expansion {swampexpansion@NONE DONE} forge-1.15.2-31.2.47-universal.jar Forge {forge@31.2.47 DONE} Waddles-1.15.2-0.8.6.jar Waddles {waddles@1.15.2-0.8.6 DONE} MysticalAgriculture-1.15.2-3.0.10.jar Mystical Agriculture {mysticalagriculture@3.0.10 DONE} ironchest-1.15.2-10.0.3.jar Iron Chests {ironchest@1.15.2-10.0.1 DONE} CraftingTweaks_1.15.2-11.0.1.jar Crafting Tweaks {craftingtweaks@11.0.1 DONE} forge-1.15.2-31.2.47-client.jar Minecraft {minecraft@1.15.2 DONE} The-Endergetic-Expansion-1.15.2-v1.3.2.jar The Endergetic Expansion {endergetic@1.3.2 DONE} swingthroughgrass-1.15.2-1.4.1.jar SwingThroughGrass {swingthroughgrass@1.15.2-1.4.1 DONE} MouseTweaks-2.13-mc1.15.1.jar Mouse Tweaks {mousetweaks@2.13 DONE} titanium-1.15.2-2.4.2.jar Titanium {titanium@2.4.2 DONE} SilentLib-1.15.2-4.6.6+59.jar Silent Lib {silentlib@4.6.6+59 DONE} morevanillalib-1.15.2-1.2.4.jar MoreVanillaLib {morevanillalib@1.2.4 DONE} Savage-and-Ravage-1.15.2-1.1.4.jar Savage & Ravage {savageandravage@1.1.4 DONE} JAOPCA-1.15.2-3.2.0.16.jar JAOPCA {jaopca@3.2.0.16 DONE} gravestone-1.17.6.jar Gravestone Mod {gravestone@1.17.6 DONE} autumnity-1.3.3-1.15.2.jar Autumnity {autumnity@1.3.3 DONE} polymorph-FORGE-1.15.2-0.10.jar Polymorph {polymorph@FORGE-1.15.2-0.10 DONE} AutoRegLib-1.5-40.jar AutoRegLib {autoreglib@1.5-40 DONE} Quark-r2.1-245.jar Quark {quark@r2.1-245 DONE} StorageDrawers-1.15.2-7.0.3.jar Storage Drawers {storagedrawers@1.15.2-7.0.3 DONE} performant-1.15-3.16m.jar Performant {performant@3.16m DONE} vanillahammers-1.15.2-2.1.jar Vanilla Hammers {vanillahammers@2.1 DONE} midnight-0.5.11.jar The Midnight {midnight@0.5.11 DONE} jei-1.15.2-6.0.3.15.jar Just Enough Items {jei@6.0.3.15 DONE} PickleTweaks-1.15.2-4.0.4.jar Pickle Tweaks {pickletweaks@4.0.4 DONE} AppleSkin-mc1.15.2-forge-1.0.14.jar AppleSkin {appleskin@1.0.14 DONE} Aquaculture-1.15.2-2.0.23.jar Aquaculture 2 {aquaculture@1.15.2-2.0.23 DONE} Industrial Agriculture[Mekanism]-1.15.2-1.6.1.jar Industrial Agriculture Plugin-Mekanism {iapmekanism@1.15.2-1.6.1 DONE} refinedstorageaddons-0.6.3.jar Refined Storage Addons {refinedstorageaddons@0.6.3 DONE} SolarGeneration-1.15.2-1.2.2.jar Solar Generation {solargeneration@1.2.2 DONE} SoundFilters-0.14_for_1.15.2.jar Sound Filters {soundfilters@0.14_for_1.15.2 DONE} Kiwi Modules: fruittrees:cherry fruittrees:fruittrees fruittrees:hybridization kiwi:contributors kiwi:data snowrealmagic:snowrealmagic Patchouli open book context: n/a Player Count: 0 / 8; [] Data Packs: Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'forge'   This was caused by loading a world ive sunk a fair bit of time into, after some strange error removed the "instance.cfg" for the pack on MultiMC, not sure if that has anything to do with it. I might try a fresh install of the instance and see if it can boot up the world.
    • So, i want to make a program where you can make minecraft servers with a few clicks. But there is a problem. I can't download modded server as easy as spigot. So i would like to know how to download only the server client from forge installer in java. I looked into the source code of forge installer but i just don't know what is what, so i hope someone know what codes are important from the forge installer to make a program where i download only the server client.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.