{"action":"created","issue":{"url":"https://api.github.com/repos/DemonWav/MinecraftDev/issues/28","repository_url":"https://api.github.com/repos/DemonWav/MinecraftDev","labels_url":"https://api.github.com/repos/DemonWav/MinecraftDev/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/DemonWav/MinecraftDev/issues/28/comments","events_url":"https://api.github.com/repos/DemonWav/MinecraftDev/issues/28/events","html_url":"https://github.com/DemonWav/MinecraftDev/issues/28","id":164671866,"number":28,"title":"Detect refrencing code with @SideOnly in Forge from the wrong side","user":{"login":"Katrix-","id":11007080,"avatar_url":"https://avatars.githubusercontent.com/u/11007080?v=3","gravatar_id":"","url":"https://api.github.com/users/Katrix-","html_url":"https://github.com/Katrix-","followers_url":"https://api.github.com/users/Katrix-/followers","following_url":"https://api.github.com/users/Katrix-/following{/other_user}","gists_url":"https://api.github.com/users/Katrix-/gists{/gist_id}","starred_url":"https://api.github.com/users/Katrix-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Katrix-/subscriptions","organizations_url":"https://api.github.com/users/Katrix-/orgs","repos_url":"https://api.github.com/users/Katrix-/repos","events_url":"https://api.github.com/users/Katrix-/events{/privacy}","received_events_url":"https://api.github.com/users/Katrix-/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/DemonWav/MinecraftDev/labels/feature:%20mixins","name":"feature: mixins","color":"e2b604"},{"url":"https://api.github.com/repos/DemonWav/MinecraftDev/labels/platform:%20forge","name":"platform: forge","color":"b60205"},{"url":"https://api.github.com/repos/DemonWav/MinecraftDev/labels/status:%20wip","name":"status: wip","color":"875eee"},{"url":"https://api.github.com/repos/DemonWav/MinecraftDev/labels/type:%20enhancement","name":"type: enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"DemonWav","id":1332104,"avatar_url":"https://avatars.githubusercontent.com/u/1332104?v=3","gravatar_id":"","url":"https://api.github.com/users/DemonWav","html_url":"https://github.com/DemonWav","followers_url":"https://api.github.com/users/DemonWav/followers","following_url":"https://api.github.com/users/DemonWav/following{/other_user}","gists_url":"https://api.github.com/users/DemonWav/gists{/gist_id}","starred_url":"https://api.github.com/users/DemonWav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DemonWav/subscriptions","organizations_url":"https://api.github.com/users/DemonWav/orgs","repos_url":"https://api.github.com/users/DemonWav/repos","events_url":"https://api.github.com/users/DemonWav/events{/privacy}","received_events_url":"https://api.github.com/users/DemonWav/received_events","type":"User","site_admin":false},"assignees":[{"login":"DemonWav","id":1332104,"avatar_url":"https://avatars.githubusercontent.com/u/1332104?v=3","gravatar_id":"","url":"https://api.github.com/users/DemonWav","html_url":"https://github.com/DemonWav","followers_url":"https://api.github.com/users/DemonWav/followers","following_url":"https://api.github.com/users/DemonWav/following{/other_user}","gists_url":"https://api.github.com/users/DemonWav/gists{/gist_id}","starred_url":"https://api.github.com/users/DemonWav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DemonWav/subscriptions","organizations_url":"https://api.github.com/users/DemonWav/orgs","repos_url":"https://api.github.com/users/DemonWav/repos","events_url":"https://api.github.com/users/DemonWav/events{/privacy}","received_events_url":"https://api.github.com/users/DemonWav/received_events","type":"User","site_admin":false}],"milestone":null,"comments":18,"created_at":"2016-07-09T15:35:30Z","updated_at":"2016-10-26T14:28:04Z","closed_at":null,"body":"Would be nice if there was some sort of warning if you tried to reference code annotated `@SideOnly` from the wrong side in Forge, as such code would crash."},"comment":{"url":"https://api.github.com/repos/DemonWav/MinecraftDev/issues/comments/256364429","html_url":"https://github.com/DemonWav/MinecraftDev/issues/28#issuecomment-256364429","issue_url":"https://api.github.com/repos/DemonWav/MinecraftDev/issues/28","id":256364429,"user":{"login":"Katrix-","id":11007080,"avatar_url":"https://avatars.githubusercontent.com/u/11007080?v=3","gravatar_id":"","url":"https://api.github.com/users/Katrix-","html_url":"https://github.com/Katrix-","followers_url":"https://api.github.com/users/Katrix-/followers","following_url":"https://api.github.com/users/Katrix-/following{/other_user}","gists_url":"https://api.github.com/users/Katrix-/gists{/gist_id}","starred_url":"https://api.github.com/users/Katrix-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Katrix-/subscriptions","organizations_url":"https://api.github.com/users/Katrix-/orgs","repos_url":"https://api.github.com/users/Katrix-/repos","events_url":"https://api.github.com/users/Katrix-/events{/privacy}","received_events_url":"https://api.github.com/users/Katrix-/received_events","type":"User","site_admin":false},"created_at":"2016-10-26T14:28:04Z","updated_at":"2016-10-26T14:28:04Z","body":"Here is a few other cases where a SideOnly should be inferred automatically. \r\n\r\nThere exists a interface called `IGuiHandler` which has the methods `getClientGuiElement` and `getServerGuiElement` which delegates to the server and client side.\r\n\r\nRecently Forge added a annotation called `@Mod.EventBusSubscriber`. This annotation will automatically register all static listeners in the class it's places on. This annotation can also take a `Side`, which in that case it will only register for that side. All static event listeners in a class with a sided `@EventBusSubscriber` should be also automatically be restricted to that side.\r\n\r\nLastly, and this is more of a question, I've encountered a few anomalies where a method isn't annotated with `SideOnly`, but where the method is still illegal because of the return type or the argument types. `getTextureOffset` in `ModelBase` is an example of this.\r\n\r\nSomething similar to this is what do to when it is crystal clear that client behavior should go in a method, but the method isn't sided. `ModelBase` is the only place I have encountered this so far. `ModelBase` has a method `render` which isn't sided. The problem comes from the fact that in the render method, what you are most definitively going to do is to call `render` on a `ModelRenderer` in your class. The only problem is that the `render` in `ModelRenderer` is sided."}}
{"actor":{"display_login":"Katrix-"}}