Compatibility
Minecraft: Java Edition
Platforms
Supported environments
75% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+Links
Creators
Details
Before Running This Mod
This mod is designed for advanced Minecraft users / mod developers. If you do not know how Java handles Program arguments, don't run it.
WARN: ANY COMMAND CAN BE EXECUTED THROUGH THIS MOD LOADING, INCLUDING WHICH ARE MALICIOUS. THE AUTHOR WILL NOT BE RESPONSIBLE FOR ANYTHING CAUSED BY RUNNING THIS MOD.
Mod Synopsis
This mod is a simple but powerful tool for overriding Java Program arguments.
How to Use This Mod
This mod uses 2 Java Properties: rege.rege.misc.javaprogargoverride.Util.overridingArgs
(called overridingArgs
below for convenience) and rege.rege.misc.javaprogargoverride.Util.overridingArgsType
(called overridingArgsType
below for convenience).
This is a simple example that works (for client-side):
1. Create overrideargs.py
at the root directory of the Minecraft instance with following content:
#!/usr/bin/env python
from sys import stdin, stdout
stdout.write(stdin.read())
stdout.write(" --fullscreen")
2. Edit the content of Java Properties arguments (e.g. “Settings/Java arguments” in Prism Launcher), add these: -Drege.rege.misc.javaprogargoverride.Util.overridingArgs="python overrideargs.py" -Drege.rege.misc.javaprogargoverride.Util.overridingArgsType=exec
.
3. Launch the game, and you will find that the Minecraft windows is created in a fullscreen state.
Explanation of the example:
- This mod will first check whether Property
overridingArgs
is present. If no, this mod will do nothing. - There are 2 types available for Property
overridingArgsType
:plain
andexec
. The default isplain
. If it isplain
, then the arguments specified byoverridingArgs
will be directly used as the overriding arguments, in UNIX-Shell-styled format. If it isexec
, then the arguments specified byoverridingArgs
will be executed as a command (like Batch / Shell commands), the arguments to be overridden will be passed into STDIN in UNIX-Shell-styled format. The STDOUT of the command will be used as the overriding arguments, in UNIX-Shell-styled format.- For example, raw argument string
arg1 'arg2' "arg3" \a\r\g\4
will be resolved as 4 argumentsarg1
,arg2
,arg3
andarg4
; raw argument stringarg\\1 'arg\\2' "arg\\3" 'a'"r"g\''4' ""
will be resolved as 5 argumentsarg\1
,arg\\2
,arg\3
,arg'4
and ``(empty string); raw argument string"arg\"1" 'arg'\'"2" "arg\\\\3" arg\ \\4
will be resolved as 4 argumentsarg"1
,arg'2
,arg\\3
andarg \4
. - For example, arguments
--width
,1800
,--height
and1200
will be passed to STDIN as--width 1800 --height 1200
; arguments--version
, ``(empty string),--gameDir
and/home/this/is/a/path/with/"doubles"/'singles'/and/s p a c e s/and/even/\backslashes\
will be passed to STDIN as--version '' --gamedir /home/this/is/a/path/with/\"doubles\"/\'singles\'/and/s\ p\ a\ c\ e\ s/and/even/\\backslashes\\
.
- For example, raw argument string
- Appending arguments only is recommended (output the original arguments by using e.g.
sys.stdout.write(sys.stdin.read())
in Python,System.out.write(System.in.readAllBytes())
in Java andcat -
in Shell Script). But if you want, you can even make full use of the arguments!
Notice
This mod is “Client-side optional, Server-side optional”, and client-side and server-side version of this mod work independently.
The client-side mod JAR will not be run on the server-side and vice versa. Please ensure you are running the correct version of the mod JAR on the correct side.
If the argument format (by overridingArgs
or the STDOUT when overridingArgsType
is exec
) is incorrect, Minecraft will crash:
- Quote not close, for example: If the raw argument string is
python "overrideargs.py
,java.lang.IllegalArgumentException: quote at index 7 not closed
will be thrown. - Unexpected escape character(
\
) at the end of the raw argument string, for example: If the raw argument string ispython overrideargs.py\
,java.lang.IllegalArgumentException: unexpected escape at the end
will be thrown. - Command not found, for example: If the raw argument string is
pyhon overrideargs.py
,java.io.IOException: Cannot run program "pyhon": error=2, No such file or directory
(may vary by operating system) will be thrown.
Report Issues
Please leave a comment about your issue under the gist.