11package de .guntram .mcmod .antighost ;
22
3+ import java .util .ArrayList ;
4+ import java .util .List ;
5+ import net .minecraft .client .Minecraft ;
6+ import net .minecraft .client .network .NetHandlerPlayClient ;
7+ import net .minecraft .command .CommandException ;
8+ import net .minecraft .command .ICommand ;
9+ import net .minecraft .command .ICommandSender ;
10+ import net .minecraft .network .play .client .CPacketPlayerDigging ;
11+ import net .minecraft .server .MinecraftServer ;
12+ import net .minecraft .util .EnumFacing ;
13+ import net .minecraft .util .math .BlockPos ;
14+ import net .minecraftforge .client .ClientCommandHandler ;
315import net .minecraftforge .common .MinecraftForge ;
416import net .minecraftforge .fml .common .Mod ;
517import net .minecraftforge .fml .common .Mod .EventHandler ;
1325 acceptedMinecraftVersions = "[1.12]"
1426)
1527
16- public class AntiGhost
28+ public class AntiGhost implements ICommand
1729{
1830 static final String MODID ="antighost" ;
1931 static final String VERSION ="1.0" ;
2032 @ EventHandler
2133 public void init (FMLInitializationEvent event )
2234 {
2335 MinecraftForge .EVENT_BUS .register (this );
36+ ClientCommandHandler .instance .registerCommand (this );
2437 }
2538
2639 @ EventHandler
@@ -29,4 +42,58 @@ public void preInit(final FMLPreInitializationEvent event) {
2942 confHandler .load (event .getSuggestedConfigurationFile ());
3043 MinecraftForge .EVENT_BUS .register (confHandler );
3144 }
45+
46+ @ Override
47+ public String getName () {
48+ return "ghost" ;
49+ }
50+
51+ @ Override
52+ public String getUsage (ICommandSender sender ) {
53+ return "/ghost" ;
54+ }
55+
56+ @ Override
57+ public List <String > getAliases () {
58+ return new ArrayList <>();
59+ }
60+
61+ @ Override
62+ public void execute (MinecraftServer server , ICommandSender sender , String [] args ) throws CommandException {
63+ Minecraft mc =Minecraft .getMinecraft ();
64+ NetHandlerPlayClient conn = mc .getConnection ();
65+ if (conn ==null )
66+ return ;
67+ BlockPos pos =sender .getPosition ();
68+ for (int dx =-4 ; dx <=4 ; dx ++)
69+ for (int dy =-4 ; dy <=4 ; dy ++)
70+ for (int dz =-4 ; dz <=4 ; dz ++) {
71+ CPacketPlayerDigging packet =new CPacketPlayerDigging (
72+ CPacketPlayerDigging .Action .ABORT_DESTROY_BLOCK ,
73+ new BlockPos (pos .getX ()+dx , pos .getY ()+dy , pos .getZ ()+dz ),
74+ EnumFacing .UP // with ABORT_DESTROY_BLOCK, this value is unused
75+ );
76+ conn .sendPacket (packet );
77+ }
78+ }
79+
80+ @ Override
81+ public boolean checkPermission (MinecraftServer server , ICommandSender sender ) {
82+ return true ;
83+ }
84+
85+ @ Override
86+ public List <String > getTabCompletions (MinecraftServer server , ICommandSender sender , String [] args , BlockPos targetPos ) {
87+ return new ArrayList <>();
88+ }
89+
90+ @ Override
91+ public boolean isUsernameIndex (String [] args , int index ) {
92+ return false ;
93+ }
94+
95+ @ Override
96+ public int compareTo (ICommand o ) {
97+ return getName ().compareTo (o .getName ());
98+ }
3299}
0 commit comments