Finally managed to make a boat, explored my river a bit. Came back to my tiny cave "home" but didn't want to risk breaking the boat by hand, fearing it might drop only 2 planks and 3 sticks instead.
So thought: I'll just leave it there, then come back tomorrow morning for more river exploration.
Then it started raining, so yeah, ok, waiting until a clear sunny morning, then.
Then very sad to see the boat GONE.
Do zombies attack and break boats ? Do boats despawn naturally ? Sink when it rains ? Or what ?
Needless to say, I'm a bit curious.
Infuriating Rain
Is it just me or does it seem to always start about mid-day then last until _dusk_ of the next day ? Meaning, you get to play for 5 minutes then have to wait doing almost nothing for 35 minutes, which can severely cripple food reserves.
Given that it seems to rain every 4 days and that this makes rain seem to "cut"' one day and a half of activity, it seems that it all comes down to this: Every 4 days, 25 minutes of activity _vs_ 55 minutes of forced inactivity.
Maybe I was just unlucky. I dunno.
I'd wish item despawn times were 45 minutes instead of the 15 minutes it seems they currently have (I did not test it though). Sudden rain (i.e. because no weather warning at all!) got me killed more than once as I tried to rush back home, and the longer duration of night + rain + night before you can have a chance to come back for your stuff, vs item despawn duration, means you are condemned to lose all your "before chests" progress everytime rain "kills" you. Sure, mobs don't spawn, but they will be able to get out of all kind of holes in the ground.
It would be cool if there was a way to see coming rain BFORE it actually happens. Like, a change in the cloud cover with much bigger and darker clouds, and slightly reduced day light level (but not enough to make mobs spawn), so that a prudent player can take notice and has a chance to take action before it is too late.
Self-Destructing Temple
One game I started, I was in a desert between not one but TWO Desert Temples. Planned to eventually get those treasure chests... then as I walked near one temple, I heard a big boom. Way bigger than a creeper explosion: the sound of several TNT blowing up.
I guess some mob spawned in the 3x3 loot area under the temple, thus triggering the pressure plates.
Bummer lol !
Lesson learned: if you see temples, move AWAY and come back only when ready to get the loot.
Why bother with Charcoal ?
Okay, so Charcoal isn't "strong" enough to smelt metal, we need pure Coal. Fine with that.
- Charcoal can smelt 8 (non-metal) items.
- However, Charcoal comes from smelting 1 Wood Log into a Sandstone Furnace (or better), requiring 1 fuel unit.
- Meanwhile 1 Wood Log = 4 Planks (1 crafting) = 16 Sticks (4 more crafting) = the same 8 smelts too !
- But not only that, but you can more easily "space out" sticks-based smelting, while with Charcoal you have to cook all of your items all at once or else you're wasting fuel.
So why bother with Charcoal, then ? To "save up" on 5 crafting steps (which are easily done at night at a rather negligible food cost), but at the cost of 1 fuel unit (quite a high cost in the beginning).
Maybe wood fuel could only cook items which can be smelted in a Clay Furnace, but when trying to make glass, or anything which need a Sandstone Furnace or better, then Charcoal would be needed.
Shame, I feel you have cheated yourself out of the best this mod has to offer: the sense of achievement that comes by overcoming the hardship of the early ages. I suggest compromising and giving yourself a small amount of food and a single copper pickaxe
That is what I did at first but I still had negative 30 levels so it didn't go over very well
And when I found out that didn't work I cheated as hard as I could.
I also updated to R62 before I decided to hardcore cheat so maybe I just encountered glitches that made the mod a bit harder than it should have been.
Like zombies that can one shot you while you have full iron on.
nvm apparently i didn't update properly so i throw away all of the iron and now i just have a lot of wood a few chickens, a furnace, and a copper pick. I'm also level 11 now.
It's a shame that the wiki was killed by spam. You might consider moving its content over to Wikia, which I'm guessing has spam protection built in. The ads are annoying, but it avoids the hassles of self-hosting.
It's a shame that the wiki was killed by spam. You might consider moving its content over to Wikia, which I'm guessing has spam protection built in. The ads are annoying, but it avoids the hassles of self-hosting.
I should have known better than to have an open wiki. I think I'll go with some home-grown solution that only I can edit, but thanks for the pointer. In all honesty the spambots probably did me a favor; that wiki was an abomination
1) The land might look ugly if grass blocks fell
2) Dirt probably only falls to make things harder - grass can't be obtained [w/o silk touch], so this is moot
3) The grass/vegetation holds the block together / in place.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Is it just me or does it seem to always start about mid-day then last until _dusk_ of the next day ? Meaning, you get to play for 5 minutes then have to wait doing almost nothing for 35 minutes, which can severely cripple food reserves.
Given that it seems to rain every 4 days and that this makes rain seem to "cut"' one day and a half of activity, it seems that it all comes down to this: Every 4 days, 25 minutes of activity _vs_ 55 minutes of forced inactivity.
Maybe I was just unlucky. I dunno.
I'd wish item despawn times were 45 minutes instead of the 15 minutes it seems they currently have (I did not test it though). Sudden rain (i.e. because no weather warning at all!) got me killed more than once as I tried to rush back home, and the longer duration of night + rain + night before you can have a chance to come back for your stuff, vs item despawn duration, means you are condemned to lose all your "before chests" progress everytime rain "kills" you. Sure, mobs don't spawn, but they will be able to get out of all kind of holes in the ground.
It would be cool if there was a way to see coming rain BFORE it actually happens. Like, a change in the cloud cover with much bigger and darker clouds, and slightly reduced day light level (but not enough to make mobs spawn), so that a prudent player can take notice and has a chance to take action before it is too late.
If wearing armor makes rain less effective at starving you, that might help
1) The land might look ugly if grass blocks fell
2) Dirt probably only falls to make things harder - grass can't be obtained [w/o silk touch], so this is moot
3) The grass/vegetation holds the block together / in place.
Just my opinion, but
1) random floating grass blocks and hills with gaping holes in the sides looks uglier to me,
2) I don't get how grass only being obtainable with silk touch has anything to do with falling grass being moot
3)This works, I have nothing to say against it
Thanks for the wiki update! Congrats Avernite ! It's quite something to see so many frequent updates on such a detailed mod !
A couple suggestions :
Flint Pickaxe
Tool Harvest Level: 1.0 (Flint).
Can break: Any block with a Minimum Tool Harvest Level no more than 1.0, and requiring the pickaxe tool.
Main Use: Faster and more direct Sandstone collection; allows sealing of shelter entrance with Sandstone.
Sure, your first few Flints should always go into a Flint Axe. But what about the interesting choice between a 3rd flint axe vs a flint pick ?
Nether Furnace
Change the name of the Netherrack Furnace to Nether Furnace, and make the recipe require Nether bricks instead. Might require an icon update too.
It just feels more appropriate somehow.
Maybe use the full version number
Just like the vanilla launcher allows you to play any older version of Minecraft, would it be possible that MITE releases be named using the full versin number:
i.e. both on the Minecraft main menu screen, and for the in the appdata/roaming/minecraft/versions folder, using not the following name for the game folder:
1.6.4-MITE
but maybe something more like this :
1.6.4-MITE R62
This would allow easier testing of new versions features, while preserving easy accessibility to older versions.
Keep away from the "big-number-itis" syndrome
Block Hardness values - and accordingly tool durability, should be "small" numbers. Makes thing more consistent with the rest of the mod, more intuitive. The difficulty of the mod shouldn't be mastering simple maths, after all.
For example, Too Harvest Levels are "small" values. They look "nice". Armor values, especially for Leather armor, are also small, intuitive values.
Block Hardness and Tool durability, however, are not as "intuitive".
Either internal values stay as integers, with only a displayed values change, or internally durability becomes floating point instead. I used 1/40 only because so many of the values sweem to be wohle multiples of that.
Personally, I wouldn't mind seeing the various ores block hardness increased, especially the best ones, to make sure they fall within whole mutiples of not-too-huge numbers, maybe like this: Ore, Copper 8 2
Ore, Silver 8 2
Ore, Iron 12 2
Ore, Mithril 20 3
Ore, Adamant 40 4
The Meaning of Life, the Universe, and Everything.
Join Date:
5/26/2014
Posts:
44
Member Details
BTW Avernite your changes to creeper AI were brutal...lol...my house has been blown up so many times I'm totally out of cobblestone rebuilding it. I'm not saying the changes weren't warranted, they were a joke before. But they have safely retuned to that special place in my heart where I put the things that scare me--and they almost completely prevent monster farming traps. Might be a little too hard but...hard to say I'm still adjusting to them being something other than dumber than a box of rocks.
It's SO NICE to not have hellhounds spawning in my mining camp bases, /thanks.
Killed my first invisible stalker (not sure on name?)...damn dude you did a good job on those. I was mining while glancing around looking for approach of bad guys when I saw my path home go darn and a torch popped off the wall. I was like "Oh...oh no....no no no no no." And 2 seconds later then next closest torch went out...then the next...then the next....then I ran like a little girl screeming through the dark to my base and locked the doors. From my window I saw all the torches go out on the way to me...all my hard work undone...and then the monsters came out in full force... He finally dropped into one of my bases monster killing slots with a little torch bait, and got bone-whipped to death for scarring the crap out of me--but it was a visual I will not soon forget. Brilliant design! Just...I hope they don't spawn often as it completely undid about 5 hours of torching up a mine to mine it...I was very sad to have all that work wasted. Might be a little too effective =/ heh.
Sure, your first few Flints should always go into a Flint Axe.
You are better to spend your first flint on a hatchet, then make a couple of shovels and use them to gather the rest of the flint you need for axes. It is much faster, and uses up much less hunger, even after taking into account the extra log you get from the axe.
Just my opinion, but
1) random floating grass blocks and hills with gaping holes in the sides looks uglier to me,
2) I don't get how grass only being obtainable with silk touch has anything to do with falling grass being moot
3)This works, I have nothing to say against it
I assume that dirt falls to increase difficulty (no more dirt houses etc). However, grass is not obtainable, and hence the argument (that grass should or should not fall) is moot in the context of difficulty (in other words; unnecessary beyond aesthetics).
#1 is totally subjective
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
The Meaning of Life, the Universe, and Everything.
Join Date:
5/26/2014
Posts:
44
Member Details
Oh, could someone give me advice regarding finding mithril? Either the RNG is picking on me, or I'm not looking in the right places. I've explored entire caves (extreme hills biome) and never found a bar. I've gone as far down as bedrock and strip mined with TNT I found in 3 desert temples. I've mined admantite with TNT, found emeralds, tons of iron, tons of copper...never have I seen 1 ingot of mithril. Is it camoflagued or something? Or hides behind coal or something? Without Mithril I can't mine diamonds and it's getting a little odd that I've found the ore AFTER mithril, but no mithril.
Any tips anyone? I do a lot of chasm work...maybe I'm going too high and too low and it's in the middle somewhere?
Multi-metal early pickaxe - In my new world, I have 15 copper nuggets, 9 gold nuggets, and 9 silver nuggets. For all intents and purposes, that is equal to three ingots, and in my book, three ingots are a pickaxe. However I still have to sift through about 100 more gravel before I can actually get my pickaxe, and that is kind of tedious.
Anyway, the suggestion in a nutshell is; Allow player to craft early pickaxes with any combination of early metals.
Not sure the best way of implementing it though. If I was lazy; three recipes allowing for feasible combinations of ingots in the tool-head: Copper-Copper-Gold, Copper-Copper-Silver, Copper-Gold-Silver (alphabetical order). If I was bored, I would mutilate the recipe system a little bit (three non-equal ingots = metal pickaxe, 3 equal ingots = correct material pickaxe).
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
The Meaning of Life, the Universe, and Everything.
Join Date:
5/26/2014
Posts:
44
Member Details
One last thing--this might help solve the anvil bug. I've noticed that I can only do 1 nugget of repair on certain items if my level is low...but I can do more as my level increases. So at level 1 I can fix my iron axe 1 nugget at a time (three time to get it full), at level 10 I can do all 3 nuggets at the same time.
Is it possible there is a value system still in there that "values" the items and makes it harder to repair "better" items. Such that if you dropped low enough in level you couldn't even put 1 nugget into them? It doesn't explain everything but might give you clues to solve the ultimate mystery.
You are better to spend your first flint on a hatchet, then make a couple of shovels and use them to gather the rest of the flint you need for axes. It is much faster, and uses up much less hunger, even after taking into account the extra log you get from the axe.
Thanks!
However, in half of the worlds I played (and survived past the first Minecraft "8 days Month"), gravel was quite rare even with a fair bit of exploration, so I preferred to maximize my wood output instead.
Here is my own "unprofessionnal analysis":
You need almost 2 flint shovels to get enough flint for one more flint shovel. So you quickly run out of flint and have to go back to wood shovels or by hand.
If you mix 1 flint + 2-3 wood shovels in order to reach your "next" flint shovel, that is still a lot of wood used up and thus you'll need the hatchets/axes sooner or later anyway! It takes a LOT of shovels to get to that first pick, after all. If you lack wood and have to fall back to doing gravel breaking by hand, then that is a real time and energy waster: alternating between doing half by flint shovel and half by hand, is slower than using straight wood shovels only. So I think flint hatchets until enough wood for sufficient wood shovels to reach the flint axe, seems to me to be actually faster down the line.
Plus, the extra wood is really great for enchancing overall survivability (wood bowl for salads, wood club for better reach and combat prowess which can be a lifesaver or make hunting much easier, a chest, a bed!). And make me able to do more things too. This "easier" and "less boring" survivability MAY be what makes me feeling as if the time actually passes faster lol.
Still, I think the "fastest" is to make 2 or 3 flint hatchets first, breaking gravel by hand ONLY for the 1st hatchet and then never anymore, and then either making 1 flint axe followed by 1-2 flint hatchets, OR making 2 flint axes directly (depending on your non-shovel wood usage), until you have enough wood to make sure you can reach the copper pick without needing any more wood. Then using wood shovels, making flint shovels as soon as you can get them, and repairing them to maximize durability. I don't repair wood shovels - use them as fuel instead, unless they clutter up my inventory space then I repair them.
One feature I'd like to see:
Either: The player CANNOT eat at all unless eating restores a FULL point of saturation *_OR_* a full point of Hunger.
Or: We get some kind of user interface feedback on the current saturation level.
Or: The "low saturation" shaking of the hunger drumsticks starts a bit sooner, so that we have time to actually FINISH breaking the current block or killing a stupid cornered pig or doing whatever simple action before the hunger level suddenly drops by 1.
Or: When eating something currently selected would "waste" some of what you eat (go over your maximum hunger or max saturation), we get some kind of user interface "feeling full" feedback of that before we do the actual eating action (maybe only available when hunger is at most 1/2 "shank" from the max).
Why ?
Let's say you want to keep yourself full. You eat up until full. then you move a mere 16 blocks. Not 100 blocks, only 16. Wow, suddenly you're able to eat again ! Took me a while to see that I ended up using up about 5 times way more seeds than needed while traveling. Ouch.
But when to avoid such waste I started waiting until the hunger bar starts to "shake" before eating 6 seeds in a row. Bad idea, as this forces you to be way too attentive to that small portion of the screen, and often I lost hard-to-restore hunger unexpectedly because it happened in the middle of a lengthy "break by hand" action, right before a fight, etc. And stopping the action to eat is ALSO a form of waste and can even be life-threatening too.
In vanilla, the actions are fast so you can complete SEVERAL actions before the hunger drpos. In MITE, the actions can often be longer than the time between "shaking starts" and "you lose 1 hunger". So given the choice between wasting lots of sugar and seeds from "overfeeding" vs losing hunger from waiting until shanks shaking starts to feed, I tend to go with overfeeding, but currently to avoid both of these extremes, there isn't enough player feedback and it is mostly just pure guesswork of how much you exerted yourself recently.
Anyway, that is not something very important, i just feels a bit like some minor ibut constant rritation, like a bit of food stuck between my teeth or something lol.
One last thing--this might help solve the anvil bug. I've noticed that I can only do 1 nugget of repair on certain items if my level is low...but I can do more as my level increases. So at level 1 I can fix my iron axe 1 nugget at a time (three time to get it full), at level 10 I can do all 3 nuggets at the same time.
Is it possible there is a value system still in there that "values" the items and makes it harder to repair "better" items. Such that if you dropped low enough in level you couldn't even put 1 nugget into them? It doesn't explain everything but might give you clues to solve the ultimate mystery.
Hope that helps!
Thanks for the info. As a matter of fact I was just looking into the anvil bug. Here's the function in question:
public void updateRepairOutput()//version of function from R62
{
ItemStack var1 = this.inputSlots.getStackInSlot(0);
this.maximumCost = 0;
int var2 = 0;
byte var3 = 0;
int var4 = 0;
//if (var1 == null)
if (var1 == null || var1.getItem()==Item.enchantedBook || (inputSlots.getStackInSlot(1)!=null && !inputSlots.getStackInSlot(1).isRepairItemOrEnchantedBook()))//mod
{
this.outputSlot.setInventorySlotContents(0, (ItemStack)null);
this.maximumCost = 0;
}
else
{
ItemStack var5 = var1.copy();
ItemStack var6 = this.inputSlots.getStackInSlot(1);
Map var7 = EnchantmentHelper.getEnchantments(var5);
boolean var8 = false;
int var19 = var3 + var1.getRepairCost() + (var6 == null ? 0 : var6.getRepairCost());
this.stackSizeToBeUsedInRepair = 0;
int var9;
int var10;
int var11;
int var13;
int var14;
Iterator var21;
Enchantment var22;
It's a hairy piece of code, at least when deobfuscated. If anybody can spot the problem before I do let me know
Gaaaah man to code through obfuscated code like that, you're a genius!
I'm super-good at code analysis but NOT at deobfuscation or "generic variable names" indirection. I, and I'm quite sure others, could probably help, but having your "best guess" for the "real-or-as-close-as-you-can-make-it" variable names would make a big difference.
Maybe 1st step would be take that piece of code and suffix-rename all variables you can to something more indicative.
i.e. Even if I know from the beginning that I saw that "var1" is used for storing the item stack currently in the first anvil item slot, I have to mentally "remember" that little fact every time I see var1 later on. For a single variable, not so bad. For tens of variables, the "mental overhead" just reduces the overall ability to "see through the healthy forest to diagnose the diseased tree".
So, step #1 to solve this would be to search-n-replace all instances of as many variables as you can with what you think the variable is used for :
"var1" -> "var1_AnvilSlotAItemStack"
Probably, the bug will show itself much more easily after that extra deobfuscation step.
- - - - - - - - - - - -
Second step would be major code cleanup. The above piece of code would never "pass" any code walkthrough / code review, from any of the places where I worked as a programer analyst. YOu're a genius if you can easily parse such code directly without any major "code reformatting".
Also, if terms like: this.inputSlots.getStackInSlot(1)
work out to be exactly the same as inputSlots.getStackInSlot(1)
then either removing the useless "this." , or making sure it is used very consistently, not just only in a few places, will also help make the code "lighter" / a bit easier to analyse.
Sometimes, every bit helps.
- - - - - - - - - - - -
Unless a function needs optimization (code size or limits of total number of variable names maybe, depend on language, but mainly in mosts cases speed of execution only, which is important only for frequenrlyt accessed functions), I also like to use extra variables to make things STUPID SIMPLE to read, rewriting what I need so that the code becomes all broken down into "easily digestible snippets". That way I don't even need "redundant" comments.
I also like to use parentheses explicitly and separate "logic ( parentheses) from "grouping" parentheses.
Also, I like to split realy big functions into several smaller blocks, with the relevant variables located right before the blocks, so that I don't have mega-multiplage to constantly scroll up and drown through, and see in each block only the variables i really need. when a block is big, I even make a totally separate function to encapsulate it.
This "divide and conquer" seems to take longer and feels like a step-by-step approach, going the long scenic route even, but ultimately it is the best way I think to handle many well hidden bugs and makes code much easier to modify and maintain in the long run.
Think of it like this: Take an essay or novel. It has chapters. In the chapters, there are sections. In the sections, there are paragraphs, to group sentences from the same idea. In the sentences, there is punctuation. Now make each chapter one single long BIG BLOCK WALL of text, only 1 single huge paragraph, and replace all punctionation only with commas. It surely will become half unreadable. Then ask someone to analyse the text.
95% of the "hairyness" of that piece of code commes not from it's internal complexity, but it seems mostly from the way it is structured. Maybe "cleaning it up" will make the bug stand out all by itself ?
So thought: I'll just leave it there, then come back tomorrow morning for more river exploration.
Then it started raining, so yeah, ok, waiting until a clear sunny morning, then.
Then very sad to see the boat GONE.
Do zombies attack and break boats ? Do boats despawn naturally ? Sink when it rains ? Or what ?
Needless to say, I'm a bit curious.
Infuriating Rain
Given that it seems to rain every 4 days and that this makes rain seem to "cut"' one day and a half of activity, it seems that it all comes down to this: Every 4 days, 25 minutes of activity _vs_ 55 minutes of forced inactivity.
Maybe I was just unlucky. I dunno.
I'd wish item despawn times were 45 minutes instead of the 15 minutes it seems they currently have (I did not test it though). Sudden rain (i.e. because no weather warning at all!) got me killed more than once as I tried to rush back home, and the longer duration of night + rain + night before you can have a chance to come back for your stuff, vs item despawn duration, means you are condemned to lose all your "before chests" progress everytime rain "kills" you. Sure, mobs don't spawn, but they will be able to get out of all kind of holes in the ground.
It would be cool if there was a way to see coming rain BFORE it actually happens. Like, a change in the cloud cover with much bigger and darker clouds, and slightly reduced day light level (but not enough to make mobs spawn), so that a prudent player can take notice and has a chance to take action before it is too late.
Self-Destructing Temple
I guess some mob spawned in the 3x3 loot area under the temple, thus triggering the pressure plates.
Bummer lol !
Lesson learned: if you see temples, move AWAY and come back only when ready to get the loot.
Why bother with Charcoal ?
- Charcoal can smelt 8 (non-metal) items.
- However, Charcoal comes from smelting 1 Wood Log into a Sandstone Furnace (or better), requiring 1 fuel unit.
- Meanwhile 1 Wood Log = 4 Planks (1 crafting) = 16 Sticks (4 more crafting) = the same 8 smelts too !
- But not only that, but you can more easily "space out" sticks-based smelting, while with Charcoal you have to cook all of your items all at once or else you're wasting fuel.
So why bother with Charcoal, then ? To "save up" on 5 crafting steps (which are easily done at night at a rather negligible food cost), but at the cost of 1 fuel unit (quite a high cost in the beginning).
Maybe wood fuel could only cook items which can be smelted in a Clay Furnace, but when trying to make glass, or anything which need a Sandstone Furnace or better, then Charcoal would be needed.
That is what I did at first but I still had negative 30 levels so it didn't go over very well
And when I found out that didn't work I cheated as hard as I could.
I also updated to R62 before I decided to hardcore cheat so maybe I just encountered glitches that made the mod a bit harder than it should have been.
Like zombies that can one shot you while you have full iron on.
nvm apparently i didn't update properly so i throw away all of the iron and now i just have a lot of wood a few chickens, a furnace, and a copper pick. I'm also level 11 now.
I should have known better than to have an open wiki. I think I'll go with some home-grown solution that only I can edit, but thanks for the pointer. In all honesty the spambots probably did me a favor; that wiki was an abomination
Answer : so that you can make torches from wood (rather than just from coal)
I also noticed grass does not fall like sand.
in R62 can you no longer get -levels?
It's not supposed to fall but I'm not sure why
1) The land might look ugly if grass blocks fell
2) Dirt probably only falls to make things harder - grass can't be obtained [w/o silk touch], so this is moot
3) The grass/vegetation holds the block together / in place.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
If wearing armor makes rain less effective at starving you, that might help
Just my opinion, but
1) random floating grass blocks and hills with gaping holes in the sides looks uglier to me,
2) I don't get how grass only being obtainable with silk touch has anything to do with falling grass being moot
3)This works, I have nothing to say against it
A couple suggestions :
Flint Pickaxe
Can break: Any block with a Minimum Tool Harvest Level no more than 1.0, and requiring the pickaxe tool.
Main Use: Faster and more direct Sandstone collection; allows sealing of shelter entrance with Sandstone.
Sure, your first few Flints should always go into a Flint Axe. But what about the interesting choice between a 3rd flint axe vs a flint pick ?
Nether Furnace
It just feels more appropriate somehow.
Maybe use the full version number
i.e. both on the Minecraft main menu screen, and for the in the appdata/roaming/minecraft/versions folder, using not the following name for the game folder:
1.6.4-MITE
but maybe something more like this :
1.6.4-MITE R62
This would allow easier testing of new versions features, while preserving easy accessibility to older versions.
Keep away from the "big-number-itis" syndrome
For example, Too Harvest Levels are "small" values. They look "nice". Armor values, especially for Leather armor, are also small, intuitive values.
Block Hardness and Tool durability, however, are not as "intuitive".
These tables:
Tall Grass 2 -
Vine 20 -
Sand 40 -
Grass 50 -
Gravel 60 -
Pumpkin 60 -
Planks 80 -
Sandstone 80 1
Log 120 1
Ore, Coal 120 2
Cobblestone 200 2
Stone 240 2
Ore, Gold 240 2
Ore, Copper 250 2
Ore, Silver 250 2
Ore, Iron ? 2
Ore, Mithril 350 3
Ore, Adamant 400 4
Tool Wood Flint Obsid Copper Silver RustdIr Gold Iron Mithrl Adamantium
Shovel 200 400 800 1200 1200 1200 800 1600 6400 25600
Pickaxe - - - 3600 3600 3600 2400 4800 19200 76800
Fshng Rod - 3 - 6 6 6 4 8 32 128
tool_durability = #ingots_taken_to_craft_tool * 400 * tool_material_durability
Would become like this instead:
Tall Grass 0.05 -
Vine 0.5 -
Sand 1 -
Dirt/Grass 1.25 -
Gravel 1.5 -
Pumpkin 1.5 -
Planks 2 -
Sandstone 2 1
Log 3 1
Ore, Coal 3 2
Cobblestone 5 2
Stone 6 2
Ore, Gold 6 2
Ore, Copper 6.25 2
Ore, Silver 6.25 2
Ore, Iron ? 2
Ore, Mithril 8.75 3
Ore, Adamant 10 4
Tool Wood Flint Obsid Cppr/Slvr/RustdIrn Gold Iron Mithrl Adamantium
Shovel 5 10 20 30 20 40 160 640
Pickaxe - - - 90 60 120 480 1920
Fishing Rod - 3 - 6 4 8 32 128
tool_durability = #ingots_taken_to_craft_tool * 10.0 * tool_material_durability
Either internal values stay as integers, with only a displayed values change, or internally durability becomes floating point instead. I used 1/40 only because so many of the values sweem to be wohle multiples of that.
Ore, Copper 8 2
Ore, Silver 8 2
Ore, Iron 12 2
Ore, Mithril 20 3
Ore, Adamant 40 4
It's SO NICE to not have hellhounds spawning in my mining camp bases, /thanks.
Killed my first invisible stalker (not sure on name?)...damn dude you did a good job on those. I was mining while glancing around looking for approach of bad guys when I saw my path home go darn and a torch popped off the wall. I was like "Oh...oh no....no no no no no." And 2 seconds later then next closest torch went out...then the next...then the next....then I ran like a little girl screeming through the dark to my base and locked the doors. From my window I saw all the torches go out on the way to me...all my hard work undone...and then the monsters came out in full force... He finally dropped into one of my bases monster killing slots with a little torch bait, and got bone-whipped to death for scarring the crap out of me--but it was a visual I will not soon forget. Brilliant design! Just...I hope they don't spawn often as it completely undid about 5 hours of torching up a mine to mine it...I was very sad to have all that work wasted. Might be a little too effective =/ heh.
You are better to spend your first flint on a hatchet, then make a couple of shovels and use them to gather the rest of the flint you need for axes. It is much faster, and uses up much less hunger, even after taking into account the extra log you get from the axe.
I assume that dirt falls to increase difficulty (no more dirt houses etc). However, grass is not obtainable, and hence the argument (that grass should or should not fall) is moot in the context of difficulty (in other words; unnecessary beyond aesthetics).
#1 is totally subjective
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Any tips anyone? I do a lot of chasm work...maybe I'm going too high and too low and it's in the middle somewhere?
Multi-metal early pickaxe - In my new world, I have 15 copper nuggets, 9 gold nuggets, and 9 silver nuggets. For all intents and purposes, that is equal to three ingots, and in my book, three ingots are a pickaxe. However I still have to sift through about 100 more gravel before I can actually get my pickaxe, and that is kind of tedious.
Anyway, the suggestion in a nutshell is; Allow player to craft early pickaxes with any combination of early metals.
Not sure the best way of implementing it though. If I was lazy; three recipes allowing for feasible combinations of ingots in the tool-head: Copper-Copper-Gold, Copper-Copper-Silver, Copper-Gold-Silver (alphabetical order). If I was bored, I would mutilate the recipe system a little bit (three non-equal ingots = metal pickaxe, 3 equal ingots = correct material pickaxe).
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Is it possible there is a value system still in there that "values" the items and makes it harder to repair "better" items. Such that if you dropped low enough in level you couldn't even put 1 nugget into them? It doesn't explain everything but might give you clues to solve the ultimate mystery.
Hope that helps!
Thanks!
However, in half of the worlds I played (and survived past the first Minecraft "8 days Month"), gravel was quite rare even with a fair bit of exploration, so I preferred to maximize my wood output instead.
Here is my own "unprofessionnal analysis":
If you mix 1 flint + 2-3 wood shovels in order to reach your "next" flint shovel, that is still a lot of wood used up and thus you'll need the hatchets/axes sooner or later anyway! It takes a LOT of shovels to get to that first pick, after all. If you lack wood and have to fall back to doing gravel breaking by hand, then that is a real time and energy waster: alternating between doing half by flint shovel and half by hand, is slower than using straight wood shovels only. So I think flint hatchets until enough wood for sufficient wood shovels to reach the flint axe, seems to me to be actually faster down the line.
Plus, the extra wood is really great for enchancing overall survivability (wood bowl for salads, wood club for better reach and combat prowess which can be a lifesaver or make hunting much easier, a chest, a bed!). And make me able to do more things too. This "easier" and "less boring" survivability MAY be what makes me feeling as if the time actually passes faster lol.
Still, I think the "fastest" is to make 2 or 3 flint hatchets first, breaking gravel by hand ONLY for the 1st hatchet and then never anymore, and then either making 1 flint axe followed by 1-2 flint hatchets, OR making 2 flint axes directly (depending on your non-shovel wood usage), until you have enough wood to make sure you can reach the copper pick without needing any more wood. Then using wood shovels, making flint shovels as soon as you can get them, and repairing them to maximize durability. I don't repair wood shovels - use them as fuel instead, unless they clutter up my inventory space then I repair them.
One feature I'd like to see:
Or: We get some kind of user interface feedback on the current saturation level.
Or: The "low saturation" shaking of the hunger drumsticks starts a bit sooner, so that we have time to actually FINISH breaking the current block or killing a stupid cornered pig or doing whatever simple action before the hunger level suddenly drops by 1.
Or: When eating something currently selected would "waste" some of what you eat (go over your maximum hunger or max saturation), we get some kind of user interface "feeling full" feedback of that before we do the actual eating action (maybe only available when hunger is at most 1/2 "shank" from the max).
Why ?
Let's say you want to keep yourself full. You eat up until full. then you move a mere 16 blocks. Not 100 blocks, only 16. Wow, suddenly you're able to eat again ! Took me a while to see that I ended up using up about 5 times way more seeds than needed while traveling. Ouch.
But when to avoid such waste I started waiting until the hunger bar starts to "shake" before eating 6 seeds in a row. Bad idea, as this forces you to be way too attentive to that small portion of the screen, and often I lost hard-to-restore hunger unexpectedly because it happened in the middle of a lengthy "break by hand" action, right before a fight, etc. And stopping the action to eat is ALSO a form of waste and can even be life-threatening too.
In vanilla, the actions are fast so you can complete SEVERAL actions before the hunger drpos. In MITE, the actions can often be longer than the time between "shaking starts" and "you lose 1 hunger". So given the choice between wasting lots of sugar and seeds from "overfeeding" vs losing hunger from waiting until shanks shaking starts to feed, I tend to go with overfeeding, but currently to avoid both of these extremes, there isn't enough player feedback and it is mostly just pure guesswork of how much you exerted yourself recently.
Anyway, that is not something very important, i just feels a bit like some minor ibut constant rritation, like a bit of food stuck between my teeth or something lol.
Anyway, thanks for a great mod !
Thanks for the info. As a matter of fact I was just looking into the anvil bug. Here's the function in question:
public void updateRepairOutput()//version of function from R62
{
ItemStack var1 = this.inputSlots.getStackInSlot(0);
this.maximumCost = 0;
int var2 = 0;
byte var3 = 0;
int var4 = 0;
//if (var1 == null)
if (var1 == null || var1.getItem()==Item.enchantedBook || (inputSlots.getStackInSlot(1)!=null && !inputSlots.getStackInSlot(1).isRepairItemOrEnchantedBook()))//mod
{
this.outputSlot.setInventorySlotContents(0, (ItemStack)null);
this.maximumCost = 0;
}
else
{
ItemStack var5 = var1.copy();
ItemStack var6 = this.inputSlots.getStackInSlot(1);
Map var7 = EnchantmentHelper.getEnchantments(var5);
boolean var8 = false;
int var19 = var3 + var1.getRepairCost() + (var6 == null ? 0 : var6.getRepairCost());
this.stackSizeToBeUsedInRepair = 0;
int var9;
int var10;
int var11;
int var13;
int var14;
Iterator var21;
Enchantment var22;
if (var6 != null)
{
var8 = var6.itemID == Item.enchantedBook.itemID && Item.enchantedBook.func_92110_g(var6).tagCount() > 0;
//if (var5.isItemStackDamageable() && Item.itemsList[var5.itemID].getIsRepairable(var1, var6))
if (var5.isItemStackDamageable() && Item.itemsList[var5.itemID].getIsRepairable(var1, var6, block))//mod
{
//var9 = Math.min(var5.getItemDamageForDisplay(), var5.getMaxDamage() / 4);
var9 = Math.min(var5.getItemDamageForDisplay(), var5.getMaxDamage()/var5.getRepairCost());//mod
if (var9 <= 0)
{
this.outputSlot.setInventorySlotContents(0, (ItemStack)null);
this.maximumCost = 0;
return;
}
for (var10 = 0; var9 > 0 && var10 < var6.stackSize; ++var10)
{
var11 = var5.getItemDamageForDisplay() - var9;
var5.setItemDamage(var11);
var2 += Math.max(1, var9 / 100) + var7.size();
//var9 = Math.min(var5.getItemDamageForDisplay(), var5.getMaxDamage() / 4);
var9 = Math.min(var5.getItemDamageForDisplay(), var5.getMaxDamage()/var5.getRepairCost());//mod
}
this.stackSizeToBeUsedInRepair = var10;
}
else
{
if (!var8 && (var5.itemID != var6.itemID || !var5.isItemStackDamageable()))
{
this.outputSlot.setInventorySlotContents(0, (ItemStack)null);
this.maximumCost = 0;
return;
}
if (var5.isItemStackDamageable() && !var8)
{
var9 = var1.getMaxDamage() - var1.getItemDamageForDisplay();
var10 = var6.getMaxDamage() - var6.getItemDamageForDisplay();
var11 = var10 + var5.getMaxDamage() * 12 / 100;
int var12 = var9 + var11;
var13 = var5.getMaxDamage() - var12;
if (var13 < 0)
{
var13 = 0;
}
if (var13 < var5.getItemDamage())
{
var5.setItemDamage(var13);
var2 += Math.max(1, var11 / 100);
}
}
Map var20 = EnchantmentHelper.getEnchantments(var6);
var21 = var20.keySet().iterator();
while (var21.hasNext())
{
var11 = ((Integer)var21.next()).intValue();
var22 = Enchantment.enchantmentsList[var11];
var13 = var7.containsKey(Integer.valueOf(var11)) ? ((Integer)var7.get(Integer.valueOf(var11))).intValue() : 0;
var14 = ((Integer)var20.get(Integer.valueOf(var11))).intValue();
int var10000;
if (var13 == var14)
{
++var14;
var10000 = var14;
}
else
{
var10000 = Math.max(var14, var13);
}
var14 = var10000;
int var15 = var14 - var13;
boolean var16 = var22.canApply(var1);
if (this.thePlayer.capabilities.isCreativeMode || var1.itemID == ItemEnchantedBook.enchantedBook.itemID)
{
var16 = true;
}
Iterator var17 = var7.keySet().iterator();
while (var17.hasNext())
{
int var18 = ((Integer)var17.next()).intValue();
if (var18 != var11 && !var22.canApplyTogether(Enchantment.enchantmentsList[var18]))
{
var16 = false;
var2 += var15;
}
}
if (var16)
{
if (var14 > var22.getMaxLevel())
{
var14 = var22.getMaxLevel();
}
var7.put(Integer.valueOf(var11), Integer.valueOf(var14));
int var23 = 0;
switch (var22.getWeight())
{
case 1:
var23 = 8;
break;
case 2:
var23 = 4;
case 3:
case 4:
case 6:
case 7:
case 8:
case 9:
default:
break;
case 5:
var23 = 2;
break;
case 10:
var23 = 1;
}
if (var8)
{
var23 = Math.max(1, var23 / 2);
}
var2 += var23 * var15;
}
}
}
}
if (org.apache.commons.lang3.StringUtils.isBlank(this.repairedItemName))
{
if (var1.hasDisplayName())
{
var4 = var1.isItemStackDamageable() ? 7 : var1.stackSize * 5;
var2 += var4;
var5.func_135074_t();
}
}
else if (!this.repairedItemName.equals(var1.getDisplayName()))
{
var4 = var1.isItemStackDamageable() ? 7 : var1.stackSize * 5;
var2 += var4;
if (var1.hasDisplayName())
{
var19 += var4 / 2;
}
var5.setItemName(this.repairedItemName);
}
var9 = 0;
for (var21 = var7.keySet().iterator(); var21.hasNext(); var19 += var9 + var13 * var14)
{
var11 = ((Integer)var21.next()).intValue();
var22 = Enchantment.enchantmentsList[var11];
var13 = ((Integer)var7.get(Integer.valueOf(var11))).intValue();
var14 = 0;
++var9;
switch (var22.getWeight())
{
case 1:
var14 = 8;
break;
case 2:
var14 = 4;
case 3:
case 4:
case 6:
case 7:
case 8:
case 9:
default:
break;
case 5:
var14 = 2;
break;
case 10:
var14 = 1;
}
if (var8)
{
var14 = Math.max(1, var14 / 2);
}
}
if (var8)
{
var19 = Math.max(1, var19 / 2);
}
this.maximumCost = var19 + var2;
if (var2 <= 0)
{
var5 = null;
}
if (var4 == var2 && var4 > 0 && this.maximumCost >= 40)
{
this.maximumCost = 39;
}
if (this.maximumCost >= 40 && !this.thePlayer.capabilities.isCreativeMode)
{
var5 = null;
}
if (var5 != null)
{
var10 = var5.getRepairCost();
if (var6 != null && var10 < var6.getRepairCost())
{
var10 = var6.getRepairCost();
}
if (var5.hasDisplayName())
{
var10 -= 9;
}
if (var10 < 0)
{
var10 = 0;
}
var10 += 2;
var5.setRepairCost(var10);
EnchantmentHelper.setEnchantments(var7, var5);
}
this.outputSlot.setInventorySlotContents(0, var5);
this.detectAndSendChanges();
}
}
It's a hairy piece of code, at least when deobfuscated. If anybody can spot the problem before I do let me know
Gaaaah man to code through obfuscated code like that, you're a genius!
I'm super-good at code analysis but NOT at deobfuscation or "generic variable names" indirection. I, and I'm quite sure others, could probably help, but having your "best guess" for the "real-or-as-close-as-you-can-make-it" variable names would make a big difference.
Maybe 1st step would be take that piece of code and suffix-rename all variables you can to something more indicative.
i.e. Even if I know from the beginning that I saw that "var1" is used for storing the item stack currently in the first anvil item slot, I have to mentally "remember" that little fact every time I see var1 later on. For a single variable, not so bad. For tens of variables, the "mental overhead" just reduces the overall ability to "see through the healthy forest to diagnose the diseased tree".
So, step #1 to solve this would be to search-n-replace all instances of as many variables as you can with what you think the variable is used for :
"var1" -> "var1_AnvilSlotAItemStack"
Probably, the bug will show itself much more easily after that extra deobfuscation step.
- - - - - - - - - - - -
Second step would be major code cleanup. The above piece of code would never "pass" any code walkthrough / code review, from any of the places where I worked as a programer analyst. YOu're a genius if you can easily parse such code directly without any major "code reformatting".
Also, if terms like:
this.inputSlots.getStackInSlot(1)
work out to be exactly the same as
inputSlots.getStackInSlot(1)
then either removing the useless "this." , or making sure it is used very consistently, not just only in a few places, will also help make the code "lighter" / a bit easier to analyse.
Sometimes, every bit helps.
- - - - - - - - - - - -
Unless a function needs optimization (code size or limits of total number of variable names maybe, depend on language, but mainly in mosts cases speed of execution only, which is important only for frequenrlyt accessed functions), I also like to use extra variables to make things STUPID SIMPLE to read, rewriting what I need so that the code becomes all broken down into "easily digestible snippets". That way I don't even need "redundant" comments.
I also like to use parentheses explicitly and separate "logic ( parentheses) from "grouping" parentheses.
Also, I like to split realy big functions into several smaller blocks, with the relevant variables located right before the blocks, so that I don't have mega-multiplage to constantly scroll up and drown through, and see in each block only the variables i really need. when a block is big, I even make a totally separate function to encapsulate it.
Example:
Replacing:
ItemStack var1 = this.inputSlots.getStackInSlot(0);
(...)
//if (var1 == null)
if (var1 == null || var1.getItem()==Item.enchantedBook || (inputSlots.getStackInSlot(1)!=null && !inputSlots.getStackInSlot(1).isRepairItemOrEnchantedBook()))//mod
{
this.outputSlot.setInventorySlotContents(0, (ItemStack)null);
this.maximumCost = 0;
}
else
{
super long block of code
}
By:
ItemStack var1_AnvilSlotA = this.inputSlots.getStackInSlot(0);
ItemStack var1_AnvilSlotB = this.inputSlots.getStackInSlot(1);
(...)
Boolean b_anvilslotA_isempty = ( var1_AnvilSlotA == null )
Boolean b_anvilSlotA_isabook = ( var1_AnvilSlotA.getItem() == Item.enchantedBook )
Boolean b_anvilslotB_isinvalid =
(
var1_AnvilSlotB !=null ) && ( ! var1_AnvilSlotB.isRepairItemOrEnchantedBook()
)
if ( b_anvilSlotA_isempty || b_anvilSlotA_isabook || b_anvilSlotB_isinvalid )
(
this.outputSlot.setInventorySlotContents( 0, ItemStack)null );
this.maximumCost = 0;
)
else
(
updateRepairOutput_valid ()
)
etc.
Frankly that was the easy part.
This "divide and conquer" seems to take longer and feels like a step-by-step approach, going the long scenic route even, but ultimately it is the best way I think to handle many well hidden bugs and makes code much easier to modify and maintain in the long run.
Think of it like this: Take an essay or novel. It has chapters. In the chapters, there are sections. In the sections, there are paragraphs, to group sentences from the same idea. In the sentences, there is punctuation. Now make each chapter one single long BIG BLOCK WALL of text, only 1 single huge paragraph, and replace all punctionation only with commas. It surely will become half unreadable. Then ask someone to analyse the text.
95% of the "hairyness" of that piece of code commes not from it's internal complexity, but it seems mostly from the way it is structured. Maybe "cleaning it up" will make the bug stand out all by itself ?
Sorry I couldn't help more.