<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:27:02] ⇦ Quits: McJty (~jorrit@d8d872a26.access.telenet.be) (Quit: Leaving)
L2[01:40:48] <MCPBot_Reborn> [TEST CSV] Pushing snapshot_20170829 mappings to Forge Maven.
L3[01:40:51] <MCPBot_Reborn> [TEST CSV] Maven upload successful for mcp_snapshot-20170829-1.12.zip (mappings = "snapshot_20170829" in build.gradle).
L4[01:41:02] <MCPBot_Reborn> Semi-live (every 10 min), Snapshot (daily ~3:00 EST), and Stable (committed) MCPBot mapping exports can be found here: http://export.mcpbot.bspk.rs/
L5[02:05:31] ⇨ Joins: gigaherz|work (~gigaherz@84.89.63.25)
L6[02:08:49] *** AbrarSyed is now known as Abrar|gone
L7[02:30:11] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 383 seconds)
L8[03:05:37] ⇨ Joins: ben_mkiv (~ben_mkiv@p4FED5270.dip0.t-ipconnect.de)
L9[03:19:29] ⇨ Joins: abab9579 (~Abastro@175.223.45.229)
L10[03:22:29] ⇨ Joins: Spottedleaf (~Spottedle@node-1w7jr9qqos9g0tb6qbaszzfyd.ipv6.telus.net)
L11[03:23:34] ⇦ Quits: Abastro (~Abastro@143.248.189.20) (Ping timeout: 383 seconds)
L12[03:24:27] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L13[03:24:54] ⇦ Quits: ben_mkiv (~ben_mkiv@p4FED5270.dip0.t-ipconnect.de) (Remote host closed the connection)
L14[03:25:26] ⇨ Joins: Abastro (~Abastro@143.248.189.20)
L15[03:30:14] ⇨ Joins: A1b3 (~Abastro@143.248.242.203)
L16[03:31:37] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 183 seconds)
L17[03:31:45] ⇦ Quits: abab9579 (~Abastro@175.223.45.229) (Ping timeout: 383 seconds)
L18[03:32:26] ⇦ Quits: armed_troop (~armedtroo@108.4.200.66) (Ping timeout: 200 seconds)
L19[03:33:07] ⇨ Joins: armed_troop (~armedtroo@108.4.200.66)
L20[03:36:05] ⇦ Quits: Abastro (~Abastro@143.248.189.20) (Ping timeout: 383 seconds)
L21[03:37:02] ⇦ Quits: A1b3 (~Abastro@143.248.242.203) (Ping timeout: 383 seconds)
L22[03:45:11] ⇨ Joins: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se)
L23[03:46:18] ⇨ Joins: ben_mkiv (~ben_mkiv@p4FED5270.dip0.t-ipconnect.de)
L24[03:46:33] <ben_mkiv> anyone familiar with doRenderLayer() from LayerRenderer?
L25[03:47:05] <ben_mkiv> why is allways 0.0625 passed as scale argument for rendering the player?
L26[03:52:52] ⇦ Quits: Upthorn (~ogmar@108-85-88-44.lightspeed.frokca.sbcglobal.net) (Ping timeout: 200 seconds)
L27[03:59:43] ⇨ Joins: Hgrebnednav (~Hgrebnedn@d8d872a6e.access.telenet.be)
L28[04:00:33] <TechnicianLP> because the playermodel is pretty big if not scaled down ...
L29[04:02:38] <ben_mkiv> but all helpermethods are using the default scale :/
L30[04:03:35] <ben_mkiv> i dont get my glasses aligned on the player, they allways move way to far/short when leaning the playerhead
L31[04:04:30] <ben_mkiv> also, every source i looked at uses another method to align/render their stuff, hard to tell whats the way to go xD
L32[04:30:12] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L33[04:33:21] ⇨ Joins: gigaherz_ (~gigaherz@84.89.63.25)
L34[04:34:29] ⇦ Quits: gigaherz|work (~gigaherz@84.89.63.25) (Ping timeout: 186 seconds)
L35[04:37:58] ⇨ Joins: gigaherz|work (~gigaherz@84.89.63.25)
L36[04:38:44] ⇦ Quits: gigaherz_ (~gigaherz@84.89.63.25) (Ping timeout: 186 seconds)
L37[04:41:55] ⇦ Quits: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se) (Ping timeout: 186 seconds)
L38[04:56:58] ⇨ Joins: Brokkoli (~Brokkoli@p5B23CD11.dip0.t-ipconnect.de)
L39[05:10:02] ⇨ Joins: npe|office (~NPExcepti@bps-gw.hrz.tu-chemnitz.de)
L40[05:22:42] ⇦ Quits: Larry1123 (Larry1123@irc.larry1123.net) (Ping timeout: 204 seconds)
L41[05:26:41] ⇨ Joins: killjoy (~killjoy@2606:a000:1118:825b:a99f:7d33:5a71:a880)
L42[05:33:30] ⇨ Joins: Larry1123 (Larry1123@irc.larry1123.net)
L43[05:41:00] ⇨ Joins: MonkeyTyrant (~MonkeyTyr@24.215.118.74)
L44[05:52:00] <ben_mkiv> like seriously, is there any rig related way to get positions from the player to render stuff?
L45[05:52:21] <ben_mkiv> like i want to render something on the head and pick the current headscale/rotation/etc as reference from somewhere?
L46[05:53:46] <gigaherz|work> no there isn't a real place to do that
L47[05:53:59] <gigaherz|work> unless your item is an armor item
L48[05:54:02] <ben_mkiv> im getting crazy trying to align my glasses
L49[05:54:04] <ben_mkiv> it is an armor item
L50[05:54:11] <ben_mkiv> but it should render in baubles slot
L51[05:54:15] <ben_mkiv> thats what i write the renderer for
L52[05:54:34] <ben_mkiv> it works and looks fine in armor helmet slot, so i have no idea why i cant get it working fine with baubles, too
L53[05:54:44] <gigaherz|work> if you have an armor item
L54[05:54:49] <gigaherz|work> you can override getArmorModel
L55[05:54:55] <gigaherz|work> which lets you provide a custom ModelBiped
L56[05:55:00] <gigaherz|work> for which you can override the rendering code
L57[05:55:11] <ben_mkiv> hm, actually im using the armormodel which minecraft provides me
L58[05:55:17] <ben_mkiv> guess its the same it uses internal for armor render
L59[05:57:27] ⇦ Quits: Hunterz (~hunterz@2001:af0:8000:1c01:6af7:28ff:fe37:5d6a) (Quit: Leaving.)
L60[06:00:06] <ben_mkiv> looking at some other mods source, cosmetic armor reworked for example replaces the armor with the stuff to render as pre render event
L61[06:00:32] <ben_mkiv> and swaps back after render xD
L62[06:00:56] <ben_mkiv> and gigaherz, actually thats what i do
L63[06:02:29] <gigaherz|work> sorry I don't have the time right now to go deeper into the issue (being at work and all), maybe someone else can help
L64[06:03:59] <ben_mkiv> no problem
L65[06:05:30] <ben_mkiv> guess you are talking about stuff like armorModel.bipedHead, armorModel.bipedLeftArm?
L66[06:07:42] <gigaherz|work> I was talking about getArmorModel's Modelbiped getting the right values for the current pose
L67[06:08:07] <gigaherz|work> while a custom model rendering outside of the normal model code would have to calculate those values separately
L68[06:08:09] <ben_mkiv> so i apply the rotation/pitch i get as args when dorenderlayer is called to the armormodel?
L69[06:08:17] <ben_mkiv> instead of translating in GL space by myself?
L70[06:08:31] <gigaherz|work> nono, I didn't imply any of that
L71[06:08:44] <ben_mkiv> ah wait
L72[06:08:57] <ben_mkiv> when i fetch the model it is posed allready?
L73[06:09:05] <gigaherz|work> I was just saying that getArmorModel "just works" -- anything outside of that was out of the scope of my sentence ;P
L74[06:09:16] <ben_mkiv> oh
L75[06:09:18] <ben_mkiv> not for me
L76[06:09:34] <gigaherz|work> I don't remember if it's posed before getArmorModel, or the returned ModelBiped gets the values afterward
L77[06:09:44] <ben_mkiv> https://pastebin.com/cksRPPV2 thats my current rendercode
L78[06:09:52] <ben_mkiv> which only comes close to the result i want to archive
L79[06:10:03] <ben_mkiv> but i think its basicly what you're talking about
L80[06:10:15] <ben_mkiv> model = ForgeHooksClient.getArmorModel(mc.thePlayer, new ItemStack(new OpenGlassesItem()), EntityEquipmentSlot.HEAD, new ModelBiped());
L81[06:10:41] <ben_mkiv> thats called only once when setting up the class as the data doesnt change^
L82[06:12:50] <gigaherz|work> yeah no what you are doing is the complete opposite to what I was talking about
L83[06:13:02] <ben_mkiv> lol, shit
L84[06:13:08] <gigaherz|work> like
L85[06:13:10] <gigaherz|work> what i meant is
L86[06:13:24] <gigaherz|work> if you are trying to draw a custom model for one of the standard equipment slots
L87[06:13:32] <ben_mkiv> nono
L88[06:13:39] <gigaherz|work> then using getArmorModel and returning a custom ModelBiped "just works"
L89[06:13:42] <gigaherz|work> but th at's not your case
L90[06:13:50] <gigaherz|work> you are adding a new rendering layer, for custom items
L91[06:13:56] <ben_mkiv> yea
L92[06:14:11] <ben_mkiv> thats what i need for the item in a baubles slot
L93[06:15:04] <ben_mkiv> does getArmorModel() use any scale factor?
L94[06:15:11] <ben_mkiv> maybe that just messes up everything
L95[06:15:17] <gigaherz|work> hmm
L96[06:15:24] <gigaherz|work> this is what I do for my ToolBelt item: https://github.com/gigaherz/ToolBelt/blob/master/src/main/java/gigaherz/toolbelt/client/LayerToolBelt.java
L97[06:16:03] <gigaherz|work> and this is how I register my layers: https://github.com/gigaherz/ToolBelt/blob/master/src/main/java/gigaherz/toolbelt/client/ClientProxy.java#L82
L98[06:16:05] <ben_mkiv> yea you are creating the model on your own, while i rely on the model created by ItemArmor
L99[06:16:18] <gigaherz|work> yep
L100[06:17:15] <gigaherz|work> but the logic should be equivalent: you ask the item for a model, give it the pose, and render
L101[06:17:44] <ben_mkiv> thats what i thought, but its allways off a bit, and i cant explain by math why its even working actually xD
L102[06:17:46] <gigaherz|work> as I said, I don't have the time to go line by line
L103[06:17:52] <ben_mkiv> like i set scale 0.1F for the model and it looks scaled fine
L104[06:17:58] <ben_mkiv> but it doesnt make sense for me xD
L105[06:18:49] <ben_mkiv> this.livingEntityRenderer.getMainModel()).bipedBody.postRender(0.0625F);
L106[06:18:52] <ben_mkiv> can you explain this short?
L107[06:19:40] <gigaherz|work> this is used in vanilla to translate to the position of the hand
L108[06:19:43] <gigaherz|work> for like, drawing items
L109[06:19:54] <gigaherz|work> I'm using with the body "part", instead of an arm part
L110[06:20:07] <gigaherz|work> so that the belt is located relative to the body part
L111[06:20:21] <gigaherz|work> regardless of the rotation of the player
L112[06:20:35] <ben_mkiv> so it does all the transforms and also applies sneak translation?
L113[06:20:43] <ben_mkiv> translations^
L114[06:21:10] <gigaherz|work> not fully
L115[06:21:20] <gigaherz|work> i had to translate 0.2F upward while sneaking
L116[06:21:30] <gigaherz|work> search for "sneaking" in the code
L117[06:24:13] ⇦ Quits: cpup (~cpup@32.218.114.160) (Ping timeout: 200 seconds)
L118[06:30:01] ⇨ Joins: cpup (~cpup@32.218.117.186)
L119[06:36:13] ⇦ Quits: MonkeyTyrant (~MonkeyTyr@24.215.118.74) (Quit: Leaving)
L120[06:37:39] <ben_mkiv> gigaherz, seems like you can set isSneak on the armormodel before the postRender and it applies the sneak translation on its own
L121[06:37:46] <gigaherz|work> ah nice
L122[06:37:48] <ben_mkiv> model.isSneak = player.isSneaking();
L123[06:37:50] <gigaherz|work> I'll look into that
L124[06:44:39] ⇦ Quits: Uristqwerty (~chatzilla@modemcable128.165-177-173.mc.videotron.ca) (Read error: Connection reset by peer)
L125[07:07:06] ⇨ Joins: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de)
L126[07:34:14] ⇨ Joins: Nedelosk (~Nedelosk@ip-109-90-74-164.hsi11.unitymediagroup.de)
L127[07:44:51] ⇨ Joins: Xilef11 (kiwiirc@137.122.145.101)
L128[07:49:56] ⇦ Quits: npe|office (~NPExcepti@bps-gw.hrz.tu-chemnitz.de) (Remote host closed the connection)
L129[08:10:09] <ben_mkiv> yay
L130[08:10:16] <ben_mkiv> when it finally works \o/
L131[08:10:49] <gigaherz|work> nice
L132[08:10:55] <ben_mkiv> the magic is that doRenderLayer gets degres as Yaw/pitch values, while the biped model uses radians
L133[08:11:30] <ben_mkiv> https://pastebin.com/raw/gr4w9YTQ
L134[08:11:37] <ben_mkiv> also the method looks pretty sweet now :P
L135[08:11:44] <ben_mkiv> no confusing translations anymore
L136[08:12:24] <ben_mkiv> ah, sneaking code isnt working, probably needs some additional postrender for body
L137[08:32:02] ⇨ Joins: airbreather (~airbreath@d149-67-99-43.nap.wideopenwest.com)
L138[08:44:35] ⇨ Joins: Hunterz (~hunterz@62.182.234.189)
L139[08:48:01] ⇨ Joins: williewillus (~williewil@rrcs-67-78-117-195.sw.biz.rr.com)
L140[08:51:00] ⇦ Quits: Aroma1997 (~Aroma1997@i.am.aroma1997.org) (Quit: ZNC - http://znc.in)
L141[09:01:58] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-15-185.dhcp.embarqhsd.net)
L142[09:10:27] ⇨ Joins: Cast0077_ (~Cast0077@24-151-68-108.dhcp.nwtn.ct.charter.com)
L143[09:14:02] ⇨ Joins: Aroma1997 (~Aroma1997@my.name.is.something.along.the.lines.of.aroma1997.org)
L144[09:17:12] ⇦ Quits: airbreather (~airbreath@d149-67-99-43.nap.wideopenwest.com) (Ping timeout: 195 seconds)
L145[09:32:04] ⇨ Joins: malte0811 (~malte0811@p4FDE5519.dip0.t-ipconnect.de)
L146[09:37:07] ⇨ Joins: airbreather (~airbreath@d149-67-99-43.nap.wideopenwest.com)
L147[09:47:20] ⇨ Joins: Upthorn (~ogmar@108-85-88-44.lightspeed.frokca.sbcglobal.net)
L148[09:47:20] ⇦ Quits: Chais (~Chais@62.178.210.212) (Read error: Connection reset by peer)
L149[09:48:32] <ben_mkiv> well... finally xD
L150[09:50:05] ⇦ Quits: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de) (Quit: Javaschreiber)
L151[09:50:26] ⇨ Joins: Chais (~Chais@62-178-210-212.cable.dynamic.surfer.at)
L152[09:52:17] ⇨ Joins: Hgreb (~Hgrebnedn@d8D872A6E.access.telenet.be)
L153[09:54:44] ⇦ Quits: Hgrebnednav (~Hgrebnedn@d8d872a6e.access.telenet.be) (Ping timeout: 200 seconds)
L154[10:09:00] ⇦ Quits: gigaherz|work (~gigaherz@84.89.63.25) (Remote host closed the connection)
L155[10:12:48] <Subaraki> is there a packet for bow pullback ?
L156[10:13:27] <Subaraki> i'm experiencing out of sync pullback data on my custom bow
L157[10:13:55] <Subaraki> which is preventing me from firing correctly at visual cues
L158[10:15:09] ⇦ Quits: psxlover (psxlover@athedsl-4415372.home.otenet.gr) (Read error: Connection reset by peer)
L159[10:19:39] *** Santa|afk is now known as SatanicSanta
L160[10:19:46] ⇨ Joins: psxlover (psxlover@athedsl-4415372.home.otenet.gr)
L161[10:20:23] ⇦ Quits: Nedelosk (~Nedelosk@ip-109-90-74-164.hsi11.unitymediagroup.de) (Read error: Connection reset by peer)
L162[10:21:39] ⇦ Quits: Cast0077_ (~Cast0077@24-151-68-108.dhcp.nwtn.ct.charter.com) (Quit: Poof)
L163[10:24:25] <Subaraki> i've found code that syncs the usage of items
L164[10:24:43] <Subaraki> why though is it desyncing server side on vanilla forge ?
L165[10:24:50] <Subaraki> (outside of dev)
L166[10:25:28] <Subaraki> here's code
L167[10:25:29] <Subaraki> https://github.com/ArtixAllMighty/Rpg-Addon-BerserkMageArcher/blob/master/src/main/java/subaraki/BMA/item/weapons/ItemBowArcher.java
L168[10:28:11] ⇨ Joins: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de)
L169[10:30:17] <williewillus> you're saying it works properly in dev?
L170[10:30:22] <williewillus> / in SP?
L171[10:30:27] <williewillus> or it doesn't work always
L172[10:37:38] ⇨ Joins: CoderPuppy (~cpup@32.218.118.153)
L173[10:38:26] ⇦ Quits: cpup (~cpup@32.218.117.186) (Ping timeout: 204 seconds)
L174[10:57:51] ⇦ Quits: Cornelia (~Nel@c-75-71-231-133.hsd1.co.comcast.net) (Ping timeout: 383 seconds)
L175[11:02:47] ⇨ Joins: MalkContent (~MalkConte@p4FDCE2EE.dip0.t-ipconnect.de)
L176[11:07:00] <Subaraki> williewillus, it works in dev singleplayer
L177[11:07:19] <Subaraki> if i use the mod in my minecraft game, it's completely desync
L178[11:07:54] <ghz|afk> does it break in LAN mode?
L179[11:19:12] ⇨ Joins: Nedelosk (~Nedelosk@ip-109-90-74-164.hsi11.unitymediagroup.de)
L180[11:20:48] <Subaraki> when I stop using the bow and check the log (i've added some debug code) , the game says that the client is on like 2.6 pullback, while the server is only on 1.3
L181[11:21:18] <Subaraki> test 2 :
L182[11:21:19] <Subaraki> 4.0C? true
L183[11:21:19] <Subaraki> 1.25C? false
L184[11:21:29] <Subaraki> ^ c being short for client
L185[11:21:34] <Subaraki> no idea, let me try if it works in lan
L186[11:22:48] ⇨ Joins: h5h77 (~h5h77@2a02:8108:4b40:907:922b:34ff:feae:b38b)
L187[11:26:56] <Subaraki> lan started, 1.95 client pullback, 0.4 server
L188[11:26:58] <Subaraki> nope :/
L189[11:39:15] ⇦ Parts: malte0811 (~malte0811@p4FDE5519.dip0.t-ipconnect.de) ())
L190[11:45:44] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-15-185.dhcp.embarqhsd.net) (Remote host closed the connection)
L191[11:59:41] ⇨ Joins: Cornelia (~Nel@c-75-71-231-133.hsd1.co.comcast.net)
L192[12:00:31] *** PaleOff is now known as PaleoCrafter
L193[12:00:52] ⇦ Quits: Spottedleaf (~Spottedle@node-1w7jr9qqos9g0tb6qbaszzfyd.ipv6.telus.net) (Ping timeout: 383 seconds)
L194[12:03:49] <Subaraki> ghz|afk, any idea why there's such a big desync issue ?
L195[12:07:03] <ghz|afk> nope
L196[12:07:29] <barteks2x> so wait it works in dev but not when running from launcher?
L197[12:08:15] <barteks2x> or does it desync only on dedicated server?
L198[12:08:48] <ben_mkiv> glRotatef(0.25, 1, 1, 1) rotates all axis by 90�?
L199[12:09:07] <ben_mkiv> for GL11^
L200[12:09:19] <PaleoCrafter> uhm, no
L201[12:09:38] <PaleoCrafter> it rotates around the (1,1,1) vector by 0.25°
L202[12:09:40] <PaleoCrafter> :P
L203[12:10:29] ⇨ Joins: Noppes (~Noppes@ip56530f2e.direct-adsl.nl)
L204[12:11:19] ⇨ Joins: cpup (~cpup@32.218.118.205)
L205[12:11:20] <barteks2x> you need to have 3 rotatef lines to rotate around all o axis
L206[12:11:42] ⇦ Quits: CoderPuppy (~cpup@32.218.118.153) (Ping timeout: 204 seconds)
L207[12:11:59] <barteks2x> glRotatef(0.25, 1, 0, 0); glRotatef(0.25, 0, 1, 0), glRotatef(0.25, 0, 0, 1), and the result also in some way depends on order but I'm not exactly surehow
L208[12:13:13] <PaleoCrafter> yeah, you can get into a gimbal lock with these functions, but I also don't really know what a possible sequence would be :P
L209[12:13:29] <ben_mkiv> so the vector basicly works like the pivot point?
L210[12:13:39] <ben_mkiv> it rotates the whole mesh around it?
L211[12:14:06] <barteks2x> it rotates around a vector, if it's (1, 0, 0) it's around X axis
L212[12:24:47] ⇨ Joins: Raycoms (~Raycoms@200.135.87.183)
L213[12:25:12] <Subaraki> barteks2x, it doesnt work in singleplayer
L214[12:25:16] <Subaraki> havent tried dedicated server yet
L215[12:25:24] <barteks2x> but it does work in dev?
L216[12:25:27] <Subaraki> yeah
L217[12:25:36] <barteks2x> then the bytecode must be different somewhere
L218[12:26:50] ⇦ Quits: cpup (~cpup@32.218.118.205) (Ping timeout: 204 seconds)
L219[12:26:58] <barteks2x> it's issue with sync of vanilla item or your item?
L220[12:28:21] ⇨ Joins: cpup (~cpup@32.218.118.216)
L221[12:29:57] ⇨ Joins: McJty (~jorrit@d8d872121.access.telenet.be)
L222[12:46:58] ⇦ Quits: quadraxis (~quadraxis@cpc77293-basf12-2-0-cust699.12-3.cable.virginm.net) (Ping timeout: 186 seconds)
L223[12:48:12] <Raycoms> !latest
L224[12:48:16] ⇨ Joins: Spottedleaf (~Spottedle@node-1w7jr9qqos9g1scsom0y7ds5h.ipv6.telus.net)
L225[12:48:20] ⇨ Joins: CoderPuppy (~cpup@32.218.118.222)
L226[12:48:29] <Subaraki> barteks2x, my own
L227[12:48:42] <Subaraki> trying to replace the entire code with the regular bow code and checking if it changes anything
L228[12:48:53] ⇦ Quits: cpup (~cpup@32.218.118.216) (Ping timeout: 204 seconds)
L229[12:50:55] <Raycoms> does the startup log say anything? and are the forge versions equal?
L230[12:53:32] ⇨ Joins: TomyLobo (~TomyLobo@2a02:8109:87c0:20c:48d3:46b:3a65:efa8)
L231[12:57:50] <Subaraki> nope
L232[12:57:54] <Subaraki> yes
L233[12:58:01] <Subaraki> both 1.12
L234[12:58:51] <barteks2x> the same 1.12 forge version?
L235[13:00:34] ⇨ Joins: cpup (~cpup@32.218.118.233)
L236[13:01:58] <Subaraki> yes
L237[13:02:13] <Subaraki> and it shoudln't need to matter
L238[13:02:28] <Subaraki> people shouldn't be needing the exact same version as i code under to have a working bow
L239[13:03:13] <barteks2x> I know it's very unlikely but you aren
L240[13:03:15] <Ordinastie> I guess that's a debugger is useful
L241[13:03:25] <barteks2x> t using a more than 1MB network packet right?
L242[13:03:25] <Ordinastie> *why
L243[13:04:30] <barteks2x> because in the end the sync has to go throuygh network
L244[13:04:50] <barteks2x> are you actually receiving the rong values from packet?
L245[13:05:17] <williewillus> long item usage is handled through vanilla packets i thought
L246[13:05:47] ⇦ Quits: CoderPuppy (~cpup@32.218.118.222) (Ping timeout: 383 seconds)
L247[13:06:03] <PaleoCrafter> killjoy, lovely review right there, 8/8, m8
L248[13:06:33] <barteks2x> also one of the resons sometimes coremods are useful: you can add debug code to vanilla
L249[13:09:58] ⇨ Joins: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk)
L250[13:10:45] ⇦ Quits: MalkContent (~MalkConte@p4FDCE2EE.dip0.t-ipconnect.de) (Quit: Leaving)
L251[13:16:16] <killjoy> single line comment, not review :)
L252[13:16:41] <killjoy> That's some awfully complex debug code
L253[13:23:45] <Subaraki> barteks2x, pullback time / item usage is handled by miencraft itself in a data manager
L254[13:23:54] <Subaraki> im just puzzled why it would even desync
L255[13:31:58] <williewillus> barteks2x: or just use breakpoints + "evaluate and print" :P
L256[13:32:19] <barteks2x> but you can't do that in obfuscated environment
L257[13:32:24] <barteks2x> and in pefrformance sensitive code
L258[13:32:44] <barteks2x> and when the behavior you are debugging changes when you add such breapoints
L259[13:33:00] <barteks2x> I had to do all of the above
L260[13:40:34] ⇨ Joins: malte0811 (~malte0811@p4FDE5519.dip0.t-ipconnect.de)
L261[13:42:02] ⇦ Quits: Raycoms (~Raycoms@200.135.87.183) (Remote host closed the connection)
L262[13:43:18] ⇦ Quits: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net) (Ping timeout: 383 seconds)
L263[13:43:49] ⇨ Joins: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net)
L264[13:54:33] ⇦ Quits: williewillus (~williewil@rrcs-67-78-117-195.sw.biz.rr.com) (Quit: Leaving)
L265[13:56:16] ⇦ Quits: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net) (Ping timeout: 190 seconds)
L266[13:58:16] ⇨ Joins: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net)
L267[13:59:27] *** diesieben|away is now known as diesieben07
L268[13:59:55] ⇨ Joins: Cast0077 (~Cast0077@24-151-68-108.dhcp.nwtn.ct.charter.com)
L269[14:09:13] *** Abrar|gone is now known as AbrarSyed
L270[14:14:44] ⇦ Quits: McJty (~jorrit@d8d872121.access.telenet.be) (Quit: Leaving)
L271[14:24:54] <Subaraki> hmm
L272[14:25:05] <Subaraki> with the bow code, the timer is getting really borked as well
L273[14:25:09] <Subaraki> nothing changed there
L274[14:25:19] ⇨ Joins: Uristqwerty (~chatzilla@modemcable128.165-177-173.mc.videotron.ca)
L275[14:32:12] ⇦ Quits: Ipsis (~Ipsis@82-69-71-184.dsl.in-addr.zen.co.uk) (Ping timeout: 183 seconds)
L276[14:46:43] ⇦ Quits: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de) (Quit: Javaschreiber)
L277[14:50:29] <barteks2x> it became annoying enough that I'm going to attempot to fix the packet splitting netty spam...
L278[14:54:00] <barteks2x> any way to create Weakhashmap<Object, [Stacktrace]> mappings from breakpoint...?
L279[14:54:26] <diesieben07> intellij?
L280[14:54:29] <barteks2x> yes
L281[14:54:54] <barteks2x> I want to be able to remember wherre a particular method has been called before the problematic call
L282[14:55:15] <ghz|afk> hmm so I was having another of my "mod ideas" that I'm not really going to program myself
L283[14:55:17] <diesieben07> put "someStaticWeakHashMapField.put(<key>, new Exception().getStackTrace())" into "evaluate and log" of the breakpoint
L284[14:55:41] <diesieben07> it will spam the console a bit, though
L285[14:55:50] <barteks2x> it shouldn';t
L286[14:55:57] <barteks2x> because getStackTrac shouldn't print it
L287[14:56:07] <diesieben07> yes, but intellj will log "undefined"
L288[14:56:07] <Subaraki> ghz|afk, tell me
L289[14:56:11] <ghz|afk> one of the things that sortof annoys me of mc, is that mobs spawn randomly wherever certain conditions are met
L290[14:56:11] <diesieben07> or whatever put returns
L291[14:56:16] <Subaraki> ive got an idea myself, but i'm discouraged to do it alone
L292[14:56:28] <ghz|afk> and I was wondering of how it could possibly work
L293[14:56:33] <ghz|afk> that mobs can still spawn in places
L294[14:56:39] *** SatanicSanta is now known as Santa|afk
L295[14:56:54] <Subaraki> define places ?
L296[14:56:54] <ghz|afk> but it isn't random spawning
L297[14:57:01] <ghz|afk> that's the key ;P
L298[14:57:05] <Subaraki> oh
L299[14:57:09] <barteks2x> the method is called *a lot*
L300[14:57:11] <Subaraki> so random spawning that isnt random ?
L301[14:57:17] <ghz|afk> so what I was thinking is
L302[14:57:26] <ghz|afk> instead of generating only normal dirt
L303[14:57:35] <ghz|afk> just like how fortresses generate silverfish egg blocks
L304[14:57:50] <ghz|afk> each dirt block would have a chance to be a "bone deposit"
L305[14:57:56] <ghz|afk> with different density levels
L306[14:58:08] <diesieben07> barteks2x, alternatively, make some static method that always returns "true" but also puts stuff in the map, then call that from within "Condition"
L307[14:58:29] <ghz|afk> and during night, if the block is within 2 blocks from the surface
L308[14:58:33] <ghz|afk> and the surface block is dark enough
L309[14:58:36] <Subaraki> oooh
L310[14:58:42] <Subaraki> that's actually a ncie idea :o
L311[14:58:44] <ghz|afk> it would "spend" one of the density levels
L312[14:58:49] <barteks2x> put returns the previous value
L313[14:58:52] <ghz|afk> in exchange for spawning a skeleton or zombie
L314[14:59:00] <ghz|afk> brb
L315[14:59:02] <barteks2x> so I can always add it as condition and do map.put(whatever) == null || true
L316[14:59:19] <diesieben07> that works
L317[14:59:39] ⇦ Quits: Hunterz (~hunterz@62.182.234.189) (Quit: Leaving.)
L318[14:59:50] <barteks2x> or I can disable suspend and just add == null
L319[14:59:51] <LexMobile> So basically you want to remove natural spawning, and you want to make mob spawners with fuel.
L320[15:00:33] ⇦ Quits: Xilef11 (kiwiirc@137.122.145.101) (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
L321[15:01:51] <barteks2x> why netty is such a hard thing to debug...
L322[15:02:18] <Subaraki> sounds logic for zombies and skeletons
L323[15:02:27] <Subaraki> what about creepers though ?
L324[15:02:30] <Subaraki> and spiders ?
L325[15:02:32] <LexMobile> cuz its a clusterfuck of black magic wrapped in 30 layers of redirection
L326[15:03:00] <killjoy> just point towards the witch so we can burn it
L327[15:03:07] <Subaraki> *should look into mob spawning*
L328[15:03:13] <LexMobile> Creepers have a chance of being spawned around lava!
L329[15:03:23] <killjoy> well they don't explode when on fire
L330[15:03:33] <Subaraki> ? ._. why would the game need to be so specific about that xD
L331[15:03:34] <Subaraki> lightlevels ?
L332[15:03:38] <Subaraki> doubt it
L333[15:03:46] <Subaraki> but i do see what you mean
L334[15:04:33] <barteks2x> and now I need to figure out why a runnable has been added twice...
L335[15:08:20] ⇦ Quits: Noppes (~Noppes@ip56530f2e.direct-adsl.nl) (Read error: Connection reset by peer)
L336[15:10:26] <Subaraki> send packet twice ?
L337[15:11:06] <barteks2x> or... just called twice?
L338[15:13:04] ⇨ Joins: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de)
L339[15:13:11] <ghz|afk> back
L340[15:13:12] ⇦ Quits: Nedelosk (~Nedelosk@ip-109-90-74-164.hsi11.unitymediagroup.de) (Read error: Connection reset by peer)
L341[15:13:15] <ghz|afk> : So basically you want to remove natural spawning, and you want to make mob spawners with fuel.
L342[15:13:37] <ghz|afk> I guess you can think of it that way
L343[15:13:50] <ghz|afk> I suppose it is an accurate way of describing it
L344[15:15:20] <ghz|afk> that only works for zombies and skeletons, though (lore-wise)
L345[15:15:32] <ghz|afk> for creepers, I'd have something like alien eggs
L346[15:15:38] <ghz|afk> randomly generated around the world
L347[15:15:45] <ghz|afk> in small clusters
L348[15:16:09] <Subaraki> spiders ?
L349[15:16:19] <Subaraki> spider web eggs or so :P
L350[15:16:21] <ghz|afk> same
L351[15:16:28] <ghz|afk> creepers and spawners -> egg clusters
L352[15:16:32] <Subaraki> enderman can just appear
L353[15:16:35] <ghz|afk> skeletons and zombies -> bone deposits
L354[15:16:38] <Subaraki> they teleport from the end
L355[15:16:43] <ghz|afk> endermen -> dimensional rifts
L356[15:16:51] <Subaraki> nice idea
L357[15:16:56] <Subaraki> do the rifts spawn at night ?
L358[15:17:01] <Subaraki> or do they stay in palce?
L359[15:17:06] <Subaraki> sounds like a fun mod altogether.
L360[15:17:12] <ghz|afk> the idea would be, that you should be able to "clean" an area
L361[15:17:16] <Subaraki> you could make your area mob free if you wanted
L362[15:17:20] <Subaraki> haha xD
L363[15:17:21] <ghz|afk> and stop all spawning without requiring torches
L364[15:17:46] <ghz|afk> either by digging out all the spawns, or by covering them up with a few layers of stuff
L365[15:17:47] <ghz|afk> ;P
L366[15:18:11] <Subaraki> maybe you could cause some to get up while building your house and managing terrain
L367[15:18:24] <Subaraki> also, cleaning the area could be a pita though
L368[15:18:26] ⇨ Joins: Abastro (~Abastro@110.35.38.113)
L369[15:18:31] <Subaraki> how on earth are you going to locate them ?
L370[15:18:33] <ghz|afk> it would have to be
L371[15:18:36] <ghz|afk> ;P
L372[15:18:45] <Subaraki> also, if you'd stay long enough, the mobs wouldn't spawn when depeleted
L373[15:18:58] <Subaraki> depleting the fuel after x days *
L374[15:19:02] <ghz|afk> yup
L375[15:19:10] <ghz|afk> that's the only drawback
L376[15:19:26] <ghz|afk> you could just pillar up, and AFK for a few days
L377[15:19:27] <ghz|afk> ;P
L378[15:19:42] <ghz|afk> unless the mobs are harder to kill
L379[15:19:44] <barteks2x> anything wrong with this? ForgeHooks.DBG.containsKey(inPacket) || ForgeHooks.DBG.put(inPacket, new Exception()) != null as a debug breakpoiint condition
L380[15:19:54] <barteks2x> it triggers on ever packet sent
L381[15:20:06] <ghz|afk> the undead could drop bone fragments that "infect" the ground and create a new bone deposit
L382[15:20:17] <ghz|afk> the creepers and spiders could lay eggs
L383[15:20:27] <ghz|afk> the endermen could create new rifts randomly while teleporting around
L384[15:20:30] <barteks2x> and DBG is WeakHashMap
L385[15:21:03] <ghz|afk> so if you stay in an area without killing
L386[15:21:06] <ghz|afk> you'd make things WORSE not better
L387[15:21:40] <Ordinastie> but then, why would you ever fight them ?
L388[15:22:40] <killjoy> !version
L389[15:22:50] <ghz|afk> to clean up your area, ofc
L390[15:23:10] <ghz|afk> also, I'd make biome variants with harder challenges
L391[15:23:16] <Ordinastie> oh "without killing"
L392[15:23:18] <Ordinastie> I misread
L393[15:23:54] <ghz|afk> like "ominous roofed forest" -> extra spider egg clusters and cobwebs on trees
L394[15:24:08] <ghz|afk> "bone plains" -> extra bone reposits
L395[15:24:27] <ghz|afk> and things like that
L396[15:24:42] <ghz|afk> deposits*
L397[15:25:49] *** PaleoCrafter is now known as PaleOff
L398[15:29:13] <barteks2x> this is unfixable...
L399[15:29:24] <barteks2x> f**ing netty
L400[15:29:57] <barteks2x> MessageToMessageEncoder is using the same proomise for all objects returned from encoder
L401[15:30:50] <diesieben07> how so? It shouldn't...
L402[15:31:33] <diesieben07> it should use the promise that's passed in
L403[15:31:51] <diesieben07> which quite often is the re-used "void promise" of the channel, but you can pass your own if you want to.
L404[15:32:03] ⇨ Joins: Dark (~MrDark@2607:fcc8:d48b:eb00:e14e:529f:a468:4c39)
L405[15:32:39] <barteks2x> and how does it deal with reusing the same void promise?
L406[15:32:46] <barteks2x> because it just keeps using one instance of it
L407[15:32:55] <diesieben07> yes, thats the nature of the void promise
L408[15:33:15] <barteks2x> normally when promise is marked as success twice, it shows warning
L409[15:33:16] <diesieben07> it's the promise that is used if you call write on the channel without the need for an acutal "usable" promise
L410[15:33:20] <barteks2x> how the void one deals with it
L411[15:33:42] <diesieben07> afaik there are checks for isVoidPromise in many places
L412[15:33:45] <diesieben07> it's special cased
L413[15:34:32] *** darkevilmac is now known as darkevilmac|nope
L414[15:35:56] <barteks2x> hm... it seems to ctx.newPromise
L415[15:36:39] ⇦ Parts: darkevilmac|nope (~darkevilm@omega.infra.surgeplay.com) ())
L416[15:36:45] ⇨ Joins: darkevilmac (~darkevilm@omega.infra.surgeplay.com)
L417[15:36:48] <diesieben07> when needed, yes
L418[15:38:32] <barteks2x> so you know far more about netty than I do... and yet it's me debugging the issue
L419[15:38:34] <barteks2x> WHY
L420[15:39:08] <Ordinastie> I sense some frustration here :p
L421[15:39:28] <ghz|afk> now? he's been frustrated one way or another for months
L422[15:39:28] <ghz|afk> ;P
L423[15:39:50] ⇦ Quits: Waterpicker (~Waterpick@2602:306:35ba:ca40:e5da:280d:5efe:f4eb) (Quit: Leaving)
L424[15:40:15] <diesieben07> i dont know the issue :P
L425[15:40:23] <diesieben07> also, i HATE working with netty
L426[15:41:06] ⇨ Joins: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se)
L427[15:41:51] <barteks2x> it's forge reusing the same promise
L428[15:41:55] <barteks2x> in NetworkDispatcher
L429[15:42:09] <barteks2x> for (Packet<INetHandlerPlayClient> pkt : parts) ctx.write(pkt, promise);
L430[15:43:56] <diesieben07> yep, thats broken
L431[15:44:16] <diesieben07> you need to create a bulk promise for the individual parts
L432[15:44:24] <diesieben07> and then resolve the passed-in promise when they are all done
L433[15:44:32] <barteks2x> ...what?
L434[15:45:00] <diesieben07> i typed like i thought there... let me rephrase
L435[15:45:04] <diesieben07> create a promise for every part
L436[15:45:19] <diesieben07> then when they are all done, fulfill the promise that write() gets as parameter
L437[15:45:23] <barteks2x> in MessageToMessageEncode netty just creates new promise for all messages except the last one, and uses the passed in promise for the last one
L438[15:45:27] <barteks2x> it's ugly to do it in java
L439[15:45:30] <barteks2x> but it does that
L440[15:45:54] <diesieben07> that would work, actually
L441[15:46:04] <diesieben07> you can just use void promises for them all, except the last one
L442[15:46:12] ⇦ Parts: malte0811 (~malte0811@p4FDE5519.dip0.t-ipconnect.de) ())
L443[15:46:17] <barteks2x> which is what netty doesif it's a void promise
L444[15:46:22] <barteks2x> but forge doesn't use void promise here
L445[15:46:28] <barteks2x> and it's for huge packets anyway
L446[15:46:29] <diesieben07> it needs to ;)
L447[15:46:36] <barteks2x> so not like memory pressure is an issue
L448[15:46:47] <diesieben07> packets are send sequentially, so if the last one is completed, they are all complete
L449[15:46:56] <diesieben07> so you can ignore the completion callback for all but the last one
L450[15:47:00] <barteks2x> it kinds relies on TCP
L451[15:47:03] <diesieben07> i.e. use void promise for all but the last one
L452[15:47:07] <barteks2x> but it's lot like anyone will change it, right?
L453[15:47:12] <diesieben07> no, the netty pipeline is sequential
L454[15:47:20] <diesieben07> what happens on the wire, after netty, might not be
L455[15:47:25] <diesieben07> but that's not what the promise refers to
L456[15:47:46] <barteks2x> so even if I tried to use udp, netty would make it work like tcp...?
L457[15:47:58] <diesieben07> No.
L458[15:48:05] <diesieben07> the packets would leave netty in order
L459[15:48:14] <diesieben07> but after netty comes the OS' network stack adn the actual network
L460[15:48:17] <diesieben07> which can reorder stuff
L461[15:48:18] <barteks2x> oh right because it's not the receiving end...
L462[15:48:28] <diesieben07> btu the promise fires when the packet leaves netty
L463[15:48:58] <barteks2x> so should I basically copy the netty logic which uses void promise only if the passsed in one os void, or just use void always for the messages in between?
L464[15:49:21] <diesieben07> i would say always void except for the last one, and for the last one use "promise"
L465[15:49:24] <diesieben07> that should work
L466[15:50:03] <barteks2x> then why netty doesn't do it that way?
L467[15:50:28] <barteks2x> I just don't want to break stuff in a way I won't notice
L468[15:50:32] <diesieben07> where exactly.
L469[15:50:34] <diesieben07> file and line please
L470[15:50:52] <barteks2x> MessageToMessageEncoder likes 116 to 128
L471[15:50:58] <barteks2x> *lines
L472[15:51:25] <barteks2x> it uses void one only if the passed in one is already void
L473[15:51:38] <barteks2x> (actually why doesn't forge use MessageTomessageEncoder here?)
L474[15:51:57] <Corosus> trying to setup the inventory variant within my forge_marker marked blockstate file for a block, is there an easy way to reference the handheld item model? doing just 'handheld' doesnt work since its looking from within the models/block domain
L475[15:52:13] <barteks2x> it basically reimplements MessageToMessageEncoder badly
L476[15:52:24] <Corosus> the vanilla one that is, a workaround is to make my own handheld model and put in my own domain within models/block but id rather avoid that
L477[15:52:45] <diesieben07> barteks2x, i dont know why they do that... seems unnecessary
L478[15:53:15] <barteks2x> maybe the reason being "there could be some code that relied on the old behavior"?
L479[15:53:42] <barteks2x> which seeing what kind of breaking changes netty did to forge seems like a stupid reason
L480[15:53:45] <diesieben07> i really don't know, the promise they create is not used at all
L481[15:53:46] <diesieben07> so... idk
L482[15:54:01] <barteks2x> how is it not used?
L483[15:54:14] <diesieben07> well, there are no listeners being installed on it
L484[15:54:28] <diesieben07> so it's just tracking the result of the operation, but nobody is listening
L485[15:54:46] <diesieben07> unless, well, ok, some handler down the line might rely on the promise being able to accept listeners
L486[15:54:50] <barteks2x> couldn't ctx.newPromise add listener to it?
L487[15:54:57] <barteks2x> some strange implementation of it
L488[15:55:08] <barteks2x> well, that could be the case
L489[15:55:09] <diesieben07> you can't make a custom context
L490[15:55:20] <diesieben07> but a handler later in the pipeline
L491[15:55:29] <barteks2x> right, some handler later doen the list might rely on it not being void
L492[15:55:36] <diesieben07> yeah
L493[15:55:41] <diesieben07> in forge... that is probably not the cast
L494[15:55:47] <diesieben07> so you can just use the void promise
L495[15:56:53] <barteks2x> whatever way I think to do it in java, it feels ugly
L496[15:57:16] <barteks2x> unless I rely on List.get() being fast
L497[15:57:51] <ghz|afk> List.get and List.add are fast
L498[15:57:57] <diesieben07> not always.
L499[15:57:58] <barteks2x> ArrayList.get is fast
L500[15:58:02] <barteks2x> LinkedList.get() isn;'t
L501[15:58:03] <diesieben07> if it's a LinkedList, it's not fast at all
L502[15:58:06] <ghz|afk> right
L503[15:58:16] <ghz|afk> I forgot that LinkedList is also a List
L504[15:58:21] <ghz|afk> (it isn't in C#)
L505[15:58:26] <diesieben07> but forge is the one creating the list
L506[15:58:29] <barteks2x> C# is weird then
L507[15:58:34] <diesieben07> so... it's an ArrayList, always.
L508[15:58:46] <ghz|afk> nah, in C#, List is ArrayList
L509[15:58:51] <ghz|afk> and List implements IList
L510[15:58:57] <diesieben07> oh god
L511[15:59:06] <diesieben07> C# naming convetions... please kill me
L512[15:59:08] <ghz|afk> but LinkedList does not inherit from List or IList
L513[15:59:35] <ghz|afk> it IS an ICollection<T>
L514[16:00:04] <ghz|afk> but "list" is assumed to have O(1) access and addition to the end
L515[16:00:24] <ghz|afk> whiel LinkedList explicitly exposes LinkedListNode instances with .Next and .Previous
L516[16:00:45] <ghz|afk> and has special methods like AddBefore, AddAfter
L517[16:00:47] <barteks2x> C# namind conversions aren't that bad
L518[16:01:04] <ghz|afk> I like the I prefix
L519[16:01:12] <ghz|afk> even in java
L520[16:01:13] <diesieben07> to each their own
L521[16:01:18] <diesieben07> but... please no
L522[16:01:21] <ghz|afk> so you know that ISomething goes after implement
L523[16:01:23] <barteks2x> after reading MC codefor so long, I just got used to writing it way too much
L524[16:01:24] <ghz|afk> while Something goes after extends
L525[16:01:25] <ghz|afk> ;p
L526[16:01:52] <diesieben07> the fact that there is extends and implements is terrible :P
L527[16:01:55] <ghz|afk> (C# doesn't have extends/implements, it's all just ... class Asdf : Base, Interface1, Interface2, ... )
L528[16:02:05] <barteks2x> and this way (almost?) all of my interfaces are ISomething...
L529[16:02:07] <diesieben07> see, there you go
L530[16:03:41] <killjoy> at least kotlin requires () on extending classes
L531[16:04:10] <diesieben07> it requires you to call the constructor ;)
L532[16:04:15] <killjoy> mhm
L533[16:05:31] ⇦ Quits: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net) (Ping timeout: 204 seconds)
L534[16:07:21] ⇨ Joins: bilde2910 (bilde2910@178.51-174-170.customer.lyse.net)
L535[16:10:42] <barteks2x> so testing if it works and if it does - I will submit another PR
L536[16:12:21] <ghz|afk> I like the way superclass constructors are done in C#
L537[16:12:42] <ghz|afk> just like how java's super() class must be first on the constructor
L538[16:12:48] <ghz|afk> C# goes one step further
L539[16:13:01] <ghz|afk> ClassName( args): base(args)
L540[16:13:02] <ghz|afk> {}
L541[16:13:04] <ghz|afk> or
L542[16:13:09] <ghz|afk> ClassName( args): this(args) {}
L543[16:13:16] <ghz|afk> for constructors in the same class
L544[16:13:26] <barteks2x> the java way seems more flexible here
L545[16:13:35] <ghz|afk> how so= you can't put anything before super ;P
L546[16:13:47] <barteks2x> but you can put sifferent super() in different constructors
L547[16:13:53] <ghz|afk> so can you in C#
L548[16:14:00] <diesieben07> oh so thats where kotlin got it from :D
L549[16:14:03] ⇨ Joins: MonkeyTyrant (~MonkeyTyr@24.215.118.74)
L550[16:14:07] <ghz|afk> ClassName(a,b,c) : base(a,c) {}
L551[16:14:13] <Lord_Ralex> ClassName (arg1, arg2) : base(arg1) {d something with args}
L552[16:14:15] <ghz|afk> ClassName(d,e) : base(d,1) {}
L553[16:14:18] <barteks2x> and you can call static methods to get argument for super(), not sure about C#
L554[16:14:38] <ghz|afk> you can put any expression inside the base call
L555[16:14:53] <barteks2x> I guess anything involving "this" dosn't count
L556[16:14:58] <ghz|afk> ClassName(a,b,c) : base(Math.sin(a * c) + 1) {}
L557[16:15:28] <ghz|afk> (which is really Math.Sin in C# -- titlecase)
L558[16:16:27] <ghz|afk> and yeah, you can't use "this" before the start of the code block
L559[16:16:36] <ghz|afk> so no base(this.X)
L560[16:17:46] <ghz|afk> the one thing I don't know if I like more or not
L561[16:17:50] <ghz|afk> are generic type constraints
L562[16:18:04] <ghz|afk> java has <? extends X> and such
L563[16:18:23] <ghz|afk> C# has class Blah<T> where T: something
L564[16:18:41] <ghz|afk> noting that ":" is C#'s equivalent of extends/implements
L565[16:18:48] <ghz|afk> so it reads like
L566[16:19:03] <ghz|afk> "where T (extends or implements) something"
L567[16:19:12] <barteks2x> does it allow something like "allow all primitives"?
L568[16:19:18] <ghz|afk> T: struct
L569[16:19:23] <ghz|afk> allows primitives and enums and structs
L570[16:19:25] <ghz|afk> basically all valuetypes
L571[16:20:54] <ghz|afk> due to reification, it has "default(T)" as a construct to be substituted by the default value of the given type
L572[16:21:16] <ghz|afk> so ref types would be null, numbers would be 0, enums would be the first element in the list
L573[16:21:39] ⇦ Quits: MonkeyTyrant (~MonkeyTyr@24.215.118.74) (Quit: Leaving)
L574[16:21:57] <ghz|afk> structs have a strong implicit parameterless constructor, that fills all fields with their default values
L575[16:22:08] <ghz|afk> and any alternative constructor MUST assign all values
L576[16:23:02] <ghz|afk> working with structs has one very annoying side-effect
L577[16:23:16] <ghz|afk> list_of_struct[0] returns a copy of the value
L578[16:23:20] <ghz|afk> so
L579[16:23:27] <barteks2x> I really hope java value types become a thing before MC java modding dies
L580[16:23:27] <ghz|afk> list_of_struct[0].X = 1 is illegal
L581[16:23:40] <ghz|afk> because it can never assign the value
L582[16:23:52] <ghz|afk> since it's a purely temporary copy
L583[16:24:19] <barteks2x> so how do you modify ones in arrays?
L584[16:24:26] <ghz|afk> you assign it again
L585[16:24:45] ⇦ Quits: Javaschreiber (~Thunderbi@88-209-32-73.nga.highspeed-baumann.de) (Quit: Javaschreiber)
L586[16:24:48] <ghz|afk> or use a method with ref parameter
L587[16:24:50] <barteks2x> I just hope their JIT optimizes it to something sensible
L588[16:24:55] <ghz|afk> like
L589[16:25:03] <ghz|afk> SetX(ref list_of_struct[0], 1)
L590[16:25:04] <diesieben07> barteks2x, it does ;)
L591[16:25:26] <diesieben07> java value types are gonna be hella cool
L592[16:25:28] <ghz|afk> or it can be a method on the struct
L593[16:25:34] <ghz|afk> since "this" is byref even in structs
L594[16:25:50] <ghz|afk> so
L595[16:25:55] <ghz|afk> list_of_struct[0].SetX(1)
L596[16:25:56] <ghz|afk> does work
L597[16:26:01] <ghz|afk> iirc...
L598[16:26:19] <ghz|afk> I'm now doubting myself ;p
L599[16:27:19] <diesieben07> in java values will always be completey immutable, i like that :D
L600[16:27:35] <ghz|afk> even in local variables?
L601[16:27:48] <ghz|afk> so you won't be able to do
L602[16:27:50] <diesieben07> well, i am talking about the jvm side of things
L603[16:27:54] <ghz|afk> valuestruct x; x.y=1; ?
L604[16:27:58] <diesieben07> the language side is not done yet at all
L605[16:28:04] <ghz|afk> ah
L606[16:28:09] <diesieben07> on the jvm, you always have to create a copy when you assign something
L607[16:28:15] <diesieben07> it will probably work with locals
L608[16:28:20] <ghz|afk> right
L609[16:28:54] <ghz|afk> how are they going to implement it?
L610[16:29:08] <ghz|afk> I have always imagined structs not existing as local variables
L611[16:29:08] <diesieben07> well, there is only very basic prototypes
L612[16:29:15] <ghz|afk> and just being a whole bunch of separate values
L613[16:29:16] <ghz|afk> like
L614[16:29:20] <diesieben07> but afaik they are just unpacked into registers
L615[16:29:21] <ghz|afk> method(Vector2)
L616[16:29:29] <ghz|afk> would be in practice
L617[16:29:33] <ghz|afk> method(float,float)
L618[16:29:41] <ghz|afk> just the metadata would say "nono, this is a Vector2!"
L619[16:29:57] <diesieben07> yes, but that transformation needs to happen at runtime
L620[16:30:00] <diesieben07> not at compile time
L621[16:30:06] <diesieben07> otherwise all breaks loose with separate compilation
L622[16:30:20] <ghz|afk> right the definition of Vector2 could change
L623[16:30:22] <barteks2x> so PR submitted
L624[16:30:25] <ghz|afk> and the code should continue working
L625[16:30:28] <diesieben07> yep
L626[16:30:38] <ghz|afk> so the JVM would have to break apart the structs
L627[16:30:43] <diesieben07> thats what they do in java afaik, the jvm transforms the method signatures
L628[16:30:53] <ghz|afk> but the bytecode would need dedicated valuetype instructions
L629[16:30:54] <diesieben07> so the values just get passed broken up in registers
L630[16:30:58] <diesieben07> yep
L631[16:31:32] <diesieben07> where things get problematic is fields
L632[16:31:33] <ghz|afk> I do suppose C/C++ doesn't need that treatment
L633[16:31:38] <ghz|afk> but C#/Java would
L634[16:31:55] <diesieben07> because fields have "this is one thing" guarantees, i.e. you don't get partial values
L635[16:32:05] <diesieben07> so you can't just explode a Vec2 into two float fields
L636[16:32:21] <ghz|afk> not if they are immutable
L637[16:32:22] <ghz|afk> ;p
L638[16:32:34] <ghz|afk> if each sub-field is mutable separately, you could do it
L639[16:32:37] <diesieben07> the fields dont have to be immutable
L640[16:32:50] <diesieben07> but if its just two float fields, assignment is no longer atomic
L641[16:32:53] <ghz|afk> since class.field1.field2 = 0
L642[16:32:57] <ghz|afk> is partial modification
L643[16:33:02] <ghz|afk> and it could be downconverted to
L644[16:33:07] <ghz|afk> class.field1_field2 = 0
L645[16:33:23] <diesieben07> true, but what if you do class.field = someLocalVar
L646[16:33:26] <ghz|afk> ah right
L647[16:33:33] <ghz|afk> assigning the entire thing needs to become atoming
L648[16:33:34] <ghz|afk> atomic*
L649[16:33:43] <ghz|afk> so the jvm would in that case need to have transactional field assignment
L650[16:33:49] <ghz|afk> push a copy of the old value on the stack
L651[16:33:52] <ghz|afk> replace all fields
L652[16:33:52] <diesieben07> that, or locks, or... something
L653[16:34:00] <ghz|afk> if exception, rollback
L654[16:34:27] <ghz|afk> hmmm
L655[16:34:27] <diesieben07> its not just that
L656[16:34:35] <ghz|afk> you can't assure atomicity in concurrency
L657[16:34:36] <diesieben07> you would also have to guarantee that no other thread sees the half value
L658[16:34:38] <ghz|afk> you just can't
L659[16:34:47] <ghz|afk> C# doesn't even try to
L660[16:34:49] <diesieben07> you can, wiht locks
L661[16:34:58] <ghz|afk> it has Interlocked.Exchange and such
L662[16:34:59] <diesieben07> but you probably wont get that with "normal" value fields
L663[16:35:00] <barteks2x> well, assigning an integer is atomic
L664[16:35:02] <ghz|afk> for concurrency
L665[16:35:04] <ghz|afk> yes
L666[16:35:09] <ghz|afk> but assigning a long in 32bit OS can't be
L667[16:35:18] <diesieben07> in java it is.
L668[16:35:22] <diesieben07> afaik
L669[16:35:25] <ghz|afk> it can't be
L670[16:35:30] <diesieben07> they insert locks then
L671[16:35:35] <diesieben07> they have to implement the JMM
L672[16:35:37] <ghz|afk> I mean, cpu-wise
L673[16:35:40] <diesieben07> yeah
L674[16:35:46] <ghz|afk> java would have to use locks or interlocked operations
L675[16:36:00] <barteks2x> iirc it's not for long
L676[16:36:09] <ghz|afk> but interlocked exchanges on 64bit values are SLOW
L677[16:36:21] <barteks2x> in java logna assignment is not defined as atomic
L678[16:36:21] <ghz|afk> on 32bit cpu
L679[16:36:30] <barteks2x> by specification it's not atomic at all
L680[16:36:47] <ghz|afk> that would make more sense
L681[16:36:56] <ghz|afk> I would expect structs to also not be atomic
L682[16:36:59] <ghz|afk> it would be terribly slow
L683[16:37:37] <diesieben07> i didnt know long and double really did that
L684[16:38:02] <ghz|afk> https://stackoverflow.com/questions/4756536/what-operations-in-java-are-considered-atomic
L685[16:38:06] <ghz|afk> this agrees
L686[16:38:27] <ghz|afk> "Assignments to volatile longs and doubles are guaranteed to be atomic"
L687[16:38:32] <diesieben07> yes
L688[16:38:37] <ghz|afk> I assume that means "volatile long" has implicit interlocks
L689[16:39:04] <diesieben07> it does something to ensure atomicity
L690[16:39:10] <diesieben07> which on 64bit is probably not much
L691[16:39:30] <ghz|afk> yeah on x64, it's "free"
L692[16:39:35] <ghz|afk> on x86/32 it isn't
L693[16:40:08] <barteks2x> and making java work on 16bit anything would be near impossible :D
L694[16:40:18] <diesieben07> not really
L695[16:40:21] <diesieben07> just hella slow
L696[16:40:42] <ghz|afk> depends on the cpu features really
L697[16:40:50] <ghz|afk> on 16bit x86, it would be horrible
L698[16:40:58] <ghz|afk> other cpu architectures may have "chained locking"
L699[16:41:04] <ghz|afk> the way x86 locks work
L700[16:41:11] <ghz|afk> is that each cpu core has a "lock" signal
L701[16:41:18] <ghz|afk> if the lock signal is active
L702[16:41:28] <ghz|afk> the address in the address bits is considered locked
L703[16:41:35] <ghz|afk> and other cpus wanting to access the smae address will stall
L704[16:41:42] <ghz|afk> until the lock signal goes inactive
L705[16:41:51] <ghz|afk> so it's VERY limited
L706[16:41:52] <ghz|afk> ;P
L707[16:42:10] <ghz|afk> and doesn't protect against random context switching
L708[16:42:22] <ghz|afk> (unless lock also disables interrupts, but I don't remember that being the case)
L709[16:43:19] <ghz|afk> ah no I was wrong
L710[16:43:19] <ghz|afk> http://x86.renejeschke.de/html/file_module_x86_id_159.html
L711[16:43:29] <ghz|afk> LOCK# causes ANY memory access to stall
L712[16:43:35] <ghz|afk> if it happens to a shared memory location
L713[16:43:53] <ghz|afk> ah, but newer cpus don't just use the LOCK# signal
L714[16:44:01] <ghz|afk> and may have an internal inter-core signaling
L715[16:44:18] <barteks2x> Does OS even allow yout o use LOCK?
L716[16:44:23] <ghz|afk> sure
L717[16:44:27] *** AbrarSyed is now known as Abrar|gone
L718[16:44:29] <ghz|afk> that's how InterlockedExchange and such are implemented
L719[16:44:42] <ghz|afk> "lock xchg reg, [mem]"
L720[16:44:47] ⇨ Joins: KklyAq (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp)
L721[16:45:02] <ghz|afk> that is nice and easy for data widths supported by the cpu registers
L722[16:45:11] <ghz|afk> but atomic access can't be ensured if you need bigger access
L723[16:45:24] <ghz|afk> hence why 64bit atomics are slow on 32bit cpu
L724[16:46:22] <Subaraki> okay so, arrows created with the itemarrow's createArrow render particle effects on relogging, while I use regular arrows
L725[16:46:46] <ghz|afk> aren't regular arrows crated differently?
L726[16:47:00] <ghz|afk> I thought ItemArrow#createArrow is specific to tipped arrows
L727[16:47:10] <Subaraki> nah
L728[16:47:12] <Subaraki> this.potion = PotionTypes.EMPTY;
L729[16:47:18] <Subaraki> this.customPotionEffects.clear();
L730[16:47:30] <Subaraki> else if (stack.getItem() == Items.ARROW)
L731[16:47:33] <Subaraki> ^
L732[16:47:36] <ghz|afk> it still creates EntityTippedArrow
L733[16:47:40] <ghz|afk> isntead of EntityArrow
L734[16:47:41] <Subaraki> it has a check for arrows, and one for tipped arrows
L735[16:48:25] <ghz|afk> OOOOH
L736[16:48:28] <ghz|afk> tricky bastards
L737[16:48:36] <ghz|afk> EntityArrow is now SpectralArrow
L738[16:48:46] <ghz|afk> EntityTippedArrow adopted normal arrows also
L739[16:48:51] <Subaraki> yeah
L740[16:49:26] <Subaraki> EntityArrow being a common denominator though, if you want to check for anything that is a projectile arrow, you can check for EntityArrow
L741[16:49:28] <ghz|afk> gotta make an issue at the mcpbot repository
L742[16:49:29] <Subaraki> includes all of them
L743[16:50:11] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-15-185.dhcp.embarqhsd.net)
L744[16:50:15] ⇦ Quits: KklyAq (~Umbraco@113x37x12x233.ap113.ftth.ucom.ne.jp) (Ping timeout: 204 seconds)
L745[16:50:46] <Subaraki> ghz|afk, both spectral and tipped arrows extend EntityArrow
L746[16:50:51] <Subaraki> what are you on about ?
L747[16:51:16] <ghz|afk> i'm looking at 1.12
L748[16:51:29] <Subaraki> me too
L749[16:51:36] <Subaraki> public class EntitySpectralArrow extends EntityArrow
L750[16:51:39] <ghz|afk> wait you are right
L751[16:51:47] <Subaraki> public class EntityTippedArrow extends EntityArrow
L752[16:52:12] <ghz|afk> hmmm
L753[16:52:13] <ghz|afk> right
L754[16:52:14] <Subaraki> its just a common class that handles all the flying and rendering etc...
L755[16:52:16] <ghz|afk> EntityArrow.registerFixesArrow(fixer, "SpectralArrow");
L756[16:52:17] <ghz|afk> I saw that
L757[16:52:22] <ghz|afk> and I assumed wrongly
L758[16:52:23] <ghz|afk> ;p
L759[16:52:28] <Subaraki> happens to the best =)
L760[16:52:29] <ghz|afk> I'm tired I should go to sleep
L761[16:52:36] <Subaraki> good idea xD
L762[16:52:40] <Subaraki> talking of which
L763[16:52:47] <Subaraki> i heard sleeping in a hammock is better then sleeping in a bed
L764[16:52:51] <Subaraki> gonna try that asap
L765[16:52:56] <Subaraki> when i buy myself a hammock
L766[16:53:00] <Subaraki> (bought one for the gf)
L767[16:53:44] <Subaraki> its really comfy
L768[16:53:53] <Subaraki> and the naps you take in it are a blessing
L769[16:54:09] <Subaraki> and the position you have in it is way more comfartable then laying down flat on your back
L770[16:54:18] <Subaraki> lol, com-fart-able
L771[16:54:27] <Subaraki> comfortable *
L772[16:57:06] ⇨ Joins: VoxelBuster (~VoxelBust@pool-108-36-247-130.phlapa.fios.verizon.net)
L773[16:57:09] <VoxelBuster> hi all
L774[17:00:27] <Subaraki> hiya
L775[17:00:53] <VoxelBuster> i have an issue with fluids in my 1.12 mod im working on
L776[17:00:55] *** diesieben07 is now known as diesieben|away
L777[17:01:27] ⇦ Quits: Actuarius (~Actuarius@195.91.246.187) (Ping timeout: 383 seconds)
L778[17:01:58] ⇨ Joins: Actuarius (~Actuarius@195.91.246.187)
L779[17:02:19] <Subaraki> aaaah
L780[17:02:19] <Subaraki> yes
L781[17:02:20] <Subaraki> fluids
L782[17:02:24] <Subaraki> never worked with them ._.
L783[17:02:28] <Subaraki> what's the issue though ?
L784[17:02:32] <VoxelBuster> yeah missing textures
L785[17:02:36] <VoxelBuster> but no texture errors
L786[17:02:44] <VoxelBuster> thats the odd part
L787[17:03:03] <VoxelBuster> i have my blockstate json files and mcmeta files in place too
L788[17:03:22] <Subaraki> texture probably exist
L789[17:03:26] <Subaraki> and are in the correct path
L790[17:03:26] <VoxelBuster> yes
L791[17:03:31] <Subaraki> is the block being correctly registered ?
L792[17:03:34] <VoxelBuster> pretty sure
L793[17:03:47] <Subaraki> we're going to need to see some code
L794[17:03:52] <VoxelBuster> yes because it shows up in my creative tab and the bucket shows up too
L795[17:04:03] <Subaraki> i mean the renderer
L796[17:04:05] <Subaraki> anyway
L797[17:04:19] <VoxelBuster> https://github.com/VoxelBuster/StarboundMod/blob/master/forge-1.12-14.21.1.2387-mdk/src/main/java/io/github/voxelbuster/sbmod/common/block/ModFluids.java
L798[17:04:26] <VoxelBuster> just pushed
L799[17:04:31] <Subaraki> can you pastebin the state, the registery code, both for rendering and game, and then also the item json ?
L800[17:04:57] <VoxelBuster> yeah hold on
L801[17:05:47] <VoxelBuster> so that one file i linked you too handles all 3 fluids
L802[17:06:12] <VoxelBuster> and the rendering
L803[17:06:34] <VoxelBuster> registry and rendering: https://pastebin.com/Vad75aCr
L804[17:06:50] <Subaraki> not sure if you need the forge marker per-sé
L805[17:07:23] <VoxelBuster> its what i saw in a tutorial
L806[17:07:28] <VoxelBuster> im pretty new to modding
L807[17:07:44] <barteks2x> stupid discord just made me waste 15 minutes explaining something to someone that he tirned out to already knoe because it showed me screenshot previews in the wrong order...
L808[17:07:45] <VoxelBuster> i didnt see much for renderers so my rendering code is probably whats wrong
L809[17:08:38] <Subaraki> missing textures is always a pain
L810[17:08:49] <Subaraki> i myself didnt register blocks in the way you do yet
L811[17:08:54] <Subaraki> but the forgemarker might be a start
L812[17:09:11] <Subaraki> you don't need them, unless you render some kind of subparts some way iirc
L813[17:09:17] <VoxelBuster> oh yeah they removed gameregistry.register
L814[17:09:20] <VoxelBuster> and ok
L815[17:11:03] <VoxelBuster> yeah still no
L816[17:11:18] <VoxelBuster> removed the forge_marker line on all 3 blockstate files
L817[17:14:12] <Subaraki> *cant remember if i have any blocks*
L818[17:14:14] <Subaraki> i might have one
L819[17:14:15] <Subaraki> just a sec
L820[17:14:31] <VoxelBuster> i got all of my generic items and blocks working
L821[17:14:35] <VoxelBuster> just not fluids
L822[17:14:48] <VoxelBuster> or tile entities for that matter but ill worry about that later
L823[17:15:32] <Subaraki> tile entities are just blocks really
L824[17:15:41] <Subaraki> with an entity bound to them
L825[17:15:48] <Subaraki> shouldn't be any different from regular blocks
L826[17:15:54] <Subaraki> unless specifics modify the model
L827[17:16:00] <VoxelBuster> yeah i know but i had mine extend the furnace TE
L828[17:16:06] <Subaraki> bad idea
L829[17:16:14] <VoxelBuster> yeah i learned that the hard way
L830[17:16:16] <Subaraki> that's vanilla code
L831[17:16:22] <VoxelBuster> gonna have to rewrite it now
L832[17:16:31] <Subaraki> you'd be better of recreating a furnace but with capabilities
L833[17:16:41] <VoxelBuster> woo more tutorials
L834[17:16:46] <VoxelBuster> anyway fluids
L835[17:17:09] <VoxelBuster> actually
L836[17:17:22] <VoxelBuster> im going to go grab some food real quick and then ill be back
L837[17:28:32] ⇦ Quits: MikrySoft (~kvirc@89-76-18-43.dynamic.chello.pl) (Ping timeout: 183 seconds)
L838[17:31:10] <Subaraki> how do i check for pvp ?
L839[17:32:49] <Subaraki> this.capabilities.disableDamage
L840[17:32:51] <Subaraki> found it
L841[17:35:17] <VoxelBuster> i have returned
L842[17:39:22] <VoxelBuster> all of the fluids behave like fluids but they render like normal blocks with missing textures
L843[17:44:50] <VoxelBuster> so i also have my ModFluids.renderFluids() method firing in init not preInit because putting it in preInit causes an NPE. Would this affect it?
L844[17:48:35] <VoxelBuster> for whatever reason the registry event queue doesnt actually fire until the preInit method finishes, so my methods in ModFluids get run out of order
L845[17:50:53] ⇦ Quits: TomyLobo (~TomyLobo@2a02:8109:87c0:20c:48d3:46b:3a65:efa8) (Ping timeout: 195 seconds)
L846[17:51:11] ⇦ Quits: VoxelBuster (~VoxelBust@pool-108-36-247-130.phlapa.fios.verizon.net) ()
L847[17:53:52] <Corosus> disableDamage isnt for pvp, thats for creative/spec no damage, use MinecraftServer.enablePvp probably
L848[17:54:15] <Corosus> err MinecraftServer.pvpEnabled
L849[17:55:29] ⇨ Joins: VoxelBuster (~VoxelBust@pool-108-36-247-130.phlapa.fios.verizon.net)
L850[17:58:47] <VoxelBuster> AH
L851[17:58:49] <VoxelBuster> i got it
L852[17:59:02] <VoxelBuster> the ItemBlock still has a missing texture
L853[17:59:10] <VoxelBuster> but the fluid itself renders correctly
L854[17:59:36] <VoxelBuster> the model loader has to run in preinit so i had it fire in ModFluids.registerItems()
L855[18:00:12] <VoxelBuster> The player should not be able to obtain the fluid block anyway in game so the itemblock missing the texture doesnt really matter
L856[18:02:38] <VoxelBuster> actually only the first one renders correctly
L857[18:02:42] <VoxelBuster> the rest are still broken
L858[18:03:21] <VoxelBuster> thats quite strange
L859[18:06:57] <VoxelBuster> any idea on that?
L860[18:10:41] ⇦ Quits: auenf (David@CPE-139-168-163-14.lns10.woo.bigpond.net.au) (Ping timeout: 186 seconds)
L861[18:13:52] ⇦ Quits: Wuppy (~wuppyZNC@abrarsyed.com) (Quit: ZNC - http://znc.in)
L862[18:13:52] ⇦ Quits: Abrar|gone (~AbrarSyed@ipv6.abrarsyed.com) (Quit: All things are trivial once you've mastered them.)
L863[18:13:52] ⇦ Quits: diesieben|away (~diesieben@abrarsyed.com) (Quit: ZNC - http://znc.in)
L864[18:13:52] ⇦ Quits: x3n0ph0b3 (~x3n0ph0b3@2001:19f0:6400:8965:5400:ff:fe07:8777) (Quit: ZNC - http://znc.in)
L865[18:14:01] <Subaraki> no sorry :/
L866[18:14:27] <VoxelBuster> it would be nice if there was missing model errors
L867[18:14:45] <VoxelBuster> is there a way i can see more debug output?
L868[18:15:44] ⇨ Joins: Abrar|gone (~AbrarSyed@ipv6.abrarsyed.com)
L869[18:15:44] MineBot sets mode: +o on Abrar|gone
L870[18:16:12] *** Abrar|gone is now known as AbrarSyed
L871[18:16:29] ⇦ Quits: Spottedleaf (~Spottedle@node-1w7jr9qqos9g1scsom0y7ds5h.ipv6.telus.net) (Ping timeout: 383 seconds)
L872[18:16:35] ⇨ Joins: diesieben|away (~diesieben@abrarsyed.com)
L873[18:17:02] *** diesieben|away is now known as diesieben07
L874[18:18:15] ⇨ Joins: Wuppy (~wuppyZNC@abrarsyed.com)
L875[18:18:26] ⇨ Joins: x3n0ph0b3 (~x3n0ph0b3@2001:19f0:6400:8965:5400:ff:fe07:8777)
L876[18:20:32] <VoxelBuster> yep model errors dont even show in debug or trace level logging
L877[18:21:32] ⇨ Joins: auenf (David@CPE-60-229-37-95.lns7.ken.bigpond.net.au)
L878[18:26:06] ⇦ Quits: sinkillerj (~sinkiller@nc-67-232-15-185.dhcp.embarqhsd.net) (Ping timeout: 383 seconds)
L879[18:27:18] ⇦ Quits: fscan (~fscan@shodan.chilicode.com) (Ping timeout: 204 seconds)
L880[18:29:44] <VoxelBuster> okay the "forge_marker": 1, line is actually needed
L881[18:38:08] <LexMobile> Anyone here wanna work on some ideas that require gui work?
L882[18:40:36] ⇦ Quits: VoxelBuster (~VoxelBust@pool-108-36-247-130.phlapa.fios.verizon.net) ()
L883[18:41:38] <tterrag> what kind of work >.>
L884[18:41:44] <tterrag> s/work/gui work/
L885[18:42:10] <LexMobile> re working the advancements screen.
L886[18:42:33] <LexMobile> I had a thought last night on how to solve the issues like kill_a_mob and kill_all_mobs
L887[18:42:42] <tterrag> I'm not familiar
L888[18:43:34] <LexMobile> https://github.com/MinecraftForge/MinecraftForge/pull/4354
L889[18:45:34] <LexMobile> The problem with kill_all_mobs is that they want it to trigger after killing all vanilla mobs, and all modded mobs.
L890[18:46:06] <LexMobile> When I am thinking is we break it into kill_all_mobs_[Minecraft|Thaumcraft|Forestry] advancements.
L891[18:46:46] <LexMobile> And then the kill_all_mobs have a AND criteria list of 'has advancement: kill_all_mobs_minecraft' tc..forestry... etc..
L892[18:48:18] <LexMobile> But, visualizing that is a bit weird. Because as it sits the advancements are just one long chain. A->B->C, we need to rework the advancements GUI to be A->B->C, but when you click on B, it loads B.a and B.b
L893[18:50:07] <LexMobile> And we'd have to have some form of signal to distinguish between "AND" and "OR" requirements. Example being the different between kill_all and kill_a, They are essentially the same, except kill_a is 'Any Vanilla | Any Thamcraft | Any Forestry' and kill_all is 'All Vanilla && All Thaumcraft && All Forestry'
L894[18:54:15] ⇦ Quits: eyamaz (~sid40777@id-40777.brockwell.irccloud.com) (Read error: Connection reset by peer)
L895[18:54:24] ⇦ Quits: TamasHenning (uid154987@id-154987.ealing.irccloud.com) (Ping timeout: 204 seconds)
L896[18:54:29] <tterrag> hm
L897[18:54:35] ⇨ Joins: eyamaz (sid40777@id-40777.brockwell.irccloud.com)
L898[18:54:37] <tterrag> advancements/achievements have never really supported multiple parents
L899[18:54:40] <tterrag> that might be confusing
L900[18:54:52] ⇨ Joins: TamasHenning (uid154987@id-154987.ealing.irccloud.com)
L901[18:56:16] <LexMobile> Its not multiple parents
L902[18:56:18] ⇦ Quits: kashike (kashike@is.sleeping.in.the.kingdom.of.kandarin.xyz) (Ping timeout: 204 seconds)
L903[18:56:24] <LexMobile> its multiple requirements{children}
L904[18:56:35] <LexMobile> err not children, just requirements.
L905[18:56:40] <tterrag> just multiple criteria
L906[18:56:47] <tterrag> so the question is how to display multiple criteria?
L907[18:57:15] <LexMobile> yes
L908[18:57:34] ⇦ Quits: Techokami (Techokami@znc.theender.net) (Ping timeout: 204 seconds)
L909[18:58:47] <LexMobile> Im not quite sure how to lay it out or anything.
L910[18:59:14] ⇨ Joins: kashike (kashike@is.sleeping.in.the.kingdom.of.kandarin.xyz)
L911[18:59:35] ⇨ Joins: Techokami (Techokami@znc.theender.net)
L912[19:03:21] <tterrag> yeah that's a tricky one
L913[19:20:32] ⇨ Joins: sinkillerj (~sinkiller@nc-67-232-15-185.dhcp.embarqhsd.net)
L914[19:31:30] ⇦ Quits: CorexTech (~edmonds@99-108-142-68.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
L915[19:31:44] ⇨ Joins: CorexTech (~edmonds@99-108-142-68.lightspeed.sntcca.sbcglobal.net)
L916[19:46:22] ⇦ Quits: Brokkoli (~Brokkoli@p5B23CD11.dip0.t-ipconnect.de) (Quit: Die Sprache der Politik ist daf�r gemacht, dass L�gen wahr klingen und das T�ten angemessen wirkt. (George Orwell))
L917[19:46:35] ⇨ Joins: VoxelBuster (~VoxelBust@pool-108-36-247-130.phlapa.fios.verizon.net)
L918[19:46:53] <VoxelBuster> new problem
L919[19:47:09] <VoxelBuster> biome manager not registering biomes?
L920[19:55:03] ⇦ Quits: ben_mkiv (~ben_mkiv@p4FED5270.dip0.t-ipconnect.de) (Ping timeout: 183 seconds)
L921[20:06:30] ⇦ Quits: VoxelBuster (~VoxelBust@pool-108-36-247-130.phlapa.fios.verizon.net) ()
L922[20:13:17] ⇦ Quits: KGS (~KGS@h-158-174-9-50.NA.cust.bahnhof.se) (Ping timeout: 186 seconds)
L923[20:22:51] ⇨ Joins: abab9579 (~Abastro@110.70.46.220)
L924[20:25:20] ⇨ Joins: A1b3 (~Abastro@110.35.38.113)
L925[20:28:15] ⇦ Quits: Abastro (~Abastro@110.35.38.113) (Ping timeout: 383 seconds)
L926[20:29:42] ⇦ Quits: abab9579 (~Abastro@110.70.46.220) (Ping timeout: 383 seconds)
L927[20:30:51] ⇨ Joins: Abastro (~Abastro@175.223.20.250)
L928[20:32:03] ⇨ Joins: killjoy1 (~killjoy@cpe-174-109-175-105.nc.res.rr.com)
L929[20:35:14] ⇦ Quits: killjoy (~killjoy@2606:a000:1118:825b:a99f:7d33:5a71:a880) (Ping timeout: 204 seconds)
L930[20:35:28] ⇦ Quits: A1b3 (~Abastro@110.35.38.113) (Ping timeout: 383 seconds)
L931[20:54:09] ⇦ Quits: Wastl2_ (~Wastl2@x4e341244.dyn.telefonica.de) (Read error: Connection reset by peer)
L932[20:56:16] ⇨ Joins: abab9579 (~Abastro@110.35.38.113)
L933[20:59:31] ⇨ Joins: Wastl2 (~Wastl2@x4e34cadf.dyn.telefonica.de)
L934[21:00:57] ⇦ Quits: Abastro (~Abastro@175.223.20.250) (Ping timeout: 383 seconds)
L935[21:04:13] ⇦ Quits: auenf (David@CPE-60-229-37-95.lns7.ken.bigpond.net.au) (Ping timeout: 204 seconds)
L936[21:08:19] ⇦ Quits: h5h77 (~h5h77@2a02:8108:4b40:907:922b:34ff:feae:b38b) (Remote host closed the connection)
L937[21:09:41] ⇨ Joins: auenf (David@120.154.78.136)
L938[21:23:48] ⇨ Joins: Waterpicker (~Waterpick@2602:306:35ba:ca40:b18d:6f90:9c7e:e5d6)
L939[21:36:06] ⇦ Quits: Dark (~MrDark@2607:fcc8:d48b:eb00:e14e:529f:a468:4c39) (Read error: Connection reset by peer)
L940[21:38:22] ⇦ Quits: Cast0077 (~Cast0077@24-151-68-108.dhcp.nwtn.ct.charter.com) (Quit: Poof)
L941[21:42:53] ⇨ Joins: McJty (~jorrit@d8D872121.access.telenet.be)
L942[21:50:52] ⇦ Quits: Luck (~Luck@unlucky.lucko.me) (Ping timeout: 204 seconds)
L943[21:51:09] ⇨ Joins: Luck (~Luck@unlucky.lucko.me)
L944[22:04:56] ⇨ Joins: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net)
L945[22:17:17] ⇨ Joins: Dark (~MrDark@2607:fcc8:d48b:eb00:80f4:79f9:46d7:697e)
L946[22:21:03] <KnightMiner> Is there a clean way to get side clicked in onBlockPlacedBy? I want to use it for setting TE data as the TE does not exist in onBlockPlaced
L947[22:22:03] <Ordinastie> you could do it in the item
L948[22:24:31] <KnightMiner> I guess thats an option, I was hoping to avoid a custom itemBlock though
L949[22:24:53] <KnightMiner> But can I gaurentee the item use is after the block TE is created?
L950[22:26:03] <KnightMiner> Oh wait, I see no method to overrride without completely rewriting block placement logic
L951[22:26:42] <Ordinastie> if only there was a way to call the original logic
L952[22:27:37] ⇨ Joins: Abastro (~Abastro@110.70.47.75)
L953[22:28:47] <KnightMiner> Oh yes, if only. A super method would be great, wouldn't it
L954[22:29:15] ⇨ Joins: A1b3 (~Abastro@175.223.18.125)
L955[22:29:47] <Ordinastie> alternatively, depending on what you need, you could make the side dependant data of your block into the block state directly
L956[22:29:51] <Ordinastie> if possible
L957[22:29:55] <KnightMiner> You are aware the passed in position is calculated by onItemUse
L958[22:30:25] ⇦ Quits: abab9579 (~Abastro@110.35.38.113) (Ping timeout: 383 seconds)
L959[22:30:37] <KnightMiner> Not really something that would work in the blockstate itself, its used to determine how the block should connect to prior blocks of the type rather than how the block is shaped directly
L960[22:30:43] ⇨ Joins: abab9579 (~Abastro@112.166.159.23)
L961[22:31:09] <Ordinastie> and no, onItemUse receives everything as params
L962[22:31:32] <KnightMiner> It handles replaceable. Still a bit cleaner than handling my own hit vector though
L963[22:31:36] ⇨ Joins: Spottedleaf (~Spottedle@node-1w7jr9qqos9g16yjwryoxkl5m.ipv6.telus.net)
L964[22:31:42] <Ordinastie> ah right
L965[22:32:00] <KnightMiner> I guess custom itemblock it is
L966[22:32:25] <KnightMiner> Not a fan of running it twice, but its just on block placement so the loss is minimal
L967[22:32:43] <Ordinastie> running it twice ?
L968[22:34:16] ⇦ Quits: Abastro (~Abastro@110.70.47.75) (Ping timeout: 383 seconds)
L969[22:34:26] <Ordinastie> actually, override placeBlockAt
L970[22:34:38] <Ordinastie> that's probably better
L971[22:35:42] ⇦ Quits: A1b3 (~Abastro@175.223.18.125) (Ping timeout: 383 seconds)
L972[22:36:23] ⇦ Quits: abab9579 (~Abastro@112.166.159.23) (Read error: Connection reset by peer)
L973[22:38:05] <KnightMiner> Oh yeah, then I dont need to calculate replaceable position again
L974[22:38:25] <KnightMiner> Like, they could have literally passed in the facing argument from there into onBlockPlacedBy...
L975[22:38:49] <Ordinastie> they don't need it so they don't pass it
L976[22:39:05] <Ordinastie> they really don't care about conveniance for mods
L977[22:51:59] ⇦ Quits: Lathanael|Away (~Lathanael@p54960939.dip0.t-ipconnect.de) (Ping timeout: 186 seconds)
L978[22:58:03] ⇨ Joins: Lathanael|Away (~Lathanael@p549607A5.dip0.t-ipconnect.de)
L979[23:13:46] ⇦ Quits: McJty (~jorrit@d8D872121.access.telenet.be) (Quit: Leaving)
L980[23:30:33] ⇦ Quits: KnightMiner (~KnightMin@107-1-23-59-ip-static.hfc.comcastbusiness.net) (Quit: Leaving)
L981[23:43:39] ⇨ Joins: Abastro (~Abastro@143.248.192.46)
L982[23:48:04] ⇦ Quits: Rokiyo (~Rokiyo@101.167.173.217) (Ping timeout: 204 seconds)
L983[23:55:13] ⇨ Joins: Rokiyo (~Rokiyo@101.167.173.217)
<<Prev Next>> Scroll to Top