Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[SOLVED] [1.19] Item setting fire block not working right


 Share

Recommended Posts

Hi,

I am trying to make a my own version of a flint and steel but changed up a bit. It is supposed to spawn 4 fire blocks in a 2 by 2 area but it is only spawning the fire that I am looking at. Can you help me? Here is my code.

package item;

import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.block.BaseFireBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.gameevent.GameEvent;

public class FFSS extends Item {

	public FFSS(Properties p_41383_) {
		super(p_41383_);
	}
	
	@Override
	public InteractionResult useOn(UseOnContext context) {
		
		BlockPos pos1 = new BlockPos(context.getClickedPos().getX(), context.getClickedPos().getY() + 1, context.getClickedPos().getZ());
		BlockPos pos2 = new BlockPos(pos1.getX() + 1, pos1.getY(), pos1.getZ());
		BlockPos pos3 = new BlockPos(pos1.getX(), pos1.getY(), pos1.getZ() + 1);
		BlockPos pos4 = new BlockPos(pos1.getX() + 1, pos1.getY(), pos1.getZ() + 1);
		
		BlockState bs1 = BaseFireBlock.getState(context.getLevel(), pos1);
		BlockState bs2 = BaseFireBlock.getState(context.getLevel(), pos2);
		BlockState bs3 = BaseFireBlock.getState(context.getLevel(), pos3);
		BlockState bs4 = BaseFireBlock.getState(context.getLevel(), pos4);
		
		context.getLevel().setBlock(pos1, bs1, 1);
		context.getLevel().setBlock(pos2, bs2, 1);
		context.getLevel().setBlock(pos3, bs3, 1);
		context.getLevel().setBlock(pos4, bs4, 1);
		
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos1);
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos2);
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos3);
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos4);
	    return super.useOn(context);
	}
}

 

Edited by CoddingDirtMC
Link to comment
Share on other sites

Did you looked how the FlintAndSteelItem place the Fire?

15 hours ago, CoddingDirtMC said:

It didn't work. This was my return statement. 

Please post the full updated code not only a code snipe.

Please post the code you use to register your Item.

Link to comment
Share on other sites

Here is the full code:

package item;

import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.block.BaseFireBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.gameevent.GameEvent;

public class FFSS extends Item {

	public FFSS(Properties p_41383_) {
		super(p_41383_);
	}
	
	@Override
	public InteractionResult useOn(UseOnContext context) {
		
		BlockPos pos1 = new BlockPos(context.getClickedPos().getX(), context.getClickedPos().getY() + 1, context.getClickedPos().getZ());
		BlockPos pos2 = new BlockPos(pos1.getX() + 1, pos1.getY(), pos1.getZ());
		BlockPos pos3 = new BlockPos(pos1.getX(), pos1.getY(), pos1.getZ() + 1);
		BlockPos pos4 = new BlockPos(pos1.getX() + 1, pos1.getY(), pos1.getZ() + 1);
		
		BlockState bs1 = BaseFireBlock.getState(context.getLevel(), pos1);
		BlockState bs2 = BaseFireBlock.getState(context.getLevel(), pos2);
		BlockState bs3 = BaseFireBlock.getState(context.getLevel(), pos3);
		BlockState bs4 = BaseFireBlock.getState(context.getLevel(), pos4);
		
		context.getLevel().setBlock(pos1, bs1, 1);
		context.getLevel().setBlock(pos2, bs2, 1);
		context.getLevel().setBlock(pos3, bs3, 1);
		context.getLevel().setBlock(pos4, bs4, 1);
		
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos1);
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos2);
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos3);
		context.getLevel().gameEvent(context.getPlayer(), GameEvent.BLOCK_PLACE, pos4);
	    return InteractionResult.sidedSuccess(context.getLevel().isClientSide());
	}
}

And here is the register code:

package item;

import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import com.elliot.juststeel.*;
public class ItemInit {
	public static final DeferredRegister<Item> ITEMS = 
            DeferredRegister.create(ForgeRegistries.ITEMS, JustSteel.MODID);
	public static final RegistryObject<Item> STEELSTEEL = ITEMS.register("steelsteel",
            () -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_TOOLS).stacksTo(1)));
	public static final RegistryObject<Item> FLINTFLINT = ITEMS.register("flintflint",
			() -> new FlintFlint(new Item.Properties().tab(CreativeModeTab.TAB_TOOLS).stacksTo(1)));
	public static final RegistryObject<Item> FLINTFLINTSTEELSTEEL = ITEMS.register("flintflintsteelsteel",
            () -> new FFSS(new Item.Properties().tab(CreativeModeTab.TAB_TOOLS).stacksTo(1)));
}

I did look at the FlintAndSteelItem class but most of the difference was sound which I don't really care about.

Link to comment
Share on other sites

  • CoddingDirtMC changed the title to [SOLVED] [1.19] Item setting fire block not working right

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
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.

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hello, I am trying to install client-side mods, to better my minecraft experience on servers, but I run into a few issues with some dependencies missing, so I would like if someone would be able to help me.  Here are the following errors: Error loading mods 3 errors have occurred during loading --------------------------------------- InventoryTweaksRenewed(invtweaks) has failed to load correctly java.lang.NoClassDefFoundError:net/minecraft/client/gui/widget/Widget Jade(jade) has failed to load correctly java.lang.NoClassDefFoundError:net/minecraftforge/event/entity/EntityJoinWorldEvent Waila(Jade)(waila)has failed to load correctly java.lang.NoClassDefFoundError:net/minecraftforge/client/event/ClientPlayerNetworkEvent$LoggedOutEvent Here is a pastebin of the crash report: https://pastebin.com/uMxfcUP3
    • You don't show the error, or minecraft version or any other useful information. "It keeps on crashing and I can't get it to load" is useless.   The github project you posted is incomplete. It has no build.gradle, etc. so we can't build it ourselves to find out the problem you have.   GUESSING: I can see a number of obvious problems with your code:   1) https://github.com/Tucky143/Buzz/blob/a03ffc801f439a095e9c272dff6510970543f0e2/src/main/java/com/example/examplemod/villager/ModVillagers.java#L29 Here you are doing instance equality tests for a Holder<PoiType> with a PoiType. This will never be true.   2) https://github.com/Tucky143/Buzz/blob/a03ffc801f439a095e9c272dff6510970543f0e2/src/main/java/com/example/examplemod/villager/ModVillagers.java#L36 That reflection code does nothing. Look at the method you are calling. Although I suspect you can't find it. The signature of the method you are using is for 1.18.x while the above methods you are using in (1) above are the signatures of methods in 1.19.x    
    • It keeps on crashing and I can't get it to load. I also want to be able to have it place flowers. Git-Repo:https://github.com/Tucky143/Buzz
    • Ok I understand the question now, but you don't still show nearly enough information to give you a definitive answer. I can tell you the slab's loot tables doesn't drop different items. It drops different amounts of the same item based on the block state.   Here's a simple example where I have changed the redstone lamp to drop either a diamond or an emerald depending upon whether it is lit. Note; * the use of multiple (mutually exclusive) pools * the use of minecraft:inverted to do a kind of else/not logic. data/minecraft/loot_tables/blocks/redstone_lamp.json { "type": "minecraft:block", "pools": [ { "bonus_rolls": 0.0, "rolls": 1.0, "conditions": [ { "block": "minecraft:redstone_lamp", "condition": "minecraft:block_state_property", "properties": { "lit": "true" } } ], "entries": [ { "type": "minecraft:item", "name": "minecraft:diamond" } ] }, { "bonus_rolls": 0.0, "rolls": 1.0, "conditions": [ { "condition": "minecraft:inverted", "term": { "block": "minecraft:redstone_lamp", "condition": "minecraft:block_state_property", "properties": { "lit": "true" } } } ], "entries": [ { "type": "minecraft:item", "name": "minecraft:emerald" } ] } ] }  
  • Topics

×
×
  • Create New...

Important Information

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