Page 1 of 1

Vanilla Minecraft Potion Logic

Posted: Sun Feb 10, 2013 4:19 am
by JakeZKAM
So after I looked into the newest hardcore addition to BTW (Which I am absolutely loving. I love building roads to all my buildings anyways and this makes it worthwhile) I at first cried at the loss of speed potions. I understand the reason behind it but I was still in denial. I absolutely love the Idea of mixing potions, fusing together magical items, general magic and alchemy the whole shtick, but after thinking about it I became glad that speed potions had been ripped. I pretty much only ever used speed potions as all the other kinds were usually useless or just not fun to try and make. Then it got me thinking about the entire system itself, and eventually started raging about the lack of Design to the system itself, or the logic behind it :/

For example the process of making potions is just so... boring. Kill a blaze, get some netherwart, boil it, add ingredient X and BAM portable magic effect. Um what? Too easy, too boring, and just not intuitive or requiring thinking. only 7 potion types and the poison one is completely useless as a drinkable potion, the materials are far too easy to obtain, and it never feels like I've truly accomplished something when I brew potions, I just feel like I used a cheat code -.-.

And as a side note the whole Redstone Extending Duration, Glowstone Enhancing it, and Gunpowder making it throwable drives me fucking nuts. Redstone is a conducter it shouldn't make a potion last longer, Glowstone gives off fucking light, that's it >.<, Gunpowder added to a potion does not suddenly allow you to throw it.

Sorry about the rant but the potions system is just pissing me off at such wasted potential and I'm very thankful for all of the features in BTW to entertain me instead :)

Re: Vanilla Minecraft Potion Logic

Posted: Sun Feb 10, 2013 4:30 am
by Graphite
Gunpowder is explosive. I always thought the idea behind adding gunpowder is that you make potions that explode on impact, thereby making it interesting for the game to allow said potions to be thrown (as opposed to regular potions, where players would just go "wtf? why can I even throw that!?").

Ditto for redstone. Redstone contains some power as well (as noticeable from the redstone torch, which can power other redstone indefinitely). Apparently mixing that redstone into the potion through means undescribed causes some of that power to transfer to the potion, resulting in a longer duration.

Really, those ingredients don't seem that ridiculous to me.

Re: Vanilla Minecraft Potion Logic

Posted: Sun Feb 10, 2013 2:09 pm
by EpicAaron
I must agree that the brewing system as it is now is quite borring, and would have much rather been able to throw the ingredients into a cauldron (which could potentially have allowed for cool automation). I think that was the original idea for vanilla cauldrons before they were changed into brewing stands.

Re: Vanilla Minecraft Potion Logic

Posted: Mon Feb 11, 2013 12:31 pm
by AngelWithDirtyHands
Just curious (as I have no idea on how to mod) but would it be possible to have an add-on to BTW which rips out the Vanilla brewing system and replaces it with something more... sensible? I remember from previous posts that FC sees potion brewing as low on his list of priorities (fair enough, considering the awesome content we've seen lately). Wondering if the possibility held... you never know, I might even try to pick up some Java if I have time around my course...

Re: Vanilla Minecraft Potion Logic

Posted: Mon Feb 11, 2013 12:33 pm
by magikeh
EpicAaron wrote:I must agree that the brewing system as it is now is quite borring, and would have much rather been able to throw the ingredients into a cauldron (which could potentially have allowed for cool automation). I think that was the original idea for vanilla cauldrons before they was changed into brewing stands.
+1

I do enjoy making potions, it is fun to run around on a server and while invisible shoot rotten arrows at people and throw poison potions at em, but really i do agree making potions is a bore. I really do feel that Jeb had something good going with the entire, use a cauldron add a few things, let it boil then scoop it out with the bottles, if your brewing sucked you were stuck with an unusable potion (drink it to get the bottle back?? ;) ) And on a side note, iv'e always thought that glowstone increased the potency of a potion because it absorbed the excess water in it, thus increasing the concentration of ingredients... sorta. And to finish off, i think the original (good) potions idea was scrapped, just because i guess it was easier for Jeb to make a GUI then an interactive gameplay mechanism. >.>


Edit: Just a thought but it would be neat to have potions that didnt have names, and rather you had to tell them apart by the colour. (The colour defines the main attribute of the potion, and there can be a few side effects.)

Re: Vanilla Minecraft Potion Logic

Posted: Mon Feb 11, 2013 3:06 pm
by EtherealWrath
As far as I'm aware, Mojang went for the brewing stand option instead of the cauldr *ahm*cistern- as the latter would need a block/liquid ID for each ingredient combination, as well as the item ID's used by the former.
-It may work if the cistern was a tile entity, and contained a acted as a small chest (without a GUI)

The stand itself kinda reminds me of chemistry class, though I'd like to see potion effects become stronger with more active ingredient added (say speed I [15sec] with 1 sugar, speed II [45sec] for 2 sugars ect) instead of random reagents like redstone/glowstone.

I think it also represents the more precise measurements needed when mixing such potions, as opposed to whack it in and hope it works. (though it'll be a nice mechanic for making the fermented spider eyes and similar base ingredients)

Its just one of those systems that's kinda good- but could use a lot more love to really flesh it out into something worthwhile.
(Right now it is somewhat boring and out of balance, somehow ingesting nether fungus, blaze power and slime makes you impervious to fire! without feeling any side effects)

Re: Vanilla Minecraft Potion Logic

Posted: Mon Feb 11, 2013 4:57 pm
by DNoved1
EtherealWrath wrote:As far as I'm aware, Mojang went for the brewing stand option instead of the cauldr *ahm*cistern- as the latter would need a block/liquid ID for each ingredient combination, as well as the item ID's used by the former.
-It may work if the cistern was a tile entity, and contained a acted as a small chest (without a GUI)
The cistern actually did work like that in 1.9 pre 2, with only a single Block Id (it used a tile entity though). According to this tweet and the Minecraft Wiki, the cistern brewing system was apparently scrapped because it was too complex/tedious.

It might be possible (I'd have to look at the 1.9 pre 2 code) to actually convert cisterns back into their old counterparts, and allow brewing through them.

Re: Vanilla Minecraft Potion Logic

Posted: Mon Feb 11, 2013 5:03 pm
by FlowerChild
Using a tile entity on something as uncommon as a vanilla cauldron is really not a big deal. They're isolated utility blocks, which to my mind is specifically what tile ents *should* be used for.

Where it becomes an issue is in blocks that you expect to be using in huge numbers like Gear Boxes, or Axles, or Siding. This is one of the points where my block design philosophy and that of other "tech mods" radically differs as to my knowledge, most of those kind of mods liberally use tile entities for precisely those kinds of blocks.

And of course, forget about using tile ents in anything to do with terrain and world gen. That's just asking for trouble. If you were to assign tile ents to dirt, stone, or wood for example, I'm fairly certain that performance would immediately tank.

Re: Vanilla Minecraft Potion Logic

Posted: Mon Feb 11, 2013 7:15 pm
by Six
DNoved1 wrote:
EtherealWrath wrote:As far as I'm aware, Mojang went for the brewing stand option instead of the cauldr *ahm*cistern- as the latter would need a block/liquid ID for each ingredient combination, as well as the item ID's used by the former.
-It may work if the cistern was a tile entity, and contained a acted as a small chest (without a GUI)
The cistern actually did work like that in 1.9 pre 2, with only a single Block Id (it used a tile entity though). According to this tweet and the Minecraft Wiki, the cistern brewing system was apparently scrapped because it was too complex/tedious.

It might be possible (I'd have to look at the 1.9 pre 2 code) to actually convert cisterns back into their old counterparts, and allow brewing through them.
This was how they looked back then, though were never obtainable in game:
Spoiler
Show
Image
It would be quite fun to play with the idea of potions only being 'described' by their colour and having no tooltip. You could map the effects across a HSL colour space and just have potion ingredients 'pull' the colour in different directions in that space. Then have the potion effect tied to the Hue and stronger effects with higher Saturation, or something like that. Maybe with some overlap is areas of the space, so that you could get potions with multiple effects.

Alternatively, you could have more like a Morrowind system (only less broken). Ingredients having multiple 'effects' they add to a brew, with some effects able to cancel out others. Say for example magma cream might add one level of fire resistance, but also one level of slowness. Sugar could add one level of speed, which would cancel out the slowness, but might itself add two levels of hunger. etc.

I dunno, they didn't want it to be tedious, but I feel there are far more interesting ways to do it than what they went for in the end.

Re: Vanilla Minecraft Potion Logic

Posted: Mon Feb 11, 2013 8:04 pm
by DNoved1
Six wrote:Alternatively, you could have more like a Morrowind system (only less broken). Ingredients having multiple 'effects' they add to a brew, with some effects able to cancel out others. Say for example magma cream might add one level of fire resistance, but also one level of slowness. Sugar could add one level of speed, which would cancel out the slowness, but might itself add two levels of hunger. etc.
The original system actually worked somewhat like that. Adding ingredients had a seemingly random(though it truly wasn't) effect on the current brew, including adding water (to dilute it). You could get really good potions with strong negatives as well, such as Instant Health III, Hunger II, Poison II. It truly required a good bit of experimentation to get good brews, and thus encouraged mass gathering of ingredients and perhaps even recording of "recipes" in books.

If anyone is curious and wants to try out the old system I would recommend some sort of client rollback tool such as MCNostalgia and this mod, which enables the cauldron. Try testing it out in creative, it's pretty neat.

Re: Vanilla Minecraft Potion Logic

Posted: Sat Feb 16, 2013 3:13 pm
by DNoved1
DNoved1 wrote:It might be possible (I'd have to look at the 1.9 pre 2 code) to actually convert cisterns back into their old counterparts, and allow brewing through them.
Well, after a few days of looking over the code, I have managed to recreate 1.9 pre 2 brewing in 1.4.7. Unfortunately, I can't replace the vanilla cistern with my own because that would require redistributing a class FC edits. Instead I simply went with creating an entirely new block which just so happens to look suspiciously like the cistern.

Download -Removed

Pics:
Spoiler
Show
Image
Spoiler
Show
Image
Spoiler
Show
Image
Things to note/issues:
-Doesn't replace the vanilla cistern
-Seems to work just fine with BTW 4.56
-Uses block Id 179
-The color of the brew in the cauldron is slightly off
-Is quite possibly completely OP with regards to BTW balance
-You cannot currently throw the potions
-The cauldron does not render correctly as an item
-Only the original 7 ingredients have an effect(Sugar, Blaze Powder, Magma Cream, Spider Eye, Fermented Spider Eye, Ghast Tear, and Nether Wart)
-You can dilute the brew by adding water as long as the cauldron isn't full
-Will not wash your clothes for you(unlike the cistern)

P.S. Drinking an Instant Damage III potion instantly kills you, so I wouldn't recommend doing that

Re: Vanilla Minecraft Potion Logic

Posted: Sat Feb 16, 2013 4:25 pm
by PatriotBob
Very nice.

See this is a better system, and what we should have had in place of brewing stands.

I don't play with any mods on my server, but if you keep this up I just might change that. :)

Re: Vanilla Minecraft Potion Logic

Posted: Sat Feb 16, 2013 9:09 pm
by magikeh
DNoved1 wrote: Well, after a few days of looking over the code, I have managed to recreate 1.9 pre 2 brewing in 1.4.7. Unfortunately, I can't replace the vanilla cistern with my own because that would require redistributing a class FC edits. Instead I simply went with creating an entirely new block which just so happens to look suspiciously like the cistern.
... ... :D THANK YOU! This is excellent! one of the most awesome things that i have seen in a loong time, just the ability to create potions without a gui, and no real direction nor sense of what is going on is the most fun thing ever! This is just super sweet. One question tho, are you thinking of turning this into an actual addon? I could see the cauldrons needing some steel to be created, anyways i am super excited and i really do hope that you pursue this as an actual addon/mod. Also if you are able to make this smp i will suggest the shit out of it! Thank you so much again for this ^_^/

/me runs off to his BTW world

Re: Vanilla Minecraft Potion Logic

Posted: Sat Feb 16, 2013 9:22 pm
by DNoved1
Well, I am looking at expanding/fixing some of its functionality. For example, potions created by the cistern aren't actually potions, so I'll have to add a buoyancy and hopper value for them. I've got the buoyancy thing done, but am still looking at how I can add a hopper value. I also need to fix the item rendering and colors of the brew.

One other thing I'm looking at it automation. I've got code to automatically add ingredients to the brew when they are on top of the cistern as well as a way to automatically refill it. My current issue lies in how to get the potion into a bottle automatically - I haven't thought of a reasonable way to do that yet. Currently, my best idea would be to drop empty bottles on the cauldron to fill them up, but when you actually think about it that makes very little sense, unless your bottles' corks are animated and can come on and off the bottle at will.

I also need to take a serious look at re-balancing the effects you can get - as you can see from one of the pictures I posted, it is possible to get an Instant Damage III potion which kills you instantly, no matter what, which is obviously really overpowered with regards to pvp. Also, I could be wrong, but aren't mods automatically SMP supported since the 1.3 server-client merge?

Re: Vanilla Minecraft Potion Logic

Posted: Sat Feb 16, 2013 9:29 pm
by magikeh
DNoved1 wrote: Also, I could be wrong, but aren't mods automatically SMP supported since the 1.3 server-client merge?
Heh, no i just tried it, went online, crafted it. tried to take it out of the crafting grid and i wasnt allowed.. I am assuming its beacuse
-The server doesnt have the mod installed?
-You're using a block that is not recgonized by the server

Re: Vanilla Minecraft Potion Logic

Posted: Sat Feb 16, 2013 9:32 pm
by DNoved1
Most likely both, as it adds a block, an item, and runs server side code. However, it should run if the server has it installed - I think.

Re: Vanilla Minecraft Potion Logic

Posted: Sat Feb 16, 2013 10:03 pm
by magikeh
Just downloaded the server jar and started to mess around with it

Here are the results:

(Using a working client, these changes are to the server.jar)
Installed just your mod - Able to craft item, not able to take item from bench
Installed Modloader and your mod - Crash
Installed Modloader - Crash

Also i checked out how BTW is to be intalled on servers and it does not require the Modloader nor deleting the Meta-Inf folders... so there is something that needs to be added seperatly to the server to allow for your new block i am assuming. (Something that the current install does not have)

Re: Vanilla Minecraft Potion Logic

Posted: Tue Feb 19, 2013 12:55 am
by nmarshall23
DNoved1 wrote:
DNoved1 wrote:It might be possible (I'd have to look at the 1.9 pre 2 code) to actually convert cisterns back into their old counterparts, and allow brewing through them.
Well, after a few days of looking over the code, I have managed to recreate 1.9 pre 2 brewing in 1.4.7. Unfortunately, I can't replace the vanilla cistern with my own because that would require redistributing a class FC edits. Instead I simply went with creating an entirely new block which just so happens to look suspiciously like the cistern.
Very cool, some notes.
You can replace FC's cistern by, setting the current one to null.
Find the cistern in the Array of Blocks, in the Block obj. set the cistern to null.
Then add your new block using the cistern's block id.

If you need help, I will dig up code and post it.

As far as using this on a server, you can't. Servers do not use Modloader. You should be able to use it when a world has been shared via lan.

My thoughts on automation, why not steal from FC, add a spigot then make bottles placeable..

And for the love of the unholy, mix up the ingredients BTW's adds lots of very interesting items.. like, Blasting Oil and Nitre.

Although, I could see spider eyes and nether-wort as a kind of potion base..

Re: Vanilla Minecraft Potion Logic

Posted: Tue Feb 19, 2013 1:28 am
by FlowerChild
nmarshall23 wrote: Very cool, some notes.
You can replace FC's cistern by, setting the current one to null.
Find the cistern in the Array of Blocks, in the Block obj. set the cistern to null.
Then add your new block using the cistern's block id.
That's an extremely unsafe method of doing it that may not work at all and/or crash unexpectedly.

Re: Vanilla Minecraft Potion Logic

Posted: Tue Feb 19, 2013 11:25 am
by DNoved1
Well, I just realized that FC doesn't actually edit the cistern block but rather the item, so it should be entirely possible to just override BlockCauldron.class. Complicated problem made super easy, as all I should have to do is rename the name of one of my classes and all references to it.