Colonial Expansion 1.12-6.4.0.46

Holy Cow BatFrog!

No! There is not a new mob in the game! But upon logging on to the production server, what did a behold but a colony sitting at spawn preventing me from doing anything except running through it.

I checked the configs for the mod and it appeared as if I had it set to make you go 2000 blocks out before placing the townhall or supply chest. This did work in the 1.11.2 version of the pack and the Minecolonies mod. I was informed by Raycoms the author of the mod that was technically a glitch and the settings are for the /rtp command.

Then I questioned, why was the spawn protection in the server.properties file not working and it turns out that in 1.8 Mojang made a change. If no one is assigned op at the time the server world is created, the spawn protection setting will be ignored. Creating an op later on will not enable it.

Shit!

That explains the occasional spawn grief and player builds at spawn that I have detected in the last two years. Because sometimes I’m not op when I create server worlds. The setting should be enough!

So, yesterday I created “No Op Spawn Protection“. A mod that is installed server and client side that gives you one option in the config. The spawn protection setting from the server.properties file. Not sure what Mojang’s range for the protection was, but I gave you a range from 0 thru to 10,000. The mod will allow creative players to build within the protected area. I will be adding features to this mod as we progress in using it. I have to test if redstone circuits can be utilized as well doors and chests. And then later I’ll add blacklist/whilelist capability for objects. And I expect it’ll get tedious, so I’ll add /commands to allow configuring it while in the game.

Also, I took even more ownership of my fork of “Bad Wither No Cookie!” mod which is now known as “Bad Wither No Cookie! Reloaded“. And I might even begin porting it to the lower tiers such as 1.10.2, 1.9.4, 1.8.9, etc, because it now contains features the original mod author Droidicus never added. I added Thunder Silencing and Log Message Silencing.

Universal

Updated

Added

 

Kinguin - Save on Every Game 468x60

 

 

Colonial Expansion 1.12-6.3.0.45

I like flaky chicken, not flaky mods!

 

Universal

Updated

Added

Removed

  • Removed the following because when run on a windows platform they error and crash, in Linux they do not. Therefore I’m not even sure giving out the crash report will help anyone.
    • Industrial Foregoing
    • Tesla Core Lib
    • Tesla Powered Thingies

Client

Updated

 

 

 

Sky Colony now on Forge 1.12 – 2443

CC0 Public Domain Linkback: http://maxpixel.freegreatpicture.com/Fish-Angling-Boat-Angler-Bait-Catch-Fishing-Hook-1296437

The Changes

Forge upgraded to 1.12-14.21.1.2443!

Universal

Updated

Added

Casualties (they didn’t update to 1.12)

  • Better Achievements
  • Compat Layer
  • Enderthing
  • Faster Ladder Climbing
  • Giacomo’s Foundry
  • Giacomo’s Bookshelf
  • Helpfixer
  • Omlib
  • Open Modular Defense & Turrets
  • Rope Bridge
  • No More Recipe Conflicts
  • Terracart
  • Twerk Sim 2k16
  • Woot
  • Fast Leaf Decay

Prisoner of War (World Ending Bugs)

  • Creative Core & therefore also Online Picture Frame

Client

Updated

Added

 

 

 

Colonial Expansion 1.12-6.2.0.43

Some updates is all before I put this on 1.12.1

Universal

Updated

Client

Updated

 

 

Technic Distribution Servers & My Scripts for Them

A Technic Distribution Server is a wonderful way to distribute a Minecraft modpack. Currently no other launcher supports the one major feature of this server. That feature that even the Curse (now TwitchApp) launcher lacks is incremental updating of client level modpacks. What that means is if you have distributed a modpack with 100 mods in it and only 5 of them updated. The players using your modpack from a properly configured Technic Solder Distribution Server such as the setup I describe on my pages here at KreezCraft.com will only automatically download just those 5 mods. On every other launcher out the players will download the other 95 mods regardless if they have the same versions or not. This means that updates via an intelligently installed Technic Solder Distribution Server go very fast.

My scripts as detailed on my pages for Technic Solder Distribution Server are for maintaining a server in this exact mode. They are not meant to make a large zip file that you will then distribute one time to all of your highschool and college friends. My scripts are designed to help you to update your Technic Solder Distribution Server, update the packs you are watching in it very easily and get on with your life. My scripts help you to main a proper and highly professional distribution system.

If you are looking to make a fat zip, my Technic Solder Scripts and my instructions are not for you.

NOTE: While this is a rant, I did have to get it off my chest. A programmer was trying to tell me that main script for this particular project had failed. Being a programmer he should’ve known how to explain better. But just kept repeating the same thing over and over. Being a programmer myself I got very frustrated and felt this post was needed.

Long story, short, the script is failing and, and yeah, it’s not creating the zipfile like it should. I have created a GitHub entry for anyone that would like to help me fix it. I’ve done some work on it today and now am also quite frustrated with it. I guess that I would’ve been working had I not left the Technic Solder scene, but I did, because Curse Launcher now TwitchApp matured and is the best damn tool out for building modpacks and distributing them. Granted it doesn’t do incremental and its really kludgy if the mod is not on Curse because of all of the extra perms and stuff and where they have to be and this and that and the other whereas if it’s on curse, you add it, you are done with it. But hey if a mod isn’t on Curse it isn’t worth having anyways.

https://github.com/kreezxil/Technic-Solder-Support

Colonial Expansion 1.12-6.1.0-RC1

Just some updates and adds.

Forge on build 2443.

Universal

Updated

Added

Client

Added

 

Kinguin - Save on Every Game 468x60

 

 

Skyblock: Godless v14

Fourteen is a great number too!

Mods have updated today.

Universal

Updated

Added

 

 

 

SkyBlock: Godless v13 <--- Lucky number Thirteen!

A Gibbous Moon is near enough to Full for me!

You can’t get any more lucky  that being born on Friday 13th at night under a Gibbous Moon!

Forge updated to build 2443. <— This is the main reason for the update, it fixes so much stuff!

Added theBOMPlugin which is a mod that enhances JEI to give you a bill of materials required to assemble an item. It accessible under an exclusive tab on the JEI screen.

 

Universal

Updated

Added

Kinguin - Save on Every Game 468x60

 

 

More Beautiful Buttons for 1.11.2 coming to a Pack near you!

I found a way to extract values without strange syntax using jq and with the help of the article at https://programminghistorian.org/lessons/json-and-jq

Let’s take a look at my gravel_button.json recipe:

gravel_button.json
 
  1. {
  2. "type": "forge:ore_shapeless",
  3. "ingredients": [
  4. {
  5. "item": "minecraft:gravel"
  6. },
  7. {
  8. "item": "morebeautifulbuttons:button_press"
  9. }
  10. ],
  11. "result": {
  12. "item": "morebeautifulbuttons:gravel_button"
  13. }
  14. }

 

All of my buttons are formatted in the exact same way as recipes, with the Minecraft material as the first item.

Therefore extrapolating from the article I’ve developed the command line snippet that produces:

cat gravel_button.json | jq -r '.ingredients[0].item'

This line says to send all of the JSON data from the recipe file and use it as the input for the jq (json query) program, to output the value as a raw string that is unquoted and that I want the ingredients value which is an array, that element 0 of this array is the target and in that target we’re interesting in the field named item.

This outputs the value:

minecraft:gravel

Therefore I can save this output in Bash as a variable using:

theBlock=$(cat gravel_button.json | jq -r '.ingredients[0].item')

Granted I’m still doing this at the command line and this will shine when I put it in a script using a for iteration as you will soon see.

Changing gears for a bit, let’s look at what I need from 1.11.2 to make a shapless recipe.

GameRegistry.addShapelessRecipe(new ItemStack(resultItem), minecraftItem, modItem);

In this case resultItem will be extracted from field above using jq, just the same I can extract it from the file name as I made sure the file names matched the result when I generated these in the first place. However, to be clear and accurate I’ll add a portion of script the reads it from the result block.

cat gravel_button.json | jq -r '.result.item'

which will produce the expected value of 

morebeautifulbuttons:gravel_button

the modItem for my mod is called “morebeautifulbuttons:button_press” and this will be a constant in my script. The button_press is an object that ensures that my recipes don’t collide with other mods’ recipes.

I am sure at this point some of you will inform me how to do the following on oneline or in some other better way. Please by all means share it. For now, based on my research this is how I am going about doing it.

Yeah, so based on that you know I’m gonna cat the file twice to get two different values for my script. I’ve saved the script as convertThem.sh and did chmod a+x on it to make it executable and therefore allow type ./convertThem.sh to activate it.

#!/bin/bash
# you must have jq installed for this to work

for f in *.json;
do
  theBlock=$(cat $f | jq -r '.ingredients[0].item')
  theResult=$(cat $f | jq -r '.result.item')
  echo "GameRegistry.addShapelessRecipe(new ItemStack(${theResult}), ${theBlock}, morebeautifulbuttons:button_press);" >> copyMe;
done

That’s it! Now all I have to do is open the file copyMe and copy the data to my recipes.java and I’m done with it. I have back-ported my 1.12 mod to 1.11.2. And thanks to this and the fact that I can’t tell people to bugger off, the rest of you 1.12 authors have an avenue that you can modify to your needs to back-port to 1.11.2 or other versions.

Now that you have read through that novel. There are some other things you need to consider.

  1. modid:item is not how it is represented in 1.11.2 so you will need to cut the value at the colon. Therefore use: cut -f2 -d:
    That will get you the part after the :.
  2. Most items in typical JAVA code that you will be using will be the variable references and those are uppercase, usually. Use ^^ in the variable reference for this. Example: ${theBlock^^} will uppercase the variable.
  3. On top of that you are referencing those variables against the class file they come from, in my case it is InitBlocks.
  4. The Button Press comes from the InitItems class, this also is taken into account.

My updated conversion script is as follows:

convertThem.sh
 
  1. #!/bin/bash
  2. # you must have jq installed for this to work
  3. for f in *.json;
  4. do
  5. echo "found $f"
  6. echo "extracting ingredient"
  7. tempVar=$(cat $f | jq -r '.ingredients[0].item')
  8. theBlock=$(echo "$tempVar" | cut -f2 -d:)
  9. echo "extracting result"
  10. tempVar=$(cat $f | jq -r '.result.item')
  11. theResult=$(echo "$tempVar" | cut -f2 -d:)
  12. echo "creating code fragment"
  13. echo "GameRegistry.addShapelessRecipe(new ItemStack(InitBlocks.${theResult^^}), Blocks.${theBlock^^}, InitItems.BUTTON_PRESS);" >> copyMe;
  14. done

 

The script above does not take into account the data field from the 1.12 recipes. I discovered this after testing my mod in 1.11.2 last night. While I can make this adjustment manually in the code, I’d rather not as it still way too many recipes to edit.

 

convertThem.sh
 
#!/bin/bash
# you must have jq installed for this to work
for f in *.json;
do
  echo "loading $f into memory"
  theFile=$(<"${f}")
  echo "extracting ingredient"
  theBlock=$(echo $theFile | jq -r '.ingredients[0].item' | cut -f2 -d:)
  echo "extracting meta value if it exists"
  theMeta=$(echo $theFile | jq -r '.ingredients[0].data')
  echo "extracting result"
  theResult=$(echo $theFile | jq -r '.result.item' | cut -f2 -d:)
  echo "creating code fragment"
  if [ "$theMeta" == "null" ]; then
    echo "GameRegistry.addShapelessRecipe(new ItemStack(InitBlocks.${theResult^^}), Blocks.${theBlock^^}, InitItems.BUTTON_PRESS);" >> copyMe;
  else
    echo "GameRegistry.addShapelessRecipe(new ItemStack(InitBlocks.${theResult^^}), new ItemStack(Blocks.${theBlock^^},1,${theMeta}), InitItems.BUTTON_PRESS);" >> copyMe;
  fi
done

I’ve also loaded the file into a variable so as to reduce the cat operation which is rather intensive on the system. This will provide a decent speed increase.

jq returns the value “null” for objects that do not existing in the JSON being parsed. So I test for that. When data does exist it will possess the integer value assigned to it in the JSON recipe.

FINAL

Skyblock: Godless v12 <--- Holy Number!!!

The 2nd Chodesh number  has been reached!

Forge now on build 2430.

Removed destabilized redstone ore from the stone gens.

Added an 8 sapling shapeless recipe for getting dirt.

Universal

Updated

Added

 

Kinguin - Save on Every Game 468x60