Starchasers / OCGlasses

mod for minecraft and addon for Open Computers
zlib License
30 stars 17 forks source link

[Bug] Crash when using UpdateModifier with out of range color value #74

Closed shadoxxhd closed 4 years ago

shadoxxhd commented 4 years ago

Describe the bug Apparently, OCGlasses doesn't verify parameters when using updateModifier instead of addColor.

In which environment did the Bug appear? Singleplayer; modified E2E

To Reproduce Steps to reproduce the behavior:

  1. set up connected OCGlasses
  2. open lua prompt on the computer connected to the glasses terminal
  3. run the folowing commands:
    cube=component.glasses.addCube3D()
    cube.addColor(0,255,255,200)
    cube.updateModifier(1,0,255,255,120)
  4. enjoy your crashed and possibly corrupted world

Expected behavior Minecraft doesn't crash.

Crash Stack Trace

java.lang.IllegalArgumentException: Color parameter outside of expected range: Green Blue
    at java.awt.Color.testColorValueRange(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Color.<init>(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Color.<init>(Unknown Source) ~[?:1.8.0_144]
    at ben_mkiv.commons0815.utils.utilsCommon.getIntFromColor(utilsCommon.java:125) ~[utilsCommon.class:?]
    at ben_mkiv.rendertoolkit.common.widgets.WidgetModifiers.getCurrentColor(WidgetModifiers.java:101) ~[WidgetModifiers.class:?]
    at ben_mkiv.rendertoolkit.common.widgets.WidgetGLOverlay$RenderableGLWidget.preRender(WidgetGLOverlay.java:221) ~[WidgetGLOverlay$RenderableGLWidget.class:?]
    at ben_mkiv.rendertoolkit.common.widgets.component.world.Cube3D$RenderCube3D.render(Cube3D.java:31) ~[Cube3D$RenderCube3D.class:?]
    at ben_mkiv.rendertoolkit.surface.ClientSurface.renderWidget(ClientSurface.java:138) ~[ClientSurface.class:?]
    at ben_mkiv.rendertoolkit.surface.ClientSurface.renderWidget(ClientSurface.java:133) ~[ClientSurface.class:?]
    at com.bymarcin.openglasses.surface.OCClientSurface.renderWidgets(OCClientSurface.java:195) ~[OCClientSurface.class:?]
    at com.bymarcin.openglasses.surface.OCClientSurface.renderWorld(OCClientSurface.java:145) ~[OCClientSurface.class:?]
    at com.bymarcin.openglasses.event.minecraft.client.ClientRenderEvents.renderWorldLastEvent(ClientRenderEvents.java:23) ~[ClientRenderEvents.class:?]
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_2511_ClientRenderEvents_renderWorldLastEvent_RenderWorldLastEvent.invoke(.dynamic) ~[?:?]
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
    at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) ~[EventBus.class:?]
    at net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(ForgeHooksClient.java:196) ~[ForgeHooksClient.class:?]
    at net.minecraft.client.renderer.EntityRenderer.func_175068_a(EntityRenderer.java:1432) ~[buq.class:?]
    at net.minecraft.client.renderer.EntityRenderer.func_78471_a(EntityRenderer.java:1259) ~[buq.class:?]
    at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1062) ~[buq.class:?]
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1119) ~[bib.class:?]
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398) [bib.class:?]
    at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_144]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_144]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_144]
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196) [NewLaunch.jar:?]
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]

Minecraft:

Additional context related: #68

shadoxxhd commented 4 years ago

temporary fix: bytecode-edited Commons0815 library I changed one method, adding color value clamping. Download: https://www47.zippyshare.com/v/tof7k8jr/file.html I might be enough to replace the library in your mods/memory_repo/ben_mkiv/Commons0815-MC1.12.2/1.1.0/ Folder; if not, open your OpenGlasses jar and replace the one in META-INF/libraries as well.

ben-mkiv commented 4 years ago

thanks for the report, im going to upload a fixed version within the next 2 days. sorry for the delay but i've just reinstalled my OS and got to fix some other issues before

ben-mkiv commented 4 years ago

leaving this open until official release is on CF

shadoxxhd commented 4 years ago

I also made a pull request that should fix the issue on the openGlasses side.

ben-mkiv commented 4 years ago

version 2-2.2-36 is now on curseForge, which includes the fix