Jump to content

jakj

Members
  • Posts

    3240
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by jakj

  1. With three vertices, in counter-clockwise order, the unit-length normal for the face should be: double Ax = Vertices [ 2 ] . X - Vertices [ 1 ] . X ; double Ay = Vertices [ 2 ] . Y - Vertices [ 1 ] . Y ; double Az = Vertices [ 2 ] . Z - Vertices [ 1 ] . Z ; double Bx = Vertices [ 2 ] . X - Vertices [ 0 ] . X ; double By = Vertices [ 2 ] . Y - Vertices [ 0 ] . Y ; double Bz = Vertices [ 2 ] . Z - Vertices [ 0 ] . Z ; double Nx = Ay * Bz - Az * By ; double Ny = Az * Bx - Ax * Bz ; double Nz = Ax * By - Ay * Bx ; double N = Nx + Ny + Nz ; I = Nx / N ; J = Ny / N ; K = Nz / N ; Someone please check my math and make sure that's right, because my brain has now melted and I'm getting dinner.
  2. No, I'm talking about how the game engine works, not how Minecraft works. The server is the "boss", meaning it has the final say on where things are and how they move, but the client predicts what happens before the server responds, because it takes some time to send the command to the server and have the response come back. This works a lot of the time (like placing blocks), but for anything that uses random numbers (like items flying in random directions), the client and server can't synchronize perfectly, meaning they'd both have different guesses, so crap would randomly warp around your screen too much. So, the client simply doesn't spawn random stuff until the server responds, and you have visual lag instead of warping. The issue with SidedProxy is that it is on its own not enough to differentiate between the three possibilities: "Hosting a dedicated server", "Connected to a dedicated server", "Playing on the local integrated server (whether or not is' open to LAN)", so you have to also use the commands above. Ordinarily, I would say "only spawn random stuff if the Server proxy is active", but that doesn't work for the integrated server. The end-user doesn't have to worry about any of this: It's a modding issue only.
  3. I think it should work. By the way, I just figured out how to make and use GLSL shaders in Minecraft. \o/ They're sweet. I made one that can take image A as a mask (using only the alpha values) and apply arbitrary subimage of image B as the texture being masked. Between you and me, Minecraft graphical-flexibility is taking a gigantic leap forward.
  4. It's been a while since I looked at your code (or even the earlier pages of this thread), but I wonder if this doesn't work, now that I've had a chance to delve into Minecraft graphics programming more. If you were to create a texture file that uses partial transparency by alpha, and then do this... GL11 . glEnable ( GL11 . GL_BLEND ) ; GL11 . glBlendFunc ( GL11 . GL_SRC_ALPHA , GL11 . GL_ONE_MINUS_SRC_ALPHA ) ; /* render quads */ GL11 . glDisable ( GL11 . GL_BLEND ) ; ...would it not work? I was able to (accidentally, but hey) achieve a partially-transparent blue block in my hand via IItemRenderer, and I don't see why it wouldn't work in renderWorldBlock or a TileEntitySpecialRenderer, because it operates directly onto the framebuffer using the source's alpha, and is not hindered by the lack of alpha bitplanes in the destination buffer nor does it require being done on a special alpha pass. It would even work to layer multiple transparent quads on top of each other. So, in theory, you should be able to remove the base-class modification, and just let back-face culling take care of it, for both the glass blocks and glass panes. Yes, no, maybe so?
  5. Now I'm disappointed. After some testing, the SidedProxy thing results in only a single instantiation per invocation: If you are running locally, either simple singleplayer or open to LAN, only the client side is instantiated, and if you are running a dedicated server, only the server side is instantiated. This means, for example, it's impossible to use the proxy system to handle cases such as spawning item entities that get thrown in random directions. Oh well: Even Forge isn't perfect. For the record, the functions to use are: [world object] . isRemote ( ) - false on dedicated server, true otherwise (which should include integrated server) [entityliving object] . isClientWorld ( ) - false on dedicated server, true otherwise (which should include integrated server) MinecraftServer . getServer ( ) . isDedicatedServer ( ) and MinecraftServer . getServer ( ) . isIntegratedServer ( ) Minecraft is such a mess. I even tried to figure out a way to delay Block/Item initialization so that I could request block/item IDs from a server instead of requiring the user to configure them to match their server manually (which means they'd have to keep a .cfg file for every server they play with a mod), but there's no way to reliably exchange packet data with a server before block and item data start being sent. Such a mess.
  6. Only three things could even give a moment's pause to Technic right now: Kaker running out of money (seems unlikely), Kaker running out of interest (also seems unlikely), and Kaker being taken to court (excuse me while I wipe the laughed-out bits of peanut butter and applesauce off my screen). The only issue is in what form Technic continues to carry on, be it our own little cocoon safe from the warbling masses, or out in the open sunshine where we should have been all along were it not for the little rainclouds bouncing around fluffing at us.
  7. That level of cooperation and agreement is less than a pipe-dream. You may as well try to teach cats to sing in chorus: You'd be less frustrated. But then, what am I but a crusty cynic. I believe it's possible for multiple modpacks (including Technic) to co-exist peacefully and become equally-respected. A genuine joint effort? I'll be dead of old age first.
  8. Not surprising, considering the orgasms that were had over sandstone and coloured planks. There are probably as many behind-the-scenes-conspiracy stories going around at their little campfires as there are about Elvis Presley.
  9. Viral marketing!
  10. Yeah, stop trying. If you've got such a lack of understanding that you're trying to do something -that- dumb, no amount of instruction is going to help you do it the right way.
  11. Perhaps you don't understand the concept of an exploit, as in, no, it won't ask you that, because it's letting the program do something it's not supposed to let it do. Usually by buffer-overrun, chernobyl packet/header, or unchecked constant-value bounds flaws in a program.
  12. If they had half a brain, they'd just say Forge is the modding API and wipe their hands clean of the whole mess. They could just give the Forge team access to the source under NDA and then make Forge an artifact of Mojang's build. It'd still be decompilable Java, so it'd be as easy for us to edit at will, and it would at least lessen the "y u mean i ned forge how does i get" nonsense.
  13. You've never heard someone described as anal-retentive? It's similar to tight-assed.
  14. Oh, and in the "Oh my god minecraft why do you suck so much" category, I'm rediscovering what the modder of this thread meant when he was talking about the pain of trying to do alpha rendering. The pixel buffer does not have an alpha channel (and why the fuck not, Notch, why) so masking via multiplass blending doesn't work. Trying to use the secondary pixel buffer (normally used for the lightmap) and texture combiners fails because so much state is half-assed assumed throughout the code, that everything -except- the lightmap gets borked, and after all that still manages to completely ignore the existence of the second texture somehow. I am going to beat, hammer, and ASSAULT Minecraft with every tool at my disposal until it bends to my will and does as I say. IT WILL BE MY BITCH.
  15. Okay, that was -really- cute. You made a man with a sore throat chuckle.
  16. Nah, they're never going to run out of that.
  17. Ah, well, I'm used to using nothing but a plain VIm text-editor and reading the source directly for info, so I don't have to go back and forth across all those layers. To me, the loss of ease most of the time is worth the loss of the gotchas too. (Plus, considering that I'm the sort of anal personality that can become obsessed with making sure there are no extra spaces at the ends of lines, having anything other than a Un*x-y text-editor that doesn't try to "help" might actually drive me nuts.)
  18. Now that I've messed with it a bit, I have to disagree with "fuck annotations". They are growing on me, and I'm actually enjoying 1.3 Forge more than any other version. These guys know what they're about.
  19. Trying to install mods yourself is a great way to get a severe duck infestation; I don't recommend it.
  20. The blunderbuss has the best sound-effect in Minecraft, though. Been thinking about adding a diamond-crafted one that's the strength of two shots at once. Double-barrelled blunderbuss, reinforced with diamond so you don't end up in pieces?
  21. Eh, unsurprising and uninteresting, considering most every other damn thing that's ever run in a browser has experienced this. Funnily enough, only the browser is supposed to be protected at all in the first place: The main Java program (like if you run a .jar such as Minecraft) has no SecurityManager running and can do anything you can.
  22. Also, the XBOX does all kinds of checksumming and what-not, to prevent modification in the first place, so you'd probably have to crack through its security (and warrantee) to get it to work at all. Hell, Sony/Microsoft won't even let in Skyrim mods, and Bethesda has flat-out stated that the code is already there for it to work, but that they're just not allowed.
  23. This is not a bad thing.
  24. There was not even the slighest chance your question would have been in this section.
  25. There's a guide to decompiling other mods around here somewhere, if you need it, so you can get de-obfuscated code. Should still be valid for MCP 7.2.
×
×
  • Create New...