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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • So I saw that mixin is shipped as a library with forge, but is it available for 1.7.10 ?  
    • So I've read the EULA, and lets be straight...     If I split my modpack(of my mods, yeah I'm nuts) into several(many) individual mods(like just one boss) with minor additions(plus not working together), then have a complete/modpack version on patreon/onlyfans having each addon work together... Would people buy my idea?
    • German A1 – C1, TestDAF, Goethe B1, B2, C1, C2, valid GOETHE certificate German A1 – C1, TestDAF, Goethe B1, B2, C1, C2, valid GOETHE certificate(+27(838-80-8170
    • Done, it still crashed. New log https://paste.ee/p/kYv6e
    • I am migrating a mod from 1.16.5 to 1.20.2 The version for 1.16.5 can be found here https://github.com/beothorn/automataCraft For the block called automata_start, it uses TileEntities and has blockstates, model/block and textures on json files. This is currently working fine on 1.16.5 https://github.com/beothorn/automataCraft/tree/master/src/main/resources/assets/automata For 1.20.2 I migrated the logic from TileEntities to BlockEntity. The mod is working fine. All blocks and Items are working with the correct textures except for the textures for each state of the automata_start block. No changes where made to the json files. This is the branch I am working on (there were some refactorings, but all is basically the same): https://github.com/beothorn/automataCraft/tree/1_20/src/main/resources/assets/automata The only difference I can think that may be related is that i had to implement createBlockStateDefinition on the BaseEntityBlock: https://github.com/beothorn/automataCraft/blob/1_20/src/main/java/br/com/isageek/automata/automata/AutomataStartBlock.java#L43 This is driving me crazy. I know the jsons are being loaded as I put a breakpoint at `net.minecraft.client.resources.model.ModelBakery#loadModel` and I can see BlockModelDefinition.fromJsonElement being called with automata_start. I also printed the state from the arguments of the tick function call and they look correct (https://github.com/beothorn/automataCraft/blob/1_20/src/main/java/br/com/isageek/automata/automata/Ticker.java#L32 ): blockState Block{automata:automata_start}[state=loadreplaceables] In game, all I see is the no textures. I think it is weird it is not the "missing texture" texture so I think it may be related to the material, but I had no success tweaking it (https://github.com/beothorn/automataCraft/blob/1_20/src/main/java/br/com/isageek/automata/automata/AutomataStartBlock.java#L37).   public static final Property<AutomataStartState> state = EnumProperty.create("state", AutomataStartState.class); private final AtomicReference<RegistryObject<BlockEntityType<?>>> blockEntityType; private final Map<String, RegistryObject<Block>> registeredBlocks; public AutomataStartBlock( final AtomicReference<RegistryObject<BlockEntityType<?>>> blockEntityType, final Map<String, RegistryObject<Block>> registeredBlocks ) { super(BlockBehaviour.Properties.of().mapColor(MapColor.STONE).strength(1.5F, 6.0F)); this.blockEntityType = blockEntityType; this.registeredBlocks = registeredBlocks; this.registerDefaultState(this.getStateDefinition().any().setValue(state, AutomataStartState.LOAD_REPLACEABLES)); } @Override protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> stateBuilder) { stateBuilder.add(state); }     So my cry for help is, anyone has any ideas? Is there a way to easily debug this, for example somewhere where I can list the textures for a given state, or make sure this is loaded?   Thanks in advance for the hints
  • Topics

×
×
  • Create New...

Important Information

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