Primalcraft: Updating the mod to a new version of Minecraft

I just spent a couple of days updating my mod to a newer version of Minecraft. It’s a pain in the tookus.

When I started modding, back in the mists of time, Minecraft was still on 1.8.9. There were a lot of tutorials available, thank the heavens. I started out copying quite a bit of code that I didn’t understand very well, but I was able to get things working because I had lots of resources available. The update from 1.7.10 to 1.8 had thrown a lot of modders for a loop, in large part because of the move to json files to define block states and models. I missed that, and came into the modding scene while 1.8 had been around for over a year. Things were pretty stable.

Then Minecraft got sold to Microsoft. They started releasing major version updates every six months. And so in the time I’ve been modding we went from 1.8, to 1.9, all the way to 1.12. That’s four big updates and quite a few minor updates.

I was happy with 1.8.9. But at a certain point I really had to update or risk having my version of Forge being deprecated. At the time, 1.10.2 was the newest version. Learning how to update, and getting everything done, took me months. MONTHS.

So I was not happy at all to consider updating again.

It went surprisingly well. One of the advantages, I think, of having new versions on a more frequent basis is that not quite as much changes between versions.

The biggest change for me as a modder was the fact that ItemStack objects can no longer be null. On older versions, the fact that they could be null meant that my code was littered with null checks like this:

if (itemStack != null)

There’s no way to find all those automatically. With other changes, like changed method names or parameters, Eclipse will highlight them as errors. But with those null checks, there’s nothing actually wrong. Eclipse has no idea that an ItemStack can’t be null. So I had to comb through my code with a—well, with a fine-toothed comb, to find all of those null checks. I hope I caught them all.

At least I’ve eliminated all the obvious errors after the update. I’ll be testing pretty much my whole mod over the next few days to try to catch any unseen problems or missed null checks.

And soon I need to update to 1.12. I’m holding off for now, since it seems like Forge still has some work to do to be fully compatible with 1.12.2 (they say they’re completely rewriting the registry system—yikes!).

No comments

Primalcraft: Making wolves terrifying – ironing out the bugs

Angry wolves circling the fire

Angry wolves circling the fire

In Primalcraft, I’ve changed wolf behavior so they’re aggressive toward players at night. But I also wanted to provide some protection against them, even in the early game when you don’t have shelter or armor. I thought it would be really cool if they were afraid of fire, so I implemented a modification of skeleton behavior to cause wolves to avoid firelight at night. It’s pretty awesome when you end up with a small circle of firelight surrounded by growling, red-eyed wolves staring at you menacingly. Don’t let that fire go out!

Unfortunately, it wasn’t quite working as I had hoped. When they accidentally ended up too close to the firelight, such as when you placed a torch near them, my wolves would try to get away, just like I wanted—but they seemed to be seeking out blocks that were too bright, so once they got there they would immediately move again due to the brightness. They were zipping around like crazy things, only reaching the darkness by accident, it seemed. This is the last thing that was still bugging me about my wolf behavior.

Strangely, the algorithm that helps skeletons find appropriate shelter just picks a set of random blocks within 10 blocks n/s/e/w of their current position, and 6 blocks up or down. This causes the algorithm to sometimes pick blocks that are underground, which have a light level of 0 (pure darkness) by default. That’s what was causing my wolves to zip around like crazy. The algorithm was finding a block that seemed to be in pure darkness, but it was actually underground. When the wolf reached that spot (or as close to it as it could get), it would find that it was still in the light, and the whole cycle would repeat again. I’m still not sure why skeletons don’t act this way in vanilla Minecraft.

I managed to solve the problem tonight. After picking my random block, I just use a vanilla Minecraft function to check if the block has a collision bounding box. If so, it must be a block that a wolf can’t occupy. So then I start checking all the blocks above it to see if I can find a legitimate space (a block without a collision box) for the wolf to go. I only check up 3 blocks, to keep processing to a minimum. If I get that far and still haven’t found a good spot, I let the algorithm move on and try to select another random block.

With this improvement, I think my wolves are good to go. By the way, I’ve also increased their speed such that they will catch up to you even when sprinting. Wolves are quite terrifying in Primalcraft. I’ve also increased their chances of spawning in every biome. You better make sure you have a good fire going before it gets dark, or you’ll get eaten alive!

No comments

Primalcraft: Current Features

Yesterday I talked about some of my goals in creating my Primalcraft mod for Minecraft. As I mentioned then, I’m focusing mainly on creating a detailed and challenging Stone Age survival experience. To that end, I’ve currently finished several major features of the mod:

  • Stone age tools. Your first tools are rocks and sticks. You have to find hammer stones and core stones to make stone tool heads, then bind them to a haft with cordage made from grass. (I have yet to create a nice interface for knapping the tool heads.)
  • Basket weaving. You can use grass and bark to weave wicker baskets for your first form of storage.
  • Hunger and thirst. You get hungry faster. Your first meals will be grubs and locusts. You will also get thirsty. You can quench thirst by drinking from rivers and ponds with an empty hand.
  • Hunting. Animals run away from you and cannot be tamed. (I intend to make it so you can throw rocks. Bows and javelins will also be available. I also intend to allow taming eventually.)
  • Hostile wolves. Wolves are your primary enemy. At night, they will hunt you down and eat you for dinner unless you have fire to keep them at bay. All the fantasy monsters are gone. (I want to create more stone age predators like sabretooth tigers.)
  • Campfires. To make a campfire, you have to rub sticks together to get a burning ember, then put it on tinder and blow to create flames. (There are no torches yet.)
  • Copper ore. Copper currently spawns but cannot be obtained.
  • Gravity. Trees require tools to chop down, and they fall instead of hovering in the air. Every block in the game will fall if not properly supported. Many blocks require certain tools and materials (like spades and mortar) to be suspended above ground, and they will fall if placed too far out vertically without support.

I have also created lots of smaller features. You start with a full 3×3 crafting grid in your inventory. There are no crafting tables. There are dirt slabs. Punching logs and stone hurts you. Baskets can be picked up by shift-right-clicking. Grass drops straw, leaves drop sticks, dirt drops grubs and stones, logs give bark, and broken tools sometimes yield parts that can be reused. There’s hide armor (currently uncraftable, but it exists), and you can cut your feet on sharp rocks if you don’t have shoes. There is a new kind of tree: hickory (but you can’t get planks from it yet).

I’m currently in between major features, having just finished coding my hostile wolves. I haven’t decided what to work on next. Whatever it is, I’ll give some updates as I go.

No comments

My Minecraft Mod: Primalcraft

I started working on my Minecraft mod in March of 2016, so it’s been well over a year, almost a year and a half. That feels insane to me. I’ve probably spend hundreds of hours on it. I could have written a novel by now.

After I started playing Minecraft, it didn’t take long for me to feel like everything was too easy. And there were some parts of the game that really bothered me, like punching logs and floating trees. Soon I found Terrafirmacraft, which was amazing and kept my attention for many more hours. There were still certain things I didn’t love. Again, the challenge seemed to die down very quickly. I found another mod, Better Than Wolves, that was even more challenging, but had even more things that bothered me. When I found out that Terrafirmacraft 2 was ditching its focus on detailed survival gameplay over to magic and adventure gameplay, I decided to embark on making my own mod.

The goal of Primalcraft is to simulate what our primal ancestors had to do to survive. Primalcraft will bring a lot more detail and challenge into the stone age part of Minecraft’s gameplay, while providing a greater sense of realism. The goals I wrote down a year and a half ago were:

  • Experience survival like our ancestors did in the Stone Age.
  • Encourage exploration.
  • Encourage multiple bases with trails and roads.
  • Encourage caving.
  • Encourage building beautiful and functional things.
  • Provide a system of progression that’s challenging and rewarding.

I now realize that I was being very ambitious, especially considering I had almost zero programming experience. I have had to learn Java on top of Forge and Minecraft code. It’s been challenging and really fun. And it takes forever.

For now, I’m focusing on the first bullet point—Stone Age survival. I have several major features and a bunch of minor features done. That will be the subject of the next post.

No comments

Personal update

Three and a half years. Yeah, it’s been that long since I posted anything on my blog. Shortly before my fifth child was born, it all became too much. I now have six kids, and my youngest is 2 years old. I’ve moved twice and changed jobs twice since then. So all that happened.

For a long time, I simply felt overwhelmed, and didn’t have time for anything outside of working and caring for my family. I gave up all my hobbies. Creative writing, blogging, tabletop RPGs, fencing—it all went out the window.

But as the kids get older, and we slowly move out of baby phase, I’ve found myself with a little more spare time. And I’ve found new hobbies.

A couple years ago, we bought Minecraft for my oldest son. One fateful day, I decided to try it out, and I got hooked. Soon I was trying out mods, and soon after that, I was getting sick of mods because they didn’t do quite what I wanted.

And now I’m writing my own Minecraft mod.

If I post on my blog in the near future, it will likely be about that. I’ve been doing lots of interesting research that’s tangentially related to some of the topics I used to write about. You may find some of it interesting. Or not.

If I even have any readers left, after all this time.

3 comments

What I’m Listening To: Nightwish, Kamelot, We Are the Fallen

It’s been a while since I posted. Suffice it to say that life has me awfully busy and stressed out. It’s hard to find the time and motivation to write. So here’s an easy blog post for you: another in the series of what music I’m listening to. In my last post, I focused on djent and avante garde, jazz-infused progressive metal with a heavy metal component. This time I’m going to focus on symphonic metal.

First comes Nightwish, a band that hails from Finland. I first discovered them when their album Once came out. Their singer Tarja Turunen had a very operatic style that manages to mesh strangely well with the band’s power guitars and heavy drums. The band mixes in lots of string sounds, choral elements, synthesizers, and ethnic instruments to create an interesting tapestry of sound. It’s all very bombastic, and I love all the drama. Most of the music is composed by Tuomas Holopainen, the keyboard player, and he cites movie soundtracks as one of his biggest influences.

Nightwish’s next album (Dark Passion Play) featured a new singer, Anette Olzon. Anette’s style was more in a pop-rock vein, and they managed to make it work really well. But her voice lent a different sound to the band—definitely more radio-friendly and easier to sing along to. On top of that, the bass player Marco contributed more of his strident vocals to the band. Overall, I liked the album just as much, but in a different way. Anette stuck around for the next album, Imaginaerum, but left the band partway through the tour to be replaced by Floor Jansen. From the YouTube video’s I’ve seen, Floor should be able to replicate both the operatic vocals of Tarja and the more poppy vocals of Anette. All of this change makes it very hard to pick a single song that’s representative of Nightwish’s sound. In the end, I simply have to pick one that I like. Here’s Romanticide, the original version performed by the operatic Tarja. It’s one of the first Nightwish songs I heard and fell in love with.

Next up is Kamelot. Unlike the other two bands I’m featuring today, Kamelot has a male singer. Although they hail from Florida, their sound has a really strong European power metal influence. Their earlier albums fall into a class of music that’s too cheesy for my taste. But their 2005 album The Black Halo introduced a darker, harder element that really caught me. The next album, Ghost Opera, introduced even more symphonic elements. The song I’ve chosen to represent Kamelot is called Rule the World. On the album, it is fronted by a one-minute symphonic introductory track, and I’m really glad I was able to find a YouTube video that combines the two, because then the string elements at the beginning of Rule the World make a lot more sense. The guitar riff that comes in at just after a minute totally rock.

Finally we have We Are the Fallen, a band composed of former Evanescence guitarist Ben Moody and American Idol contestant Carly Smithson. Back when I was watching American Idol, the Irish Carly was one of my favorites. In a way I was glad she didn’t win, because that allowed her to go on and do her own thing instead of being owned by American Idol. And I’m definitely glad she teamed up with Ben Moody and the former Evanescence band. We Are the Fallen has been criticized for sound too much like Evanescence, but I think that criticism is stupid. Of course they sound like Evanescence. They basically ARE Evanescence with a new singer. And as much as I love Amy Lee’s voice, I think Carly holds her own really well. The bad news is that We Are the Fallen was dropped by their label after their first album came out, and I haven’t seen any sign of a new album for a few years. Here’s hoping they come back.

2 comments

What I’m Listening To: To-Mera, TesseracT, and Means End

Ing over at Blog Ing recently posted about a new band he discovered, and he linked over to my music category here on the blog. I haven’t been paying much love to that category lately, which isn’t to say that I haven’t been listening to music and discovering lots of cool bands. Quite the opposite.

So it’s time to share some cool and interesting music that I’ve been enjoying these days. Here goes.

First is To-Mera, a progressive metal band from England fronted by the Hungarian singer Julie Kiss. To-Mera features nonstandard song structures, crunchy, technically awesome guitar riffs, interesting atmospheric sounds, and the occasional jazz interlude. Kiss’s voice is pretty unique in the genre, as she sings almost entirely without vibrato. At first I thought it was just part of their jazz leanings, but then I listened to some of her songs from a former band, and she sang the same way then. In any case, it’s part of To-Mera’s musical style. The song I’m going to share is called The Lie. It’s one of their heavier songs and features a fun jazz interlude shortly into the song (at about 2:30).

Next is TesseracT, a djent band also from England. Highly technical, with lots of djenty guitar riffs, ethereal atmospheric elements, and a mix of melodic and aggressive vocals. On their second album they got a new singer and ditched the aggressive vocals completely, which I felt kind of ambivalent about. They said that’s actually what they had wanted all along but they felt the metal community wouldn’t be as accepting without the aggressive vocals. The song I’m going to share is Nascent, which I think was their first official single and features all the elements that make the band unique.

Finally we have Means End, another djent-style progressive metal band with some jazz infusion, choral elements, complex crunchy guitar riffs, and philosophical lyrics. One of the goals of Means End is to incorporate “intricate melodic patterns introduced in baroque music [and] chord structures not belonging to the diatonic scale, etc. (source)” Their songs tend to feel a little overwhelming at times as they have so much going on that doesn’t fit what you expect. The song I’m going to share is Nox Aurumque, an interpretation of the modern choral piece by composer Eric Whitacre.

So there you go. That’s what I’ve been listening to lately. Fairly soon I’ll share some more, this time from bands that fall closer to the symphonic/gothic side of the genre—bands like Nightwish, We Are The Fallen, and Kamelot. I’d like to do another one that reviews the latest from Dream Theater and similar bands like Circus Maximus.

What are you listening to?

4 comments

Images that Tell a Story

Lately I’ve really been enjoying Pinterest. For years now I’ve wished there was a good repository of good fantasy art to use for inspiration in roleplaying games and for my writing. Deviantart has a lot of good stuff, but it’s hard to find just what you want. Elfwood has some good stuff, but it gets lost in piles of mediocre and just plain bad art.

But on Pinterest there is a group of people already sifting through the art they encounter and posting only the best. I’ve found a lot of amazing fantasy art on Pinterest. There’s also a lot of awesome photography of fantastic real-world places and historical weapons and armor.

Some of my favorite images are those that have story just oozing out of them—there’s a tale begging to be told about what’s happening in the picture. I love these because they really get my story sense tingling and make me itch to write.

Here’s one of them:

Another:

And another:

One more:

Wait, one more:

There is so much awesome art out there, I had a hard time winnowing it down to just these. I’m thinking that I’ll make this a regular feature of my blog, where I share some of my favorite Pinterest pins on a given theme.

Now that my life has started to calm down, maybe I can even finish one of the half dozen blog post drafts I have sitting around here.

Anyway, if you liked any of these, check out my Pinterest boards for more.

No comments

Why “Show, Don’t Tell” Is Impossible in Fiction

What I’m about to tell you isn’t revolutionary. Others have preached the true word before. I’ve seen hints on Victoria Mixon‘s blog, and I know John Brown did a presentation at a writing conference (don’t go to those links yet; I’m going to explain it better here!). But I have yet to see the truth about “Show, Don’t Tell” collected into a single, clear article. This is my attempt at it.

“Show, Don’t Tell” is one of the most common pieces of writing advice ever given. The thing is, it’s impossible to show in writing, because showing is inherently visual. Showing is physical. Writing is verbal. Writing is telling, and it can’t be anything else. If writing could show, it would be a movie or a play.

Example: If a man says “I love you” to a woman, he is telling. If a man kisses a woman, cooks her favorite meal, and spends time with her, he is showing her that he loves her. He’s not just talking; he’s acting.

Example: If a grandmother explains to her grandkids what Venice looked like last fall, she is telling. If a grandmother takes her grandkids there on vacation so they can see it for themselves, she is showing them. She’s not just talking; she’s physically showing the place to her grandkids.

Words are telling. Action is showing.

In fiction, words are all we have. It’s all telling.

What we mean by showing in writing is that the writing allows the reader to create a strong mental image, as if they were seeing it or experiencing it first-hand. As if they were being shown. As if they were there.

So if writing is all telling, how do we create that sense of verisimilitude and vicarious experience in the reader? How do we show?

There are different kinds of telling, and some are better than others at creating that mental image for the reader. The different kinds of telling vary depending on who you’re talking to, but they tend to boil down to four basic categories:

  • Exposition
  • Argumentation
  • Description
  • Narration

Exposition is the conveying of factual information. In the greater world of the written word, exposition is exemplified by things like the business report, scientific paper, news story, and encyclopedia article. In fiction, exposition is when you take the time to explain facts about your fictive universe—who’s related to whom, where certain places are within the setting, and how a scientific principle or magical spell works.

Argumentation is the attempt to convince the reader of a point of view. Advertisements, resumes, and letters to the editor are good examples of argumentation. You don’t see much of this in fiction, but authorial commentary generally falls here. The author is attempting to convince you, the reader, to feel or think a certain way by addressing you directly. Fiction can employ argumentation obliquely through the subtle use of theme.

Description is the construction of a visual image of a specific person, place, or thing in the reader’s mind. Description tends to be woven into the other types of telling, especially narration. Poetry often relies heavily on description.

Narration is the relating of a series of events—things that are happening. Narration is the main component of good fiction. Outside of fiction, narration occurs whenever we tell someone about something that happened to us. Biography is largely composed of narration.

Some people add a few more types of telling to the list: summarization, introspection, recollection, sensation, emotion, action, dialogue and transition. I haven’t studied this topic in such depth that I could easily explain to you why some people think these modes should be distinct from the four above. But it seems to me that these secondary categories could pretty easily be defined as a subset or minor variation of one of the primary four categories.

Exposition and argumentation are generally poor at creating visual images and vicarious experience, although they both have their uses. Description and narration are better, but only when used in the right way.

Telling Example: Carl’s sister came over the next day and told him that mom had died that night. He felt an overwhelming sadness wash over him. He would never see his mom again.

Showing Example: Carl had the newspaper laid out on the kitchen counter. He was scanning the headlines when he heard someone coming down the hallway. He looked up and saw his sister stop in the doorway. She had on a faded dress. Her face was hidden in shadow. “Mom died last night,” she said. A hollow feeling spread through Carl’s chest. His hands clutched at the edge of the kitchen counter as if to stop himself from falling. His shoulders heaved as a wracking sob escaped his throat.

The telling example uses a mix of narration and exposition to tell what happened and how the character feels, but it’s too generic. It’s just a summary of what happened to Carl.

The showing example also uses narration, and it’s still telling—it’s just words on the screen. But the manner of the telling allows the reader to easily construct a strong visual image of what’s happening, as if they were sitting in the room watching the scene unfold. The part about the hollow feeling spreading through Carl’s chest, even though it’s not visual, enables vicarious experience by helping the reader imagine the physical sensation the character is experiencing. Conveying action and description this way takes longer than using exposition or summary, so you have to be careful about what you choose to focus on.

Unfortunately, fiction pundits have created their own vocabulary for these things, and “showing” is firmly ensconced as something that’s both real and possible in fiction. So you’ll hear writing experts talking about exposition, narration, telling, and showing in different ways than I’ve explained them here. (Go and read the link to Victoria Mixon’s blog now if you want. She’s a smart editor, but I feel like she gets lost in the expert jargon—despite her claims to the contrary—and stops being clear almost right away.)

Bottom line:

In fiction, showing means the judicious use of rich, visual detail and concrete, physical action to help the reader construct a visual image of a scene and imagine what it would be like to have that experience. As if they were being shown. As if they were there.

7 comments

In Defense of Adverbs

A common piece of writing advice is to not use adverbs. We’re told that they’re weak, that we should find strong verbs instead. As with all writing advice, this one is situational. Some would-be writing gurus with good intentions take a situational piece of advice and try to make it seem universal. A writer for the Macmillan Dictionary Blog recently advised writers that deleting all adverbs and adverbial phrases would result in a piece of writing that means exactly the same thing while being easier to read.

But the “no adverbs” advice has been laid to rest by Geoffrey Pullum, a professor who writes for the Chronicle of Higher Education, in an article titled Being an Adverb. Says Pullum:

“Applying this adverb-erasing recommendation across the board would be disastrous, in random ways. In some cases it would cause a spectacular change of sense: the slogan of the British department-store chain John Lewis, Never Knowingly Undersold, would become Undersold. Quite often it would yield vapid slop with the wrong meaning: Defusing a bomb must be done carefully would become Defusing a bomb must be done; The dog had been brutally treated would become The dog had been treated. Sometimes it would create outright ungrammaticality: a carefully worded letter would become *a worded letter.”

“The truth is that nothing as mechanical as abandoning adverbs (or certain subclasses of adverbs) is going to uniformly improve your prose. . . . Like the familiar advice to avoid passive clauses, it is never followed by the people who recommend following it.”

“The writers they admire never follow it either. And I don’t mean just that fine writing with adverbs is possible; I mean that all fine writing in English has adverbs (just open any work of literature you respect and start reading).”

As usual, there’s a grain of truth in this piece of advice. There are undoubtedly extraneous adverbs that can be cut to make your writing tighter and better. Just don’t go overboard. Sometimes a good adverb is exactly what you need.

2 comments

Next Page »