Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hello,

 

I am currently trying to protect a server from xRays, and I want to log every block that is broken by each player so I can see if someone breaks more diamond per stone than he should. I've found a few answers to this question but I didn't managed to make any of these working in 1.12.1...

So I want that every time a player breaks a blocks, a function is called,  with as parameter the player who breaks the block and the type of the block.

Also, this needs to be server side only so a hacker cannot edit the client to bypass this security.

 

Thanks!

Edited by Neirpyc

  • Author

http://www.minecraftforge.net/forum/topic/7604-handle-playerinteractevent-problem/ -> doing nothing

http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/commands-command-blocks-and/2475128-detect-when-a-player-breaks-a-certain-block -> not what I want

 

I've also tried a few things looking like the first link that I can't find again, none of what I tried threw an exception, it was just doing nothing.

  • Author
package com.aaa.modname;

importcom.aaa.modname.subpackage.blockBreakHandler;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = Modname.MODID, version = Modname.VERSION)
public class Modname {
    public static final String MODID = "modname";
    public static final String VERSION = "0.0.1";

    @EventHandler
    public void preInit(FMLPreInitializationEvent event){
    }

    @EventHandler
    public void init(FMLInitializationEvent event) {
        FMLCommonHandler.instance().bus().register(new blockBreakHandler());
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event){
    }
}

 

package com.aaa.modname.subpackage;

import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

public class blockBreakHandler {
    @SubscribeEvent
    public void onBlock(PlayerInteractEvent event){
        System.out.println("Block Destroyed");
    }
}
  • Author

forge: 14.22.0.2452

 

I know it is deprecated, but I'm first trying to make it working before I fix it.

  • Author

I tried breaking blocks (that's what I want) (and I also tried going to sleep joining and leaving the server, placing blocks, opening guis...)

  • Author

Okay... I've changed one thing: I registered my event in preInit, init and postInit, and it worked... And now if a register it only one time, it still works...

 

Thanks guys!

  • Author

Well... actualy this is not total solved... HarvestCheck is only called when using the wrong tool to break a block (example: using a axe to mine diamond ore) and not when using to correct tool. I cannot find the function that is called on every block destroying...

3 minutes ago, Neirpyc said:

BlockEvent.BreakEvent doesn't give the blocktype of the block destroyed

Yes it does. 

BlockEvent.BreakEvent#state#getBlock()

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.