Jump to content

make block change on right click?(with a certain item in player hand)[solved]


Recommended Posts

Posted

how would one go about making a block change on rightclick? I mean the proper way, i know some ways to do it (using worldgen to place the new block at the same location as the old block) but what method & parameter would i use to check the item in a payers hand?

Also, I should have you know that you are reading my signature.

Posted

EDIT:

i have found a way to get the item in hand, would the worldplacing method still work?

 
   public void onBlockClicked(World par1World, int par2, int par3, int par4, EntityPlayer p5EP) {
    	if(p5EP.inventory.currentItem == 0){
    		//changeblock here
    	}
    }

Also, I should have you know that you are reading my signature.

Posted

you could either check from the block the player is right clicking on or you could use the following from your Item override class

 

public boolean onItemUse(ItemStack tool,
		EntityPlayer player, World world, int x, int y,
		int z, int par7, float xFloat, float yFloat, float zFloat)
{

	if (!player.canPlayerEdit(x, y, z, par7, tool))//can the player edit this block? if he cant then dont do anything
	{
		return false;
	}
world.setBlockAndMetadataWithNotify(x, y, z, 0, Block.blockDiamond.blockID); // sets the block to diamond block with the meta data 0 (used for setting metadata if the block needs it
	world.setBlockWithNotify(x, y, z, Block.blockDiamond.blockID); // sets the block to diamond block with no meta data
}

Posted

i got mine to work (mainly because i wanted to be able to select vanilla Items too not just my mod's items) and a peculiar error popped up:

 

  Reveal hidden contents

 

 

 

my block code:

 

 

  Reveal hidden contents

 

Also, I should have you know that you are reading my signature.

Posted

the corect way would be

private Block toBlock = new BlockNewBlockHere()
public void onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer player) {
     if(player.inventory.currentItem == 0){
      par1World.setBlockId(par2,par3,par4,toBlock.blockID);
     }
    }

The Korecraft Mod

Posted

It probably shoud have been setBlock...

mnn.getNativeLang() != English

If I helped you please click on the "thank you" button.

Posted

i get the same error:

2013-03-06 17:00:03 [iNFO] [ForgeModLoader] Forge Mod Loader version 4.7.4.520 for Minecraft 1.4.7 loading
2013-03-06 17:00:05 [iNFO] [sTDOUT] 27 achievements
2013-03-06 17:00:05 [iNFO] [sTDOUT] 210 recipes
2013-03-06 17:00:05 [iNFO] [sTDOUT] Setting user: Player923, -
2013-03-06 17:00:05 [iNFO] [sTDERR] Client asked for parameter: server
2013-03-06 17:00:05 [iNFO] [sTDOUT] LWJGL Version: 2.4.2
2013-03-06 17:00:06 [iNFO] [ForgeModLoader] Attempting early MinecraftForge initialization
2013-03-06 17:00:06 [iNFO] [sTDOUT] MinecraftForge v6.6.0.497 Initialized
2013-03-06 17:00:06 [iNFO] [ForgeModLoader] MinecraftForge v6.6.0.497 Initialized
2013-03-06 17:00:06 [iNFO] [sTDOUT] Replaced 84 ore recipies
2013-03-06 17:00:06 [iNFO] [ForgeModLoader] Completed early MinecraftForge initialization
2013-03-06 17:00:06 [iNFO] [ForgeModLoader] Searching C:\Users\gamer\MCP\jars\mods for mods
2013-03-06 17:00:07 [iNFO] [ForgeModLoader] Forge Mod Loader has identified 4 mods to load
2013-03-06 17:00:08 [iNFO] [ForgeModLoader] Configured a dormant chunk cache size of 0
2013-03-06 17:00:08 [iNFO] [sTDOUT] Starting up SoundSystem...
2013-03-06 17:00:08 [iNFO] [sTDOUT] Initializing LWJGL OpenAL
2013-03-06 17:00:08 [iNFO] [sTDOUT]     (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
2013-03-06 17:00:09 [iNFO] [sTDOUT] OpenAL initialized.
2013-03-06 17:00:09 [iNFO] [ForgeModLoader] Forge Mod Loader has successfully loaded 4 mods
2013-03-06 17:00:36 [iNFO] [ForgeModLoader] Loading dimension 0 (48698) (net.minecraft.server.integrated.IntegratedServer@178ef53)
2013-03-06 17:00:36 [iNFO] [ForgeModLoader] Loading dimension 1 (48698) (net.minecraft.server.integrated.IntegratedServer@178ef53)
2013-03-06 17:00:36 [iNFO] [ForgeModLoader] Loading dimension -1 (48698) (net.minecraft.server.integrated.IntegratedServer@178ef53)
2013-03-06 17:01:00 [iNFO] [sTDERR] net.minecraft.util.ReportedException: Ticking memory connection
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:64)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:108)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:599)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:123)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:497)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2013-03-06 17:01:00 [iNFO] [sTDERR] Caused by: java.lang.NullPointerException
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at tuskiomi.common.TGrayCobble.onBlockClicked(TGrayCobble.java:27)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.item.ItemInWorldManager.onBlockClicked(ItemInWorldManager.java:184)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.network.NetServerHandler.handleBlockDig(NetServerHandler.java:509)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.network.packet.Packet14BlockDig.processPacket(Packet14BlockDig.java:67)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:80)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:136)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:57)
2013-03-06 17:01:00 [iNFO] [sTDERR] 	... 6 more
2013-03-06 17:01:01 [iNFO] [ForgeModLoader] Unloading dimension 0
2013-03-06 17:01:01 [iNFO] [ForgeModLoader] Unloading dimension -1
2013-03-06 17:01:01 [iNFO] [ForgeModLoader] Unloading dimension 1
2013-03-06 17:01:02 [iNFO] [sTDERR] java.lang.NullPointerException
2013-03-06 17:01:02 [sEVERE] [ForgeModLoader] Fatal errors were detected during the transition from SERVER_STARTED to SERVER_STOPPED. Loading cannot continue
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at tuskiomi.common.TGrayCobble.onBlockClicked(TGrayCobble.java:27)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at net.minecraft.client.multiplayer.PlayerControllerMP.clickBlock(PlayerControllerMP.java:205)
2013-03-06 17:01:02 [sEVERE] [ForgeModLoader] 
mcp [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
tuskiomi [hello, tuskiomis mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1320)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1805)
2013-03-06 17:01:02 [sEVERE] [ForgeModLoader] The following problems were captured during this phase
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:846)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.run(Minecraft.java:771)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at java.lang.Thread.run(Unknown Source)
2013-03-06 17:01:02 [iNFO] [sTDERR] Exception in thread "Server thread" cpw.mods.fml.common.LoaderException
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at cpw.mods.fml.common.LoadController.transition(LoadController.java:117)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at cpw.mods.fml.common.Loader.serverStopped(Loader.java:752)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at cpw.mods.fml.common.FMLCommonHandler.handleServerStopped(FMLCommonHandler.java:459)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:559)
2013-03-06 17:01:02 [iNFO] [sTDERR] 	at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2013-03-06 17:01:12 [iNFO] [sTDOUT] Stopping!
2013-03-06 17:01:12 [iNFO] [sTDOUT] SoundSystem shutting down...
2013-03-06 17:01:12 [iNFO] [sTDOUT]     Author: Paul Lamb, www.paulscode.com

Also, I should have you know that you are reading my signature.

Posted

just going on a hunch here, but have you tried using null checks (given that your error is caused by a null value) is just add a few bits like

if(player != null){

or

if(player.inventory.getCurrentItem() != null){

 

again this is just a hunch as i don't know what is on line 27 of TGrayCobble, where it seems throwing a null pointer exception

Posted
  On 3/8/2013 at 8:41 AM, Yagoki said:

just going on a hunch here, but have you tried using null checks (given that your error is caused by a null value) is just add a few bits like

if(player != null){

or

if(player.inventory.getCurrentItem() != null){

 

again this is just a hunch as i don't know what is on line 27 of TGrayCobble, where it seems throwing a null pointer exception

if(p5EP.inventory.getCurrentItem().itemID == 1){

Also, I should have you know that you are reading my signature.

Posted

my code along w/ another error

 

  Reveal hidden contents

 

 

 

ERROR:

 

  Reveal hidden contents

 

Also, I should have you know that you are reading my signature.

Posted

you can do it two ways... one is to just on block activated then check the players current item and the other(more laggy unless is meant for more than 1 use) is to have a on right clicked in the item

The Korecraft Mod

Posted

is my error considered a bug? because i honestly have no clue here, i get the same error if i  try to place the block above it (which is air).

Also, I should have you know that you are reading my signature.

Posted

If the player's hand is empty the ItemStack is null, not item ID 0. You can either null check or try/catch.

 

    public void onBlockClicked(World par1World, int par2, int par3, int par4, EntityPlayer p5EP) {
     if( p5ep != null && && p5EP.inventory.getCurrentItem().itemID != null){
      if(p5EP.inventory.getCurrentItem().itemID == 1 && par2 * par3 != 0 && par2 * par4 != 0){
       par1World.setBlock(par2, par3, par4, 4);
      }
     }
     System.out.println("debug tick.");
    }

 

Thought I should add:

When null checking, go from least specific to most specific.

For example:

if(Object1.method1() != null && Object1 != null){
System.out.println(Object1.method1().toString());
}

This will cause a null pointer exception if Object1 is null because it is trying to call a method (method1) from a null object. However, if you did this:

if(Object1 != null && Object1.method1() != null){
System.out.println(Object1.method1().toString());
}

This will not cause a null pointer exception because it will break out of the if statement before it tries to call a method from a null object.

Posted

thanks :D really heped allot. also, i'm *relatively* new to java. i've bben doing the language for 6 months or so , thanks for the format tip!

Also, I should have you know that you are reading my signature.

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

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