Jump to content

Spawning Item in world


ItzPray

Recommended Posts

I am trying to spawn in an item when a block is interacted with but I can't find any documentation on how to do this. If someone can please show me an example of how to do this or send me in the right area to the documentation it will be greatly appreciated .

Link to comment
Share on other sites

There are many different places in the minecraft code that does this (some more complicated than others).

Perhaps the simplest is Containers.dropItemStack() which is used to drop items on the ground when you break a chest or furnace, etc.

Another would be Entity.spawnAtLocation() which spawns an Item(Stack) at the entity's location.

NOTE: You need do this on the logical server.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

10 minutes ago, warjort said:

There are many different places in the minecraft code that does this (some more complicated than others).

Perhaps the simplest is Containers.dropItemStack() which is used to drop items on the ground when you break a chest or furnace, etc.

Another would be Entity.spawnAtLocation() which spawns an Item(Stack) at the entity's location.

NOTE: You need do this on the logical server.

Thanks for the reply but I am having the biggest issue where I just need an example of how to actually make an ItemStack()

and then can you also provide an example of how Entity.spawnAtLocation() is used?

 

Link to comment
Share on other sites

I think you are new to java as well. 🙂

 

* Your code only runs the client because calling super.use() returns PASS which means you don't want to do anything on the server.

* Entity.spawnAtLocation is not a static method, your code won't even compile - you need an instance of an entity, e.g. player.spawnAtLocation()

 

Look at CraftingTableBlock.use() - replace displaying the gui with your code

Minecraft's interactions methods use an idiom where they are called twice, first on the client and then if you return SUCCESS it calls the same method on the server.

 

Here's a link to the wiki: https://forge.gemwire.uk/wiki/Main_Page you should at least read about "Understanding sides"

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

9 minutes ago, warjort said:

I think you are new to java as well. 🙂

 

* Your code only runs the client because calling super.use() returns PASS which means you don't want to do anything on the server.

* Entity.spawnAtLocation is not a static method, your code won't even compile - you need an instance of an entity, e.g. player.spawnAtLocation()

 

Look at CraftingTableBlock.use() - replace displaying the gui with your code

Minecraft's interactions methods use an idiom where they are called twice, first on the client and then if you return SUCCESS it calls the same method on the server.

 

Here's a link to the wiki: https://forge.gemwire.uk/wiki/Main_Page you should at least read about "Understanding sides"

Hi, thanks for your response again.

I am new to java and I was wondering if it would just be easier to use the /give command to give the player an item. I am going to be using this for modded items from another mod so I think this would be easier but I dont know how to call the giveItem function to make that happen. If you could help me out again that would be very nice of you.

Link to comment
Share on other sites

The /give command is handled by you guessed it the GiveCommand class. 🙂 

You are still going to need the Block.use() method, except instead of dropping the item on the ground, you have to put in the player's inventory.

Fortunately for you Forge has you covered. You don't need to copy the code from the GiveCommand, you can use

ItemHandlerHelper.giveItemToPlayer(player, itemStack, 0);

 

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

8 minutes ago, warjort said:

The /give command is handled by you guessed it the GiveCommand class. 🙂 

You are still going to need the Block.use() method, except instead of dropping the item on the ground, you have to put in the player's inventory.

Fortunately for you Forge has you covered. You don't need to copy the code from the GiveCommand, you can use

ItemHandlerHelper.giveItemToPlayer(player, itemStack, 0);

 

Thank you for the reply, can you explain how can i make a ItemStack with the modded item ID from another mod?

Link to comment
Share on other sites

11 minutes ago, ItzPray said:

Thank you for the reply, can you explain how can i make a ItemStack with the modded item ID from another mod?

Also when giving the ItemStack to the player it always gives 2 times the amount that is in the ItemStack. Any idea why?

Edited by ItzPray
Link to comment
Share on other sites

You are going to need spend time looking at that wiki.

You will just annoy people if you keep asking questions about stuff that is answered there. e.g. your modded item question is answered in the Registration section under @ObjectHolder

 

Since you don't show your code, I have no idea why it gives you 2 items.

I can tell you that a debugger will help you understand what is happening.

 

By the way, earlier you posted a screen shot of your code. Don't do this.

In some forums posting text as images will get your thread locked or deleted, not here though, people will just complain. 🙂 

You should always post code using <> tool so we can clearly see it and quote it.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

6 minutes ago, warjort said:

You are going to need spend time looking at that wiki.

You will just annoy people if you keep asking questions about stuff that is answered there. e.g. your modded item question is answered in the Registration section under @ObjectHolder

 

Since you don't show your code, I have no idea why it gives you 2 items.

I can tell you that a debugger will help you understand what is happening.

 

By the way, earlier you posted a screen shot of your code. Don't do this.

In some forums posting text as images will get your thread locked or deleted, not here though, people will just complain. 🙂 

You should always post code using <> tool so we can clearly see it and quote it.

Yah i am sorry for asking so many questions. If you dont mind can you send the wiki link so I can look at it? Nvm I didnt see the link above sorry

Edited by ItzPray
Link to comment
Share on other sites

Quote

Here's a link to the wiki: https://forge.gemwire.uk/wiki/Main_Page you should at least read about "Understanding sides"

I deduce you didn't read what I suggested. 🙂 

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

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.