Tested with Minecraft 1.8 & Forge 11.14.3.1450
java.lang.NoClassDefFoundError: com/zeroturnaround/javarebel/gen/RebelLocator$$1
)-Drebel.minecraft.proxy=true
and as long the block has no-parameter constructor with all block initialization inside (so no chaining setters), the plugin is able to reflect some changes during runtime (e.g. block hardness, in which tab the block is located in, yadda-yadda). This is done by using some proxy magic. As usual, you can override methods defined in Block class with JRebel and see the changes without any plugin-related wizardry.-Drebel.minecraft.disable_save=true
JVM argumentmvn clean package
using Maven or grab built artifact from here-javaagent:/path/to/jrebel.jar -Drebel.plugins=/path/to/jr-minecraft-plugin.jar
If using gradle, place the arguments inside build.gradle
's runClient
conf as
runClient {
jvmArgs '-javaagent:/path/to/jrebel.jar', '-Drebel.plugins=/path/to/jr-minecraft-plugin.jar'
}
When setting up rebel.xml
, make sure that first element of classpath points to directory that contains the assets
folder, where you update the textures (should you want to do that).
With that, just start up Minecraft, get into a world, change texture or json and save it - it automatically detects that a resource was changed and will invoke reload for the resourcepackage (takes couple of seconds). Customising rebel.xml
is not required if you're only changing classes, as long as your IDE created a correct one to begin with.
-Drebel.minecraft.skip_reload_handlers
- accepts comma-separated names of classes (e.g. com.Foo,com.Bar
). When resource reloading occurs, handlers of these classes are not notified to speed up the reload process. Can cut the reload time nearly in half by skipping SoundHandler
as -Drebel.minecraft.skip_reload_handlers=net.minecraft.client.audio.SoundHandler
. Add it to build.gradle
's jvmArgs
.