Tweets

Author: jlbshecky

Well all the logs that we had have in ExtrabiomesXL 3.15.3 for Minecraft 1.6.4 have been re-implemented in the new system that we are designing for Minecraft 1.7.x.

The last of the logs to complete is our Mini Logs which received a bit of an upgrade, they now support the ability to have multiple types of log in one block and can come in varying sizes, as shown in the picture above. The shot is a dev test so the smaller log is just reusing the Sakura log’s textures, but it shows the basic concept and power of the new design. We also had to deal with a rendering issue with the log in item form that didn’t make itself present until 1.7. It is what I get for hacking together the rendering code for it before I fully took the time to understand it. The logs could still use a bit more work on their normal rendering, as since they use custom rendering code for their “nubs” to allow them to attach to things like other branches or leaves, they don’t do smooth lighting properly. This will probably get pushed to the side for the moment as getting the rest of the mod updated is a little more important, and once I finish the update if some wants to contribute and push a change to fix that issue on github they would be more than welcome to do such.

As part of the update I discovered the Block.isWood method, so the mini logs now are able to connect to any block that reports that it is wood, much better over how I was try to do it before, and it has the benefit of supporting any type log that reports that it is wood. I had originally tried using the block material, but planks, wooden stairs and wooden half slabs all use the the wood material so that was out since initially I wrote the code to check to see if the adjacent block used the same block id. If you look closely you can see where the mini log is connecting to the leaf block an you can see the nub stick out to connect there.

I also worked on the fixing up the whole multi-block system a bit so that if you some how had an invalid sub-block in your inventory or in the world it no longer crashed the game, but instead indicated that the block was invalid. The texture could probably still use a little more work for invalid blocks and items and I need to see if I can get it to render as 2D although that does not look to be all that promising with out some base edits that we will probably not do.

I also started in on the leaf blocks, they are going to take a little bit of work as they are getting a complete overhaul. I am manually de-obfuscating all the code that I can so that we can actually tell what is going on internally (leafRange and chunkRange are much easier to understand than b0 and i1), and so that each leaf block does not end up eating 32768 integers like vanilla leaf blocks do and we do in EbXL 3.15.3 and below.

I’ll try to have another update out tomorrow and I hope to have enough time to have the leaves up and running by then so that I can move on to the flowers, and Annysia, Zenth can play around with the blocks and get to creating template trees that myself and the other coders can create tree generation algorithms that generate similar results. It is one thing to say I want a Sugar maple tree that is approx 20 meters tall and a whole other thing to create code that generates the parts of said tree to give it a somewhat realistic feel.

Allaryin has been busy working on extracting all references to Project Dandelion, our top secret project that we want to really wow people with, from our private dev branch. This way we can re-sync the public git, to allow others to contribute once again.

Just to let every one know Thaumcraft updated to 4.1 today, and we had been including the API in our jar when we did not need to do. When Thaumcraft 4.1 updated it’s API, which we were accidentally overwriting due to not forcefully loading after Thaumcraft, as it would have lead to an infinite loop with Forestry. Anyways, just re-download 3.15.3 and you will be good to go again. (I really need to talk with Scott to so that we can update our Thaumcraft calls so we don’t need to include the classes in our work space like he did with the old IC2 API.)

As for the 1.7 update, it is coming along and with the new block loading code adding the Quarter Logs (which are being renamed to Corner Logs in order to support larger trees in the future) was rather trivial. Even with having to rename the textures to match the new naming convention, converting the last four logs only took about 2 minutes to get them added and in the game. One thing that I like about the new block id system in 1.7, is that blocks will appear in the order that they are created now since MC automatically assigns their internal numerical id’s, meaning that we can control the order that blocks are sorted in our creative tabs with nothing more than changing the order of the blocks in the config file. Talk about convenience.

On a 1.6.4 to 1.7.x transition note one of the upcoming 1.6.4 releases will be generating a ton of ID mismatch messages, as the way that we currently register blocks/items is a little troublesome and is not user friendly. As long as you do NOT delete your config file this will not break you world, it should just make updating to 1.7.x possible without breaking everything. However, the 1.7 version will probably have some new biomes, so you are going to get issues with chunk borders, if added to an existing world, so that should not be any more of an issue than it would be otherwise.

I still would recommend creating a new world in 1.7 though as it chunk borders are ugly, and time willing we may have an enhanced world type in 1.7. (Which would most likely make it EbXL 4, but that is not confirmed at the moment.)

Well it turns out there were a couple of bugs relating to how EbXL interacts with other mods and not doing things properly that led to us causing crashes on servers.Download EbXL 3.15.3

Change Log:

Bug fixes:

Eelgrass no longer causes crashes on servers if a mod asks for the unlocalized name on the server.

Our custom dyes no longer cause a crash if another mod asks for the unlocalized name on the server.

Deleted Thaumcraft API from the jar to prevent it from breaking with Thaumcraft 4.1. (It also makes for a smaller download too.)

Changes:

Eelgrass can now grow on grass block under water so as to curtail it breaking if a dirt block changes due to grass spread.

Well, work on the 1.7 update has finally started, and at the moment the foundations of the mod are undergoing a rewrite to try and make things easier to maintain in the future. As of right now, we are not totally sure if the 1.7 update will be version 3.17 or the final dawning of EbXL 4, it really all depends on how much it breaks.

One of the things that it will change, is making configuration much easier to handle. I am already making use of the new ingame mod configuration button, that is provided on the mods screen, to enable/disable extra debug info being displayed in item tooltips.

I don’t have a screen shot of the ingame config menu as at the moment it is very much a work in progress, but it will look somewhat similar to how the 1.7 video settings screen looks like. (I am not taking a screen shot of that, you can take a look at it yourself ingame.) Some settings will require a restart as not everything can be changed while Minecraft is running. On that note, we don’t offer the ability to disable the mod in game at the moment as that is presently designed more for mods that don’t add actual content to the game, such as mods that change how grass and leaves render or give you a mini map. I may modify it so that you can completely disable the mod next boot up so it does it show up in the mods list, but at the moment I have other things that are a little more important to finish.

The new config system should also be very easy for us to work with as a team, such as adding a new property that can be used anywhere from the config file loading/saving to the ingame mod config screen. This would only take us declaring the property inside the config class, possibly giving it a comment property, a possible restart flag to let people know that they need to restart the game for it to take effect and then actually using it anywhere that it is needed in the code. All in all, that saves us a little coding down the line.

Another thing that is changing for the better is that we are making it so that blocks can be defined outside of the code, somewhat similar to how Metallurgy handles their blocks. We already have working code that loads all of our existing normal logs from the json config file. We are going with json (which I am told Metallurgy will also be using in Metallurgy 4) as opposed to csv, as it makes for a much more flexible format in my own opinion, and Minecraft/Forge already come with json decoding/encode support built on in.

We are presently hoping to have all of our existing blocks back in to the 1.7 build by the end of the week. Hopefully with the possibility of some of the new planned blocks as well. The new system will also allow our team members who are non coders to add new blocks/sub-blocks without having to touch the code as long as it is based on an existing block type and does not need any new functionality.

We don’t have trees or world generation back on line at the moment, as we are trying to make sure that we have a good foundation for going forwards. Oh and on that note and since I did accidentally show it in my mod list screen shot, one thing that we are considering for EbXL 4 is splitting the mod up a bit. This way people who don’t want everything can download the core part of the mod and then if they want, for example, our fantasy/magical biomes and nothing else they could download only that. Or if you want everything you could download a EbXL 4 Complete, and have all the sub-mods in one jar. Once again, this decision is dependent on how much stuff gets broken in the update, and how much gets added that we have on our list for EbXL 4.

We will try to keep everyone up to date as we make progress on the 1.7 update through the end of the month at which time I hope to have a stable build that is good enough for a private beta. I’d talk more about stuff that is in the works but that would leave nothing for the next time I go to update, so that all for now.

Well, I just got reminded again of the fact that trying to release an update after working for nearly all day, when one is still under the effects of a cold can result in a few derps. It turns out that yesterday’s release was supposed to be 3.15, not 3.14.6. Things got changed in some places and not in others, so mcmod.info was reporting that the mod was 3.14.6 and internally the mod was saying that it was 3.15. Also, we missed a couple other things, such as the day after we finished updating the New Dawn API, it was updated. The missed change was causing crashes, which should be taken care of in this patch. Also, due to the late hour and my not having a written checklist for release procedures at the time, (Annysia is in the process of writing one up so I don’t goof things up again.) I forgot to do testing in dedicated server mode, and look over the forge log for any warnings/error so a small error with trying to load textures on the server got through. I have to give a grateful thanks to our team member joe12o, for getting the fix to that written up after it was reported, while I was sleeping.

Anyways here is ExtrabiomesXL 3.15.1, which should fix those issues. I am still looking forward to trying to get another balancing release in on Monday or some time later this week.

Change Log

Bug Fixes:

Updated New Dawn API

Fixed crash on Server due to code running that should only run on the client.

Well boys and girls, oh, and you ladies and gentlemen in the modded Minecraft community, we are back in business, and finally despite the perfectionists and various troublesome bits of code have a new release for you all to tinker around in.

For those of you who could care less about any news and just want the download link, go have at it. Although you might want to read the change list as there were a couple things that you may want to know if you run into any issues, and a few things have changed. For those of you who are willing to wait a little while, please continue reading.

What is this sorcery?

We have a top secret project that we had hoped to preview/demo in this build, but things haven’t worked out quite as well as we had hoped, so we had to push it back a little longer. No, this secret project is not v4, although it has helped me breakthrough some of the things that had been holding me back. I really can’t say to much more with out giving away to many things. But to sum it up, it is something that as far as we know, has never been done before and when the entire project is complete it might even blow one or two people’s minds.

On the note of v4. after about 6 months, I think I am finally understanding the hooks that Scott added to forge over a year ago, and I finally have figured out how to incorporate them into the v4 world generator. This would allow us to do things like finally control the rate that biomes spawn, so lets say you wanted a world that has very few wastelands you can finally allow that. All in all I have to say that the hooks that Scott wrote are totally awesome, and that I have been considering using a couple of them to write a super small utility mod to “deal” with troublesome players like Annysia, who hate all things that attack you, would like to have on your survival server. The big thing that has held me back is that with some of the new features that are being added to the 1.8 snapshots, it looks like it might be doable in vanilla with command blocks come 1.8, if they add just one more thing to commands. (The only thing thing that is missing for it to work in vanilla as it stands now is the ability to select entities that are in certain distance from a specific player. If this is possible feel free to let me know.)

Anyway, we’ve got a number of things lined up and with more team members, we think we can knock them out. I must say that it has been fun working back and forth on our secret project, with Allaryin and myself pushing code back and forth, and extending each other’s ideas when one of us hits a road block.

On to what is new/changed in this release. We should have better support for Thaumcraft 4 (Finally), and some of our old quarter logs have finally been replaced with more user friendly versions that are a little more inter mod friendly. The old ones are still in but they are only able to be crafted into the new version and will no longer be generated, and only exist so that people don’t suddenly have trees that are missing their trunks. There was a bunch of code cleanup, and a few minor things managed to slip through the cracks that were not discovered till after we had our release candidate and we had already delayed releasing longer than intended so since they didn’t break anything we decided to let them go for the moment. I may do a build on Monday to just fix the few things that I discovered at the last moment.

Configuration file has been moved out of it’s own directory, there is no real reason to have a directory with just one file in it. Also the config file also keeps a version number in it now, so that in the future if we change the defaults for any settings, or add a new setting for some thing that previously did not have a setting, we can set the setting so that if you upgrade it will default to the old behavior and not break any world, and if you want the new behavior you can turn it on.

One example of such a change in action is that we changed up the redwood tree generation. We have finally started working on integrating Forgotten Nature (FN), and the first thing on the list was trying out the Sequoia tree generator. We need to do a little more work on it still as how FN generated it’s trees was a little different than how we generate our so, we have left in the option to allow people to chose the old Redwood generation or the new style. Both styles should be receiving an overhaul in the coming weeks, and will become separate trees, as what most people think of when they complain of the old redwoods not looking correct, is actually the Giant Sequoia, which is a similar but vastly differently structured tree from the North American Redwood. (They are both very closely related according to my field guide for identifying North American Trees.)

Resorted default block id’s, if you update block id’s should not change for existing items, although if you have a number of mods a few of the new items might have conflicting id’s so you may need to resolve them, as we still haven’t gotten any sort of id resolver running at the present. This was done to clean up our creative menu, so unless you are working with us in creative extensively you really should not need to care about this resorting. (Although it might affect things like Inventory Tweaks come to think of it.)

We let Minecraft automatically load our localization files now instead of having our own loader. We discovered a small issue with this with not being able to localize one of the other new features that we added, but it is not all that major.

The new quarter logs now place in what I feel is a logical pattern, and as such you can now easily build things like large bridges supported by multiple quarter logs side by side without needing to use the log turner for every single log that you place.

Sakura Blossom Tree has been renamed to just Sakura Tree.

New Features:

Silk Touch on an axe finally has a use now! As part of an effort to make the quarter logs a little more inter mod friendly, when you chop down quarter log or an elbow log you will get the normal log equivalent, unless you use a Silk Touch.

Elbow and quarter logs can now be crafted/uncrafted, if a log has a quarter log equivalent just place four logs in a 2×2 square and you will get four quarter logs, and three logs can be placed in a sort of an upper case L to get three elbow logs.

Support for New Dawn, another mod that allows for generation of a different style of terrain.

Thaumcraft 4 support for almost all our items, some of our new flowers were last minute changes and got passed over when it came to giving them Thaumcraft 4 aspects. They will have their proper aspects come next update.

We changed up flowers a bit, the Root and Autumn Shrub have been removed. They still exist but will no longer generate or show up in creative. We also added 28 new flowers. Spawning for the flowers has been reworked and we are still doing some tweaking on that.

Helpful tooltips are now available in English for some things. Things like what patterns saplings will grow into trees from, to help you know why that single redwood sapling that you planted won’t grow into a mighty tree. This should help out with future trees as we start to incorporate some of the Forgotten Nature and More Than Just Trees stuff. Other things like the flowers have some flavor text about to them, though we are by no means done with the flowers. Oh and if you ever wondered if the scarecrow had a use, well you can now see it in it’s tooltip. As it stands we need to do more research to enable localization of the tooltips, as it appears that it may not be possible in 1.6 without some of our own localization code.

Bug Fixes:

Well I know there have been a few I just can’t think of them off the top of my head, and it is getting somewhat late.

We have finally released a backporting to Minecraft 1.5.2, bringing all of the new features that we brought to ExtrabiomesXL for Minecraft 1.6.2 to the more mod complete Minecraft 1.5.2. If you want to use all our new trees, logs and wood with all your other favorite (and almost as important, stable) mods, you are now free to do such.

To sum up the new features, we have 6 new trees, and 6 new types of wood/planks/stairs and slabs to play with, some great new textures from our texture artist for a number of our old trees and plants. And let’s not forget the plethora of bug fixes that we added fixing a large number of things. I would mention that the scarecrow finally has a use for people other than Anderzel, but really having a stationary mob scaring devise is not all that useful.

Well it is time again, time to take a peak into the progress of 3.14.0. We are still not done, but as I mentioned in our last post we have been working on making the new tree generation code more reusable, so although we only have one more new tree completed today, the Bald Cypress, in creating it, we added most of the building blocks that will be needed for the last remaining trees.

But before we get to far ahead of ourselves, lets take a look at the normal Cypress and see how it has developed since last update.

Leaner, Meaner but Not Any Greener.

Since the last update we have put a bit more work tweaking the settings on the cypress trees to get them to look more like our reference photos, while at the same time still allowing for a degree of variety in their generation. This new breed of Cypress are thin and lanky with a nice variety in height, with their leaves starting at a variety of different heights as well.

As for the Bald Cypress, I thought that it would be neat to give a look into how it developed, which meant more pictures than normal, so in keeping with the current front-page format, the story of the Bald Cypress development is after the break.

The First “Knees” And Trunk

The first thing that we needed to do for the Bald Cypress was to write the code to generate the the 2×2 trunk, using the new version of the quarter logs block that the bald cypress uses. Not much to that part really, just making sure that the the logs were generated in the proper orientation. The same needed to happen with the “knees” and in our first test we mainly focused on making them spawn or the sides of the tree.

Random Heights and Placement

Once we had the “knees” generating in the correct orientation it was time to add some height to the mix. Some “knees” would generate on the left half of one side of the tree and some on the right, and occasionally there might be on on both haves, or even no knees on that side.

After the knees were finished it was time to move on to the branches. Although I could have reused the of the old code for other trees like the large Autumn Forest tree, I decided that we should start out with self documenting code that would be a littler more reusable down the road.

Forgetting a Variable Can Cause Some Weird Results.

It took a number of bug fixes to get the branches to work correctly, as I missed out on a number of things during the initial code that had to be fixed. some of them were outright funny looking, like the picture above, while other’s were a little more frustrating and I had issues tracking them down until later on when I started on the leaf clusters.

A Preliminary Foliage Test

Once the branch generation code had been fixed it came time to nail down the leaf clusters at the end of each branch. Once more there was some issues with the codes transition form paper to actual code, and the initial tests ignored the settings to allow the leaves to generate at heights other than what is pictured above, limiting the variation in how the foliage looked. Also, if you look carefully in this first shot you can see that the top of the main trunk is completely bare. It needed a little more work and a lot of tweaks but eventually we got got something that pleased the team.

A Sample Bald Cypress Tree Grown From Saplings

Although this is a fairly beautiful tree and has a large amount of variety possible as it generates, there is still a bit more room for potential improvement, so don’t be surprised if the tree changes a little as we get closer to release.

Well were are running a little behind schedule, and we still a few things left to complete, mostly on my end as I got busy helping to build a deck out in the hot sun this week so I haven’t had the free time that I thought I would have to build the new trees world generation code. Although I haven’t had as much time as I would have liked, our texture genius, Zenth has been doing some more tweaking to the textures, and correcting some of my spelling mistakes in the new blocks.

The first official Cypress tree candidate generated by minecraft.

However I finally had some time to work on world generation code for that we are using as a basis for the new trees and I finally have our first candidate for generating one of our new trees, the Cypress tree. At the moment these somewhat lanky trees have the base of their trunk that rapidly flares out the main part of their foliage and then gradually slop up to their tops. These normal cypress trees at the moment are made with a couple “building blocks” that should be able to be used on other trees without our having to copy code like was done in the old trees, making it much easier to maintain and update in the future.

Console command to to test the Cypress tree spawning parameters.

The console commands that I added for tree debugging and such have been a lifesaver in the creation of the new trees, as I don’t need to chop down trees or have a large superflat world that I do my testing in to verify that the tree is generating properly, and I don’t have to restart the game every time I want to tweak one of the spawning parameters. Now all I have to do is issue a console command and I can do my tweaking without ever needing to move about, or waiting for the game to reload.

A couple creepers kept in a pen by a scarecrow. The closer creeper is scooting away from the scarecrow.

Another thing that I have worked on is finally adding in the code that made the scarecrow not totally useless. Prior to my joining the ExtrabiomesXL team code was written so that the scarecrow would scare away mobs, but during the update to 1.5.x it never got merged into the main code, so we finally got around to making the scarecrow scare off mobs like it should. It should scare off all hostile mobs that have a brain, so slimes and golems should not be affected, but most other hostile mobs should. That being said I have had a creeper who really wanted to give me a hug so bad that he ignored the Scarecrow and still chased after me.

Well it is that time again Minecraft 1.6.2 is just around the corner with bug fixes galore, so it is time for another version bump for ExtrabiomesXL. Once again this is almost a straight port from 3.13.5, though it due to the change in forge it may necessitate an update depending on weather forestry changes it’s api for 1.6.x.

For now you will have to satisfy any of your biome cravings with this updated download. (Updated to fix a dedicated server bug.)

As for the final content update for v3 that we have been doing so that I could finish getting my feet wet in the code things have started to move along.

Sadly although there has been quite a bit of progress over the weekend, most of it is supposed to be a surprise so I can’t really let the cat out of the bag just yet. That said I did manage to sneak in a quick screen shot of one of the no “key” features for the content update.

Pay no attention to the blurred out sections of the screen shot. “These are not the new textures you are looking for.”

It has been long in coming, and Scott had originally pushed console commands to v4, but I needed them for some of the bug finding that I am doing so I’ve been working on them in between completing issues for the content update. Of the chat commands the most important ones are /ebxl lastseed and /ebxl spawntree, which will enable us to track down bad tree generations. There have been a number of times where I have had a large number of ExtrabiomesXL trees growing at the same time and noticed occasionally that the generated tree has messed up, missing part of its trunk or such. /ebxl lastseed lets me a a developer get the random number that was used for generating that erroring tree and ensure that it was part of the random number generation that caused it to error out by passing the seed to /ebxl spawntree and regenerating the exact same tree.

/ebxl spawntree also has the potential to be used by map makers if they want a specific tree looking tree to spawn. Some of the trees in the content update will get a bit of a face lift hopefully enabling better generation, and in v4 every tree will be getting a full rewrite to enable more variety so having this in-place now should make it easier down the road. When trees have a larger variety being able to say I know that if I use the seed of 12345 I will get a short fir tree that would look just right in this spot can be a boon to those who want it.

As I said earlier I can’t say much at the moment about the other things that we have been doing for the 1.6.2 content update, though there have been a number of bugs that have been closed, and an updated development environment. I’ll see if I can con talk anyone else on the team to give some sort of preview of a couple of the new things that we are doing in the content update few the next few days.

Well it looks like we have all the kinks worked out in the transition from 1.5.x to 1.6.1/x. So as we start the last content update for v3 prior to us switching fully back to development v4 I wanted to get out the direct port of the 1.6.1 build of ExtrabiomesXL v3.

For anyone interested in testing out the new build, download it here and have at it and make sure to let us know in the comments below. The alpha is designed to work with Minecraft 1.6.1 and Minecraft Forge build 8.9.0.768. Just use the installer for forge 8.9.0.768, although I would recommend that you modify the profile that the forge installer creates for you in the launcher. If you change the game directory for the forge profile you don’t have to worry about forge trying to load mods for other versions of minecraft. According to the forge release notes this is supposed to change in the future, but it hasn’t been working for me in my tests so I have simply created a new game directory for my testing.

If you are of the more technically inclined variety and are wondering what we have learned in our updating from 1.5.x to 1.6.1 read on, if not the feel free to go off and have fun with the alpha.If you have followed the past development posts then you probably already know that the majority of the issues that we were running into were all related to scarecrow. It turns out that the scarecrow was not being created in the correct location. Prior to 1.6 the creation of the scarecrow had been done in the Init, and minecraft/forge never complained, starting with 1.6 if you don’t create items/blocks during preInit then the resource manager never calls registerIcons and when minecraft attempts to render the item it gets a null reference and the game crashes.