Jump to content

[1.12.1][Solved] Call a function every time a block is broken


Neirpyc

Recommended Posts

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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");
    }
}
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

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



×
×
  • Create New...

Important Information

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