Jump to content

Recommended Posts

Posted

So, I'm using the Event PlayerEvent.HarvestCheck and I'm trying to make the harvested block explode in the player's face. Don't ask why. However, I've run into a bit of a problem. There doesn't seem to be any way whatsoever to actually get the location of a block (to make an explosion) with nothing but the block object itself. Entities have static variables that are very easy to use to get an explosion, but I want the explosion to actually originate from the block itself.

 

@ForgeSubscribe
public void blockHarvested(PlayerEvent.HarvestCheck event)
{
	event.entityPlayer.worldObj.createExplosion((Entity)null, event.block.posX., event.block.posY, event.block.posZ, 4.0F, true);
}

 

Yep, that's all I have. Obviously it doesnt work - the Block class doesn't have posX, or posY, or posZ. Anyone have any clue how this could be accomplished?

Posted
  On 3/2/2013 at 5:15 AM, endershadow said:

what if you give the block a tile entity and create the explosion from the tile entity.

That would be wasteful.

 

Try adding the onBlockAdded(World, x, y, z) method. This is called whenever the block is added to the world (placed, oregen, setBlockWithNotify...).

From there, set 3 variables - x, y, and z.

 

Then, in the blockDestroyedByPlayer (or whatever it is called), you can use those variables.

Posted
  On 3/2/2013 at 8:57 AM, diesieben07 said:

If you need to use PlayerEvent.HarvestCheck and really want to make the block explode, not the player, its not possible, not even with a TileEntity (to get the TE you'd need the Coordinates as well).

 

I mean that you create the explosion in the tile entity. Not get the coordinates from the tile entity and then create the explosion in the block

Posted

you have a player entity so you could do something like this maybe

player.rayTrace

to get the active block?

mnn.getNativeLang() != English

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

Posted
  On 3/2/2013 at 8:57 AM, diesieben07 said:

@Reika: That wouldn't work, because there is only one instance of each block. So if you mined a block it would always make the block explode, that was placed last.

If you need to use PlayerEvent.HarvestCheck and really want to make the block explode, not the player, its not possible, not even with a TileEntity (to get the TE you'd need the Coordinates as well).

 

Are you sure? I have had my blocks have variables store internal data (like "int dropmeta") which was unique to each block.

Posted
  On 3/3/2013 at 11:04 AM, diesieben07 said:

@

  Quote

Are you sure? I have had my blocks have variables store internal data (like "int dropmeta") which was unique to each block.

Yes, I am sure. If you used TileEntities thats something else. TileEntities exist multiple times. Only the Block exists once.

 

Then explain how I was able to make the same block have different light values dependent on its metadata (multiple values in the world at once) - using vanilla code - and no Tile Entities...

Posted
  On 3/3/2013 at 8:50 PM, Mazetar said:

couldn't one do the explosion in front of the player, based on his location and the way he is facing?

I wrote possible solution quite time ago, it does exactly what you're saying:

  Quote

you have a player entity so you could do something like this maybe

player.rayTrace

to get the active block?

mnn.getNativeLang() != English

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

Posted

This option is the easiest: use the player.getLook(1.0F); to obtain the normalized vector the player is heading. Then get his position, add this vector and make an explosion at these coordinates - exactly 1 meter in front of the player.

 

My other idea is to use Minecraft.objectMouseOver object to obtain the coordinates of the block the player is currently looking at. If during the event call objectMouseOver is already updated ( so that there's no block being destroyed there ), just monitor this variable and store the coordinates somewhere.

 

Just my few cents.

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

    • Start by following the docs to get a workspace setup: https://docs.minecraftforge.net/en/latest/gettingstarted/ Then poke around some of the tutorials, https://www.mcjty.eu/docs/1.20/ used to be the goto, but not sure if there are any updates for regular forge or not, but if you've brushed up on Java, it will be enough to get you started. Poke around the Minecraft and Forge sources to see how things are done. Read the FAQ for information on how to post code/logs when you run into issues. Share as much info on issues you have as possible. Use github to host projects, chances of someone helping are higher when they can actually see all your code and/or build it themselves. And finally, keep it on the forums, don't direct message people with questions, most people do not provide personal support like that. Also keep in mind forums posts are not always immediately answered, if you're looking for a quicker response, you can always try the Minecraft Forge discord server.
    • Hello, I have a Forge Minecraft sever (I host it at g-portal.com) which has always worked fine and I had no problems, but today it doesn't wanna work anymore. Today I started the server and the status said online, but after a few seconds it said this: "Start failed". And then out of nowhere it restarted itself and the same thing happened again and again and now it's in an infinite loop where it just keeps failing and then restarts. Here's the download link for the server logs: https://www.mediafire.com/file/sq30dgoonjevib1/2025-07-06-1.log/file Does anyone know how to fix this? If yes I would really appreciate help. Best wishes, Gabs1107
    • I'm experiencing a critical issue on a dedicated Arch Linux server running the latest Forge for Minecraft 1.20.1. When a player exits a Nether portal (not enters, and not via /tp) or teleports into the End via portal, the server completely freezes for 1–10 minutes. During this time, all commands are unresponsive, and the game world essentially locks up. This is with watchdog disabled. Environment: OS: Arch Linux (latest packages) Java: OpenJDK 17 (up to date) Forge Version: Latest 1.20.1 (tested multiple versions from the past ~3 months) Mods: None (issue occurs on a clean install) Server Type: Proxmox VM with: 4 virtual cores 64 GB RAM (63 GB allocated via -Xmx and -Xms flags) Observed Behavior: Observed Behavior: The server freezes for 1–10 minutes when: Exiting a Nether portal (entering does not trigger the issue) Entering or exiting the End using a portal Teleporting using commands (e.g., /tp) works only for the Nether; teleporting to the End via command also causes a freeze The issue occurs anywhere in the world, not tied to specific coordinates or builds During the freeze: The server becomes completely unresponsive to all commands and player actions No crash reports, no errors, and no warnings are logged CPU usage remains under 50%, and RAM usage stays around 6–14 GB After 1–10 minutes, the server recovers automatically and resumes normal operation
    • Hey man, I just found this section in your code.  Try to do this: { "parent": "minecraft:item/generated", "textures": { "layer0": "testmod:item/alexandrite" } } This means your png should be named alexandrite.png. Hope it helps  
  • Topics

×
×
  • Create New...

Important Information

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