portablejim
-
Posts
8 -
Joined
-
Last visited
Posts posted by portablejim
-
-
The installer seems to create a version JSON that is incorrect, or at least that the launcher doesn't like.
Steps:
- Move current .minecraft directory out of the way.
- Launch the official Minecraft launcher, log in, launch the game once and quit.
- 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.
- Notice the installer says it installed successfully.
- Launch the Minecraft launcher again.
- 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).
- 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 tokenWorkaround:
- 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)
- With the file saved, re-launch the launcher.
- Play modded minecraft.
- 1
-
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.
-
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?
-
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
"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
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
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?
- Is this GUI intuitive?
-
-
PacketPingClient is sent from PlayerLoggedInEvent.
-
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?
1.13 Installer (25.0.26) makes JSON that launcher doesn't like
in Support & Bug Reports
Posted
You know you are not young in the minecraft scene when you forget about the new launcher... Sigh.
Note for those not getting the hint: If your launcher looks like the one below... you are eligible for a free upgrade to the one Lex posted.