Jump to content

portablejim

Members
  • Posts

    8
  • Joined

  • Last visited

Posts posted by portablejim

  1. The installer seems to create a version JSON that is incorrect, or at least that the launcher doesn't like.

     

    Steps:

    1. Move current .minecraft directory out of the way.
    2. Launch the official Minecraft launcher, log in, launch the game once and quit.
    3. Grab https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.13.2-25.0.26/forge-1.13.2-25.0.26-installer.jar and run it.
    4. Notice the installer says it installed successfully.
    5. Launch the Minecraft launcher again.
    6. Notice that forge doesn't launch and when you edit the profile the version of forge is not there (even though when you look at the profile list it looks right).
    7. Notice the crash log.

     

    Crash log:

    Spoiler

    [17:12:49 INFO]: Minecraft Launcher 1.6.89-j (through bootstrap 4) started on linux...
    [17:12:49 INFO]: Current time is Feb 18, 2019 5:12:49 PM
    [17:12:49 INFO]: System.getProperty('os.name') == 'Linux'
    [17:12:49 INFO]: System.getProperty('os.version') == '4.18.0-15-generic'
    [17:12:49 INFO]: System.getProperty('os.arch') == 'amd64'
    [17:12:49 INFO]: System.getProperty('java.version') == '1.8.0_191'
    [17:12:49 INFO]: System.getProperty('java.vendor') == 'Oracle Corporation'
    [17:12:49 INFO]: System.getProperty('sun.arch.data.model') == '64'
    [17:12:49 INFO]: proxy == DIRECT
    [17:12:49 INFO]: Refreshing local version list...
    [17:12:49 ERROR]: Couldn't load local version /home/james/.minecraft/versions/1.13.2-forge-25.0.26/1.13.2-forge-25.0.26.json
    com.google.gson.JsonSyntaxException: java.net.MalformedURLException: no protocol:
        at com.google.gson.Gson.fromJson(Gson.java:818) ~[launcher.jar:1.6.89-j]
        at com.google.gson.Gson.fromJson(Gson.java:768) ~[launcher.jar:1.6.89-j]
        at com.google.gson.Gson.fromJson(Gson.java:717) ~[launcher.jar:1.6.89-j]
        at com.google.gson.Gson.fromJson(Gson.java:689) ~[launcher.jar:1.6.89-j]
        at net.minecraft.launcher.updater.LocalVersionList.refreshVersions(LocalVersionList.java:46) [launcher.jar:1.6.89-j]
        at net.minecraft.launcher.updater.MinecraftVersionManager.refreshVersions(MinecraftVersionManager.java:60) [launcher.jar:1.6.89-j]
        at net.minecraft.launcher.Launcher$2.run(Launcher.java:177) [launcher.jar:1.6.89-j]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_191]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_191]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_191]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_191]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
    Caused by: java.net.MalformedURLException: no protocol:
        at java.net.URL.<init>(URL.java:593) ~[?:1.8.0_191]
        at java.net.URL.<init>(URL.java:490) ~[?:1.8.0_191]
        at java.net.URL.<init>(URL.java:439) ~[?:1.8.0_191]
        at com.google.gson.internal.bind.TypeAdapters$18.read(TypeAdapters.java:448) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.TypeAdapters$18.read(TypeAdapters.java:440) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) ~[launcher.jar:1.6.89-j]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) ~[launcher.jar:1.6.89-j]
        at com.google.gson.Gson.fromJson(Gson.java:803) ~[launcher.jar:1.6.89-j]
        ... 11 more
    [17:12:49 INFO]: Refreshing remote version list...
    [17:12:50 INFO]: Refresh complete.
    [17:12:50 INFO]: Loaded 2 profile(s); selected 'portablejim'
    [17:12:50 INFO]: Refreshing auth...
    [17:12:50 INFO]: Logging in with access token

     

     

    Workaround:

    1. Edit the version json to put "http://files.minecraftforge.net/maven/" in the url field for forge (corresponding to source code line https://github.com/MinecraftForge/MinecraftForge/blob/1.13.x/build.gradle#L492)
    2. With the file saved, re-launch the launcher.
    3. Play modded minecraft.
    • Like 1
  2. 23 hours ago, diesieben07 said:

    Nothing of that coremod-hackyness was required, ever.

    Before 1.13 you could just add resource packs to Minecraft#defaultResourcePacks. In 1.13 the system seems to have been reworked a bit, but something similar should be possible. No need for coremods.

    Thanks for the tip. It did get me there in the end.

     

    For those who come after: Implement IPackFinder, look at FolderPack/FilePack/AbstractResourcePack and extend if needed, and call

    ((Minecraft)mc).getResourcePackList().addPackFinder()

    with your implementation of IPackFinder.

  3. In 1.12 and before, I have used an implementation of IFMLLoadingPlugin to allow an extension of DummyModContainer to be able to return a custom class to getCustomResourcePackClass(). This allowed a hidden folder-based resource pack that always loaded but is easily able to be changed at runtime by the user or bundled by the modpack dev.

     

    I am wondering if this mod (source code at https://github.com/portablejim/Additional-Resources/tree/master/src/main/java/portablejim/additionalresources ) and the mod dependent on this one is able to be brought to 1.13 and what approach I should be looking at?

  4. Given a recent discussion in github, I was wanting some input into the configuration system (including config screen) I use for VeinMiner.

     

    1) The configuration screen

     

    The main screen

     

    UZ98UlZ.png

     

    "Enable Veinminer": Cycles between different options

    "Range" and "Blocklimit": Slider with a logarithmic* scale with the range 1-1000 blocks.

    "Range" and "Blocklimit": Slider with a logarithmic* scale and the end displays "Infinite".

    The tool is selectable and the tool list and block list for each tool can be gotten to.

    * It changes more per pixel the greater the number.

     

    The tool list

     

    SJ1AS3u.png

     

    ASYNGbd.png

     

    A list of tools. Typing in the box will show the icon to the left of the box when you type a matching name. "Delete from list" acts on the currently selected item of the list.

     

    The block list

     

    9sgxfAG.png

     

    Similiar to the tool list.

     

     

    2) Configuration files

     

    I have 2 configuration files. The first one uses the standard configuration class.

     

    # Configuration file
    
    ##########################################################################################################
    # autodetect
    #--------------------------------------------------------------------------------------------------------#
    # Autodetect items and blocks during game start-up.
    ##########################################################################################################
    
    autodetect {
        # Autodetect blocks with the below prefixes in the ore dictionary, adding the names to the axe list. [default: true]
        B:autodetect.blocks.axe.enable=true
    
        # List of prefixes to autodetect as blocks to be used with a axe.
        # Separate with ',' [default: 'log,treeLeaves'] 
        S:autodetect.blocks.axe.prefixes=log,treeLeaves
    
        # Autodetect blocks with the below prefixes in the ore dictionary, adding the names to the hoe list. [default: false]
        B:autodetect.blocks.hoe.enable=false
    
        # List of prefixes to autodetect as blocks to be used with a hoe.
        # Separate with ',' [default: ''] 
        S:autodetect.blocks.hoe.prefixes=
    
        # Autodetect blocks with the below prefixes in the ore dictionary, adding the names to the pickaxe list. [default: true]
        B:autodetect.blocks.pickaxe.enable=true
    
        # List of prefixes to autodetect as blocks to be used with a pickaxe.
        # Separate with ',' [default: 'ore'] 
        S:autodetect.blocks.pickaxe.prefixes=ore
    
        # Autodetect blocks with the below prefixes in the ore dictionary, adding the names to the shears list. [default: true]
        B:autodetect.blocks.shears.enable=true
    
        # List of prefixes to autodetect as blocks to be used with a shears.
        # Separate with ',' [default: 'treeLeaves'] 
        S:autodetect.blocks.shears.prefixes=treeLeaves
    
        # Autodetect blocks with the below prefixes in the ore dictionary, adding the names to the shovel list. [default: false]
        B:autodetect.blocks.shovel.enable=false
    
        # List of prefixes to autodetect as blocks to be used with a shovel.
        # Separate with ',' [default: ''] 
        S:autodetect.blocks.shovel.prefixes=
    
        # Autodetect tools on starting the game, adding the names to the list.
        B:autodetect.tools.enable=true
    }
    
    
    ##########################################################################################################
    # client
    #--------------------------------------------------------------------------------------------------------#
    # These settings are used client side, so they have no impact on servers.
    ##########################################################################################################
    
    client {
        # What mode should the client use when joining a game.
        # Valid modes: [default: pressed]
        #   'disabled' = don't enable, even when keybind pressed
        #   'pressed' = enables when keybind is pressed
        #   'released' = enables when keybind is released
        #   'sneak' = enables when sneaking (ignores keybind)
        #   'no_sneak' = enables when not sneaking (ignores keybind)
        S:client.preferredMode=pressed
    }
    
    
    limit {
        # Limit of blocks to be destroyed at once. Use -1 for infinite. [range: -1 to 2147483647, default: 800]
        I:limit.blocks=-1
    
        # Maximum number of blocks to be removed per game tick (1/20 seconds). Using a low number will keep the game from getting huge performance drops but also decreases the speed at which blocks are destroyed. [range: 1 ~ 1000, default: 10]
        I:limit.blocksPerTick=10
    
        # Maximum distance from the first block to search for blocks to destroy. [range: -1 to 1000, default: 20]
        I:limit.radius=545
    }
    
    
    misc {
        # Block IDs (with metadata) to consider equivalent.
        # Names are formatted like 'modName:block_name/metadata'. Separate names (with metadata) with ','. Use 'minecraft' as the mod name for vanilla blocks.
        # [default: 'minecraft:redstone_ore=minecraft:lit_redstone_ore']
        S:equalBlocks=minecraft:lit_redstone_ore=minecraft:redstone_ore
    }
    
    
    overrides {
        # Mine all blocks with all registered tools that can harvest blocks.
        B:override.allBlocks=false
    
        # Allow all tools, including the open hand, to be used to mine blocks.
        B:override.allTools=false
    }
    
    
    

     

     

    The second uses JSON to configure the tools. Custom values for the tools can be used (e.g. for new tool groups added by other mods).

     

    {
      "tools": {
        "axe": {
          "name": "Axe",
          "icon": "minecraft:diamond_axe",
          "toollist": [
            "minecraft:diamond_axe",
            "minecraft:golden_axe",
            "minecraft:iron_axe",
            "minecraft:stone_axe",
            "minecraft:wooden_axe"
          ],
          "blocklist": [
            "minecraft:fence",
            "minecraft:leaves",
            "minecraft:leaves2",
            "minecraft:log",
            "minecraft:log2"
          ]
        },
        "hoe": {
          "name": "Hoe",
          "icon": "minecraft:diamond_hoe",
          "toollist": [
            "minecraft:diamond_hoe",
            "minecraft:golden_hoe",
            "minecraft:iron_hoe",
            "minecraft:stone_hoe",
            "minecraft:wooden_hoe"
          ],
          "blocklist": [
            "minecraft:carrots",
            "minecraft:melon_block",
            "minecraft:potatoes",
            "minecraft:pumpkin",
            "minecraft:wheat"
          ]
        },
        "pickaxe": {
          "name": "Pickaxe",
          "icon": "minecraft:diamond_pickaxe",
          "toollist": [
            "minecraft:diamond_pickaxe",
            "minecraft:golden_pickaxe",
            "minecraft:iron_pickaxe",
            "minecraft:stone_pickaxe",
            "minecraft:wooden_pickaxe"
          ],
          "blocklist": [
            "minecraft:coal_ore",
            "minecraft:cobblestone_wall",
            "minecraft:diamond_ore",
            "minecraft:emerald_ore",
            "minecraft:glowstone",
            "minecraft:gold_ore",
            "minecraft:iron_ore",
            "minecraft:lapis_ore",
            "minecraft:lit_redstone_ore",
            "minecraft:mossy_cobblestone",
            "minecraft:nether_brick_fence",
            "minecraft:obsidian",
            "minecraft:quartz_ore",
            "minecraft:redstone_ore"
          ]
        },
        "shears": {
          "name": "Shears",
          "icon": "minecraft:shears",
          "toollist": [
            "minecraft:shears"
          ],
          "blocklist": [
            "minecraft:deadbush",
            "minecraft:leaves",
            "minecraft:leaves2",
            "minecraft:tallgrass",
            "minecraft:vine",
            "minecraft:web",
            "minecraft:wool"
          ]
        },
        "shovel": {
          "name": "Shovel",
          "icon": "minecraft:diamond_shovel",
          "toollist": [
            "minecraft:diamond_shovel",
            "minecraft:golden_shovel",
            "minecraft:iron_shovel",
            "minecraft:stone_shovel",
            "minecraft:wooden_shovel"
          ],
          "blocklist": [
            "minecraft:clay",
            "minecraft:gravel"
          ]
        }
      }
    }
    

     

     

     

    I know I am using a custom configuration GUI.

    • Is this GUI intuitive?
    • For these options, can the forge config GUI be as intuitive (or more intuitive)?
    • I am using separate config files for data of different structures. Is this good? Should it be 1 config file?
    • Is there a better way to do this?

     

     

  5. Code:

    Network Registration: Lines 136 & 151

    Packet sent from server to client.

    Packet sent form client to server

     

    I load a single player world, wait a second, back to title screen and load the world again. Log file.

     

    Now in the log file, why does line 105 happen after 104 the first time I log in, but next time it is not the same as line 141. The packet seems to go missing?

     

    Or maybe there is something I am missing?

×
×
  • Create New...

Important Information

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