For quite a while, Minecraft players have asked for localized weather. These requests have been denied by modders, claiming it would be too hard. In working with Nandonalt's Seasons Mod, I have seen a glimpse of what would be involved to make it happen.
And so, I set off to do what others have refused. While it is still being worked on, I am pleased to announce that localizable weather is mostly finished.
"WPAPI" is short for "WeatherPonyAPI." Although it has "Pony" in it's full name, the API/mod does not involve cute/adorable equines (aka, "ponies"), and the only cases where "pony" are in the code are directly after "weather". I have a poll going on right now, offering a name change, so please offer your input on the matter.
Dynamic/Localized weather - there could be thunderstorms, rain, snow, and clear skies at the same time... in different parts of one world [DONE]
Hidden Items - there can be hundreds/thousands of hidden items, even damageable ones, all using only a couple of item IDs at most [DONE]
4k biome ID limit - there can be a ton of biome-adding mods [DONE]
Dynamic Tools/Armors - other modders don't need to work together to make new combinations of tools and their materials [REWRITING]
Better block render code - biomes and mods can control rendering of biome-shaded blocks in more and better ways [IN PROGRESS]
Oriented Bounding Boxes (OBBs) - better physics engine. Useful for changing physics rules in bizarre ways and for making large, non-rigid mobs [IN PROGRESS/PLANNED]
Expanded block metadata - blocks can have more subtypes without requiring data-intensive TileEntities. Leaves could use this for more shading types. [PLANNED]
Cinematic - movies and cut scenes! [PLANNED]
Pre-main-menu - other games have intro movies. Why shouldn't minecraft/mods? (already requested fork permission for Aether Team's Main Menu API) [PLANNED]
Colored Lights [PLANNED]
Improved mob texturing code - mob skins need only be partially made. mods can combine parts of skins together for more variants (while using less data in Resource Packs). [PLANNED]
Cubical Chunk mod support - Cubical Chunk mod made separately. Would make implementing Cubical Chunks easier [PLANNED]
Game Engine Optimizations - Optifine could be largely incompatible, so there might as well be an alternative that's built right in! (It'll be like Optifine... for a server!)[PLANNED]
Hooks as needed
*things in bold can be used directly by non-programmers
v0.0.1
some hooks for weather removed in next version, most were reintroduced in v0.3.0
v0.1.0
access to functions needed for improved hidden items
dynamically created tools and armors
v0.2.0
4k biome ID limit (4095, increased from 255)*
v0.3.0
localizable temperature and moisture (extracted from BiomeGenBase)
localizable rain and thunder(/storms) (extracted from World, WorldProvider, etc.)
Entity AI avoidance hooks, with priorities (added to EntityCreature)
partial code for altering biome-based colored blocks' colors (before Forge, offering more compatibility)
v0.3.1
port to 1.6.4. Now uses WPML to load base-edits.
disabled dynamic tools for resource packs and a rewrite (most needed edits still exist)
v0.3.2
refactored package names to be closer to accepted standard
improved bit manipulation logic, which should fix some bugs
removed some RAM usage when expanded biome ID feature isn't needed by a chunk
improved network usage for expanded biome ID features, generally
changed chunk packets for extended biome ID range (0.3.1 is incompatible with 0.3.2)
added collection of modding utilities
added dynamic Icon support (allowing nested/split Icons)
0.3.3
bug fixes
added more utilities
added hooks for drops in Block and BlockCrops
added support for blocks to render multiple hitbox frames
changed localized weather interfaces (will be changed again in next version)
disabled localized weather by boolean (value can be changed in code)
partially added localized weather chunk culls
*currently fixing issue with Forge
This is currently meant for programmers, but a compiled version is available, because of a request. If you crash with the compiled version, I don't want the crash report - I want the full output from the development log in the launcher, instead. Crash reports don't usually offer me enough information to fix stuff. Test Version: v0.3.3 for Minecraft 1.6.4 Downloads Repository*
Requirements: Forge v9.11.1.916
*Thank you, countnoobula, for helping with basic repository setup, and showing me that repositories don't function like I though they did.
Required to Run the Compiled Version: WPML 0.7 (adf.ly, non-adf.ly)
If I messed up and it crashes, please just let me know. Even things that seem hopeless are usually super-easy to fix.
Want to help with
I struggle to no end with getting the source code for MCPC+ so I can port and test to it. If you want to help me get the sources on my Windows computer, I would appreciate it. If you would rather port it yourself, that would work, too; just let me know so I can link to it and give you credit/support.
This API doesn't have to be coded just by me.
If you have some edit(s) that you would like added, just offer them. I'll even port your edits the best I can, so you can code even more awesome stuff. If your edits only work for your mod then I can manipulate them to make them work generically, that way everyone can enjoy them. If you don't have what you need pre-coded, just tell me what you need and I'll do my best to make it.
If you have an idea for how to do something better, please tell me so it can be improved.
If you found a bug, please tell me where it is so it can be fixed.
I don't use repositories, so I'm going to need help with setting one up and with learning how to use it before I can even consider having others work with me on this as equals. I'm not opposed, but I need help before I can get help.
Until then, I'm willing to incorporate edits and stuff. All added parts are credited to their coder, so your stuff would still be yours.
The only thing that i'm really worrying about is the FPS/Memory decay while using the "Localized Weather". Taking a glimpse of it makes me think deeply into it.
Anyway, the ideas and your MOD's are amazing, darling. I expect sucess from you, and i congratulate you for that!
Keep up the good work, darling! :3
(PS: Forge has a lot of hooks implemented into it. Perhaps you could make it a coremod?)
Thanks for being interested. Concerns about FPS and memory are understandable, but not needed in this case, though. Rather than programming the actual localized weather, I'm coding up generic framework and minimal default tools to make creating it easy. The impact from this API will be very minimal while the impact from implementing mods is the real concern, and is what's causing me to rewrite components repeatedly.
The default weather management interfaces that the API will use will be an equivalent of Minecraft's current weather, only rewritten to provide primitive access to the new features. Each aspect will be able to be swapped out with ones provided by other mods, or be advised in how to act (like a dictator speaking with his advisors), on an individual basis.
I might make my own version of a non-default local weather management collection, but someone that specializes in world generation code would most likely be able to create the best one with the least computing impact.
The API as a whole will be similar to the Forge API, in that it won't make any visible game-play changes by itself. I want to make sure that it stays that way so that people don't get turned off because of only one feature.
I'll need to learn how to make a core-mod before trying to make this one, but this will be compatible with Forge, and will require it even.
Rollback Post to RevisionRollBack
If I said I'd do something and haven't, please remind me; I didn't lie, I just forgot.
I program
Progress is coming along in the coding, even though it doesn't feel like it. I've been working several hours every day on it, and have a progress update that I added to the first post. My goal is to have finished the Dynamic Variables Framework by the end of next week, as that is the biggest part of the API.
I've started the second write (first rewrite) of the data saving system. The last one would work, but constricted the data too much. The new version makes modders take a bit more time, but will lead to a graphical display for viewing and changing settings from clients, as well as the eventual creation for a formal definition of a "year". It also is a step towards permissions (to edit settings).
The saved data structure is based on normal Minecraft's, but contains many more components and types, including arrays of tags. Since it is a new type, I'll need to make a new editor, which I'll make around the time of release, if it's still the current system.
Rollback Post to RevisionRollBack
If I said I'd do something and haven't, please remind me; I didn't lie, I just forgot.
I program
I finished enough of one of the components to put together a release. I made an runnable jar that will modify the base edits, that way I stay within Minecraft's ToS by not distributing Minecraft source code.
This gives access in a few ways to the sky-ticks, for things like ice and snow-tile formation, as well as some access to ice blocks, snow blocks, and snow tiles.
If you have any suggestions, problems, or want to submit some code/help me code, just tell me.
Started from scratch, and did something entirely different. I still have the code for the previous version, but need to fix a lot of stuff before re-adding it.
v0.1.0 pre2 is ready for coders to start tinkering. For those wanting just to see if this works ("dynamic tools... yeah right!"), there is a compiled version with two test mods. There are some issues, but it clearly shows that this API/mod works.
For more awesomeness, I need a willing texture maker with a lot of patience to make large texturing pages for the default materials. (diamond/gold/iron/stone/etc.) I'll explain when someone is willing to make these rather large pages of colors... (256x256 - 16x16 groups of 16x16, so nearly tile-like. it's a one-time thing, at least.)
Rollback Post to RevisionRollBack
If I said I'd do something and haven't, please remind me; I didn't lie, I just forgot.
I program
I missed the recent link to this in the weathermod thread.
Im a little confused. Your comment in the weather mod thread said "dynamic tool API/mod" which I assumed just applied to the weather mod. I read the thread for the dynamic tool API/mod and noticed youd said "how cool would it be if you could make a balkons halberd with redpower ruby" ? The anwser of course would be EXTREMELY. And this mod/api is also the one that allows localised weather ? Seems suprising.
Have you had any response from balkon eloraam (ho ho) or other mod makers ? Any indication of whether they like the idea and can be bothered to make some changes ?
Thanks as ever
Yeah - I started with weather, but had some problems, so I'll be fixing a lot of stuff and reintroducing the weather section later. I actually hadn't fully localized weather, but I did start on the long path. Weather stuff is still a priority, but I might use this with Seasons to a small degree (hidden items? there's already hidden achievements...)
Forge, while it's known as a mod loading system, actually started as a texture API/mod to allow infinite sprite pages, and it grew from there, so I'm not that worried about being too broad. I'll never attempt to replace Forge, though, just always expand it.
I haven't asked Eloraam or Balkon yet, but once I separate client/server logic and add language support... I'll be asking everyone!
Rollback Post to RevisionRollBack
If I said I'd do something and haven't, please remind me; I didn't lie, I just forgot.
I program
Thanks for the info.
I think I'll talk to Eloraam by starting with a request for Forge, since she was a big contributer at it's beginning, and the API/mod currently edits two Forge classes (one of which is a tiny edit on one line).
A Minecraft 1.5.2 port is almost done. It's already compiled, I just need to sort the files and upload. I really need to learn a code management system for this stuff... porting by hand is a pain! ( and dangerous since I'm uploading segments of Mojang code T.T ) I'm going to need to ask how Forge set their stuff up... another thing to talk to Eloraam about. (lol)
Edit: 1.5.2 version up. It's the same thing as the 1.5.1 version, but is ported.
Of course you can use it. Only without any previous programming knowledge, the only things you can really do with it are
1. Test it
2. Change the texture pages and make the armor color differently, or make a standard way to texture the 256x256 texture pages for the materials (I'm in need of someone doing that, but don't want to impose on anyone)
or
3. Play around with the code and either come to understand enough Java to make something or hurt yourself trying. :x
Don't worry about it.
Eloraam does indeed look to be gone... I think the only way to get her might be through the other people with Forge, as you were saying... :/
(I was thinking about how to tell her, not how to get in contact to tell her :X )
I'll get in contact with her, even if it takes a while. Ruby Halberds are the exact reason I wanted dynamic tools in the first place, after all.
Rollback Post to RevisionRollBack
If I said I'd do something and haven't, please remind me; I didn't lie, I just forgot.
I program
Someone else asked in PM, so this is what I said. I'm not completely sure he read what the mod's about, so I give a quick summary of why/what I'm doing.
Quote from The_WeatherPony »
Some mods add tools, and others add tool materials, but they don't usually work together, so I'm making an API/mod (like Forge) to bring them together. Part of this process of combining tools and tool materials is creating new textures for combinations that don't have them. Don't worry, though, as my code will never be able to replace human texture makers since it can't learn - it only mimics.
Generating new textures requires two things, a base texture (the style), and large color samples (the color). For the default style, I'm going to give the API/mod the default vanilla texture style, which texture packs can then change. What I need is colors.
Namely, I need two things...
The first thing I need is a system so different texture makers organize color samples the same way. This is important so that texture makers don't need to know about all the tools or tool materials from all mods to make a texture pack, and also so there's consistency in textures generated by the API/mod. Since some texture packs would want HD textures, even default textures need basic support to make them. Therefore, I'm wanting your system to use 256x256 pixel color sample pages. Sixty-five thousand color samples is a lot, but the entire thing would be merely progressions of colors.
Basically, instead of thinking about making textures, think about how you make them: why choose one color over another? How could you tell another texture maker why one and not the other?
The second thing I need is an implementation of your system for each of the vanilla materials (wood, stone, iron, gold, and diamond). Each page would need to be filled with colors that look like they might be used in default vanilla tools/armors. The texture pages also need to have each of the unique colors from default tools and armors somewhere in them, and each group needs to be in the same place.
As an example/elaboration on the last part there, there are several swords/etc. in vanilla Minecraft, as you know. In the default texture style, armors (held, not worn) use four colors, a light shade of the material, a dark shade of the material, white, and gray. The unique colors are the light and dark shades of the material. If the light shade for gold goes at pixel (20,30) (random coordinate example), then the light shades for iron, etc. needs to also be at (20,30).
I know it's a really big (and unusual) request, so I can wait a while. I'll be letting anyone that wants to give it a shot a chance, too, though. There's no huge rush, but if I could have stuff as you can, that would be nice. (so for the organization of colors, for example, concept is almost everything)
If you need something clearer, just let me know.
I don't texture stuff, but I can help with science stuff if you need it.
If you would rather work on making normal texture icons, I do have some items that need texturing, but they're for something else.
Someone else asked in PM, so this is what I said. I'm not completely sure he read what the mod's about, so I give a quick summary of why/what I'm doing.
I read it before and I was wondering why you needed a texturer but I saw the mod name and it said in need of a texture person. So I like the idea of the mod so I asked.
I read it before and I was wondering why you needed a texturer but I saw the mod name and it said in need of a texture person. So I like the idea of the mod so I asked.
Only the first paragraph was about what I was doing, all the rest was what I'm wanting a texturer for/to do.
Just as a quick summary of the rest, I'm needing a texture maker to be able to describe to another texture maker what the properties of a gem/metal are. For vanilla armor texturing, for example, there's a light and dark color of <diamond, gold, iron>. I'm wanting it so someone desiring a light color version of a material would know where to look on a sheet of colors that someone else made that contains both light and dark variants. I'm basically needing a "standard" way to format color choices - one that a texturer would think about, rather than a programmer.
When I posted my last post, it was 1am, so I was too exhausted to write another version. (sorry) :x
I did the code for more localized temperature and moisture values (usually defined exclusively by the biome), then went nutty and wrote almost all of the code for better biome-dependent block coloring (grass, tall grass, leaves, vines, and lily pads), as well as most of the code needed for localized rains and storms. The coloring code will be finished when I port it to 1.6+, or go through my archives for Seasons and pull out the pre-1.6 edition of my texture-sheet management.
Once I fix a bug in world-gen, I'll upload the next version (still for 1.5.2).
I'm changing the thread poll to have some new options, and will look at what's wanted next when I finish my modification loader (for 1.6+).
Just as a quick reminder, this API does the edits to Minecraft code to make stuff like localized weather possible, and lets other mods easily create it without any further edits, so using WPAPI without any mods that use it (which there aren't yet, I think) is like using Forge without any other mods.
Most important for me is exchanged biome's id limit ,beacuase i want to play with 5 other biomes mods ;p
Thx very much
Can You relese a minimod (Of course before You have all Your mod ready) with only biomes id increasting?
I have all the edits collected together in each edited file, which makes it easier to port but harder to separate. The biggest issue, though, is that I haven't fully gotten used to coremods and bytecode manipulation (editing compiled Java)... I'll do what I can, though.
Rollback Post to RevisionRollBack
If I said I'd do something and haven't, please remind me; I didn't lie, I just forgot.
I program
And so, I set off to do what others have refused. While it is still being worked on, I am pleased to announce that localizable weather is mostly finished.
"WPAPI" is short for "WeatherPonyAPI." Although it has "Pony" in it's full name, the API/mod does not involve cute/adorable equines (aka, "ponies"), and the only cases where "pony" are in the code are directly after "weather". I have a poll going on right now, offering a name change, so please offer your input on the matter.
v0.0.1
some hooks for weatherremoved in next version, most were reintroduced in v0.3.0v0.1.0
v0.2.0
v0.3.0
v0.3.1
v0.3.2
This is currently meant for programmers, but a compiled version is available, because of a request. If you crash with the compiled version, I don't want the crash report - I want the full output from the development log in the launcher, instead. Crash reports don't usually offer me enough information to fix stuff.
Test Version: v0.3.3 for Minecraft 1.6.4
Downloads
Repository*
Requirements: Forge v9.11.1.916
*Thank you, countnoobula, for helping with basic repository setup, and showing me that repositories don't function like I though they did.
Required to Run the Compiled Version: WPML 0.7 (adf.ly, non-adf.ly)
If I messed up and it crashes, please just let me know. Even things that seem hopeless are usually super-easy to fix.
If you have some edit(s) that you would like added, just offer them. I'll even port your edits the best I can, so you can code even more awesome stuff. If your edits only work for your mod then I can manipulate them to make them work generically, that way everyone can enjoy them. If you don't have what you need pre-coded, just tell me what you need and I'll do my best to make it.
If you have an idea for how to do something better, please tell me so it can be improved.
Until then, I'm willing to incorporate edits and stuff. All added parts are credited to their coder, so your stuff would still be yours.
I program
The default weather management interfaces that the API will use will be an equivalent of Minecraft's current weather, only rewritten to provide primitive access to the new features. Each aspect will be able to be swapped out with ones provided by other mods, or be advised in how to act (like a dictator speaking with his advisors), on an individual basis.
I might make my own version of a non-default local weather management collection, but someone that specializes in world generation code would most likely be able to create the best one with the least computing impact.
The API as a whole will be similar to the Forge API, in that it won't make any visible game-play changes by itself. I want to make sure that it stays that way so that people don't get turned off because of only one feature.
I'll need to learn how to make a core-mod before trying to make this one, but this will be compatible with Forge, and will require it even.
I program
I program
I've started the second write (first rewrite) of the data saving system. The last one would work, but constricted the data too much. The new version makes modders take a bit more time, but will lead to a graphical display for viewing and changing settings from clients, as well as the eventual creation for a formal definition of a "year". It also is a step towards permissions (to edit settings).
The saved data structure is based on normal Minecraft's, but contains many more components and types, including arrays of tags. Since it is a new type, I'll need to make a new editor, which I'll make around the time of release, if it's still the current system.
I program
This gives access in a few ways to the sky-ticks, for things like ice and snow-tile formation, as well as some access to ice blocks, snow blocks, and snow tiles.
If you have any suggestions, problems, or want to submit some code/help me code, just tell me.
I program
v0.1.0 pre2 is ready for coders to start tinkering. For those wanting just to see if this works ("dynamic tools... yeah right!"), there is a compiled version with two test mods. There are some issues, but it clearly shows that this API/mod works.
For more awesomeness, I need a willing texture maker with a lot of patience to make large texturing pages for the default materials. (diamond/gold/iron/stone/etc.) I'll explain when someone is willing to make these rather large pages of colors... (256x256 - 16x16 groups of 16x16, so nearly tile-like. it's a one-time thing, at least.)
I program
Forge, while it's known as a mod loading system, actually started as a texture API/mod to allow infinite sprite pages, and it grew from there, so I'm not that worried about being too broad. I'll never attempt to replace Forge, though, just always expand it.
I haven't asked Eloraam or Balkon yet, but once I separate client/server logic and add language support... I'll be asking everyone!
I program
I think I'll talk to Eloraam by starting with a request for Forge, since she was a big contributer at it's beginning, and the API/mod currently edits two Forge classes (one of which is a tiny edit on one line).
A Minecraft 1.5.2 port is almost done. It's already compiled, I just need to sort the files and upload. I really need to learn a code management system for this stuff... porting by hand is a pain! ( and dangerous since I'm uploading segments of Mojang code T.T ) I'm going to need to ask how Forge set their stuff up... another thing to talk to Eloraam about. (lol)
Edit: 1.5.2 version up. It's the same thing as the 1.5.1 version, but is ported.
I program
1. Test it
2. Change the texture pages and make the armor color differently, or make a standard way to texture the 256x256 texture pages for the materials (I'm in need of someone doing that, but don't want to impose on anyone)
or
3. Play around with the code and either come to understand enough Java to make something or hurt yourself trying. :x
Don't worry about it.
Eloraam does indeed look to be gone... I think the only way to get her might be through the other people with Forge, as you were saying... :/
(I was thinking about how to tell her, not how to get in contact to tell her :X )
I'll get in contact with her, even if it takes a while. Ruby Halberds are the exact reason I wanted dynamic tools in the first place, after all.
I program
I program
I read it before and I was wondering why you needed a texturer but I saw the mod name and it said in need of a texture person. So I like the idea of the mod so I asked.
Just as a quick summary of the rest, I'm needing a texture maker to be able to describe to another texture maker what the properties of a gem/metal are. For vanilla armor texturing, for example, there's a light and dark color of <diamond, gold, iron>. I'm wanting it so someone desiring a light color version of a material would know where to look on a sheet of colors that someone else made that contains both light and dark variants. I'm basically needing a "standard" way to format color choices - one that a texturer would think about, rather than a programmer.
When I posted my last post, it was 1am, so I was too exhausted to write another version. (sorry) :x
I program
Once I fix a bug in world-gen, I'll upload the next version (still for 1.5.2).
I'm changing the thread poll to have some new options, and will look at what's wanted next when I finish my modification loader (for 1.6+).
Just as a quick reminder, this API does the edits to Minecraft code to make stuff like localized weather possible, and lets other mods easily create it without any further edits, so using WPAPI without any mods that use it (which there aren't yet, I think) is like using Forge without any other mods.
I program
I program