Jump to content

Grouped item blocks


Master_Aricitic

Recommended Posts

As has been discovered by anyone using too much TNT, or people playing EquivalentExchange (until recently), lots of dropped items means lots of lag. One simple way to reduce this, as is being used in EquivalentExchange, is to force all drops to be placed into a single 'item' object and simply have that 'drop' instead. This is nice and all... for EquivalentExchange, but regular Minecraft still has item lag issues. It would be wonderful if Minecraft Forge, a well used API for modders, gave this or a similar functionality to basic Minecraft. The simplest thing to do is ask for the code for the item orb, but those will still disappear if not picked up or if the game crashes or is the world is closed... if they could form into a block (similar to a chest, but you'd just walk over it to get the items-or mine it perhaps?) if not picked up within the timeout to despawn drops then lag would be reduced and drops would not be lost.

 

Now, I know that a mod to do something similar-items that could be placed as blocks would become their blocks after a specified time-was basically outright rejected by the community, and this is understandable when you think about how people use the despawn functionality (they basically blow up a large region and let the drops despawn as they place new things over them-but the functionality of being able to just drop a stack of dirt down a hole and have it fill up (rather than either placing each block individually OR building a complex machine from a mod to do it for you) is invalulable for those who need 'flat surfaces'... Regardless, it should be possible to add some function similar to a 'chest' to all blocks where drops, that would otherwise be despawned, are under them when they are placed would just be added to an inventory of the block. This concept would actually allow for modders to code in 'finds' from digging or mining without coding it into the specific block (as they could simply specify randomly that a block's inventory contains something).

 

Anyway, these two concepts are, if not necessary, a valuable contribution to the functionality of Minecraft. The first one would help with lag in all cases (especially when the drops are in locations nowhere near the player-i.e. something is killed by something else and it drops loot or water runs over anything that water turns into items like rails, torches, etc) and the second one would allow people to throw items into pits to fill the pits rather than placing each block individually (which, unless you are filling it with gravel or sand, is a serious pain...)

 

Thank you for your time.

Link to comment
Share on other sites

The first concept to reduce lag is a possible one, and it has been done many times. But, it also really isn't useful to anyone except those on really low end PCs who like to blow shit up a lot. Which is why I don't think it really is something worth while. EE is able to create it's item dropped effectively, because it has one item that destroys everything in one go. We could do it for explosions, but as I said, only useful for people who like to blow shit up. And the lag is just a hazard of doing that. {If you really have the urge to blow shit up, get one of the many bukkit plugins that do this}

 

As for the second idea, ... no...

This is a major change in MC functionality/gameplay. If you're to lazy to fill in big hole by hand, make a machine, if you're to lazy to do that, .. the hell you playing MC for? :P

As for the inventory idea... that would require us to give all blocks a tile entity to hold that data and that would be ... bad...

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Link to comment
Share on other sites

I think it would be useful to everyone. Ever had a creeper take out your chest room, or dumped a clogged buildcraft pipe.. It can cause lag even on a high end computer. Also for a server it can cause even more lag sending the packet data to tell the player that the items are there.

Link to comment
Share on other sites

The first concept to reduce lag is a possible one, and it has been done many times. But, it also really isn't useful to anyone except those on really low end PCs who like to blow shit up a lot.

Or people who play mods that modify mob drops, like Tale of Kingdoms which adds coin drops (which can only be picked up if you have an inventory slot available) and can add more than 500 items with, say, ten kills... especially if you have loot enchanted weapons.

 

EE is able to create it's item dropped effectively, because it has one item that destroys everything in one go.

My suggestion was to make an item block that basically gets local items floating in the world around it and absorbs them, similar to Pfaeff's "The Allocator" block. If the block itself didn't have physics-in the sense of 'walls' to stop you from walking into it-similar to water or lava, or air, then you could just pick up the items (that will fit into your inventory) as you pass through it.

 

As for the inventory idea... that would require us to give all blocks a tile entity to hold that data and that would be ... bad...

Or... you'd just have to add an array (or arraylist, or linkedlist, or queue, or any of Java's collections) to keep a list of pointers to the items that it owns, to the superclass for all blocks, this way all block classes would inherent the ability automatically... Object oriented programming + Java FTW... I was in no way suggesting making them 'like chests' in the sense that you can right click them and 'view' said inventory. Just that it wouldn't despawn the drops.

 

The reason I'm suggesting this concept is because it preserves the conservation of energy/matter... a concept that very few games use. It annoys me that if I don't get to a drop quickly enough, or don't clear my inventory quickly enough, it fades into oblivion... (I won't go into the other breaks of conservation of matter) especially if I am nowhere near the drop, or not aware of the drop when it happens (like an item that requires a block, but is spawned where there isn't a block... i.e. Thaumcraft's crystals, but I've already mentioned this to that mod creator and see NO reason for you to have to give it attention).

 

Putting a collection within the superclass of all block classes (Block.class/.java I believe it's called) wouldn't add that much overhead to the game in terms of memory usage because it is simply storing a pointer to those items, and even removing them from the renderer's view which removes overhead (for the renderer anyway...). An idea that could even further help with reducing rendering overhead is to make any chunks that load outside of a given chunk radius load as height maps instead of chunks (i.e. a flat plain for the ground with things called 'Impostors' <assuming I remember correctly> to represent the objects above that 'ground'. 'Impostors' are basically two dimensional representations of models displayed on 'quads' (a flat 2D object in a 3D environment) that always face the player.) This would reduce the overhead of showing each and every block past that radius by simply showing a flat representation of them, which would even allow for things above ground, i.e. trees, mountains, etc. But I have no expectation of you doing that, it's something Mojang should do themselves, and frankly, I should mention there.

 

As for your question about why I play Minecraft in the first place... It certainly isn't to fill in gaps and holes in the map. It's to build and explore the world... When I want to build something on a flat surface and find a massive hole in the ground, and am not on creative, I don't want to risk my life building a single block layer bridge over it (which is stupid anyway as a single creeper would make the hole visible again), I would rather take the dirt I got from leveling the other side and just drop it to fill in the hole.

Minecraft is not necessarily created for mundane repetitive tasks, like moving a pile of sand from location a, to location b, with a pair of tweezers. And, really, I don't see why I should waste the resources for a shovel or bulldozer when I should simply be able to push the pile of sand with my hands and have the majority of it fall into place. (to use metaphoric imagery to show my point.

And, quite frankly, I've frequently quit playing Minecraft BECAUSE of the necessity to move a pile of sand with tweezers. I understand the lack of gravity for most blocks, but asking everyone to place block, jump, place block, jump, more than 500 times to fill in a hole is stupid, unrewarding, and boring. If I wanted that I'd quit college and get a grunt landscaping job... (this, of course, does NOT include things like building and decorating structures, but simply filling in holes. Building and decorating is/can be fun, filling in holes with anything other than sand/gravel is not.)

Link to comment
Share on other sites

Or people who play mods that modify mob drops, like Tale of Kingdoms which adds coin drops (which can only be picked up if you have an inventory slot available) and can add more than 500 items with, say, ten kills... especially if you have loot enchanted weapons.
My main point is this is a gameplay change and that is not what Forge is for. Everyone knows that if you do something stupid like spawn hundreds of items, you could lag your game. There are many ways around it and I don't think this is something that should be done in forge.

 

Or... you'd just have to add an array (or arraylist, or linkedlist, or queue, or any of Java's collections) to keep a list of pointers to the items that it owns, to the superclass for all blocks, this way all block classes would inherent the ability automatically... Object oriented programming + Java FTW... I was in no way suggesting making them 'like chests' in the sense that you can right click them and 'view' said inventory. Just that it wouldn't despawn the drops.

We could but again, this is a lot of data to be holding, and changes the fundamental way MC works when it comes to item drops. It would completely bork anyone who uses MC's item drop mechanic for anything in game.

 

The reason I'm suggesting this concept is because it preserves the conservation of energy/matter... a concept that very few games use. It annoys me that if I don't get to a drop quickly enough, or don't clear my inventory quickly enough, it fades into oblivion... (I won't go into the other breaks of conservation of matter) especially if I am nowhere near the drop, or not aware of the drop when it happens
Once again, this is just a fundamental way MC works, if you want realistic conservation of mater, find it in another game. Not trying to be mean, but this honestly isn't a popular demand thing. Most people don't care, or like the system that is in place in MC.

My best bet would be for you to find a modder who is willing to do what you want, on top of forge. It is not a hard thing to do, just something I don't see fitting in with Forge.

 

{snip} .... But I have no expectation of you doing that, it's something Mojang should do themselves, and frankly, I should mention there.
Once again, fundimental changes to the gameplay of minecraft, NOT something that Forge will do.

 

As for your question about why I play Minecraft in the first place... It certainly isn't to fill in gaps and holes in the map. It's to build and explore the world... When I want to build something on a flat surface and find a massive hole in the ground, and am not on creative, I don't want to risk my life building a single block layer bridge over it (which is stupid anyway as a single creeper would make the hole visible again), I would rather take the dirt I got from leveling the other side and just drop it to fill in the hole.

Minecraft is not necessarily created for mundane repetitive tasks, like moving a pile of sand from location a, to location b, with a pair of tweezers. And, really, I don't see why I should waste the resources for a shovel or bulldozer when I should simply be able to push the pile of sand with my hands and have the majority of it fall into place. ...

And, quite frankly, I've frequently quit playing Minecraft BECAUSE of the necessity to move a pile of sand with tweezers. I understand the lack of gravity for most blocks, but asking everyone to place block, jump, place block, jump, more than 500 times to fill in a hole is stupid, unrewarding, and boring.

Again, fundamental change to MC gameplay, not going to happen in Forge.

I agree that tasks like that can become boring, tedious, etc.. That's why things like BC's filler exists. Or any of the other plethora of ways of doing it in other mods exist.

If you want to really think of it, you're not using tweezers, you're using a shovel, a big one, one that can hold a cubic meter of mater.

Anyways, I agree some people would find your idea nice, I wouldn't play it, I don't think the bulk of the community would. Your best bet for something like this is to go find a modder who will do it for you. Not try and get it into Forge.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Link to comment
Share on other sites

I understand your reluctance to implement this. You are right that it would dramatically change Minecraft's game play and that doing so isn't want Forge is about. The reason I ask for this here is because Forge is an API for mods, and things implemented into Forge are therefore implemented into those mods (among others). What I am requesting, if done, NEEDS to be done globally, not locally. A mod that changes things locally-to implement one or both of these ideas-is useless as it only affects those mods directly derived from it (or the blocks/items created within it).

So, as a final question, I know you allow for modification of your code (or at least you did...) would it be ok if I made this modification myself?

Thank you for your time,

Master Aricitic

Link to comment
Share on other sites

Final answer: This is not going into forge.

Even if you write the code yourself and submit it, I will not approve it.

It is dramatic changes that are not fit for forge.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.