Advertisement
wiresegal

ServerKiller

Feb 20th, 2017
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.87 KB | None | 0 0
  1. package nom;
  2.  
  3. import net.minecraft.command.CommandBase;
  4. import net.minecraft.command.CommandException;
  5. import net.minecraft.command.ICommandSender;
  6. import net.minecraft.server.MinecraftServer;
  7. import net.minecraftforge.common.MinecraftForge;
  8. import net.minecraftforge.fml.common.FMLCommonHandler;
  9. import net.minecraftforge.fml.common.FMLLog;
  10. import net.minecraftforge.fml.common.Mod;
  11. import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
  12. import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
  13. import net.minecraftforge.fml.common.eventhandler.EventBus;
  14. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  15. import net.minecraftforge.fml.common.gameevent.TickEvent;
  16. import net.minecraftforge.fml.relauncher.ReflectionHelper;
  17.  
  18. import java.lang.reflect.Field;
  19. import java.lang.reflect.Modifier;
  20.  
  21. /**
  22.  * @author WireSegal
  23.  *         Created at 8:21 AM on 2/20/17.
  24.  */
  25. @Mod(modid = "servereater", name = "Server Eater", version = "1.1", serverSideOnly = true, acceptedMinecraftVersions = "[1.9,)")
  26. public class ServerEater {
  27.     @Mod.EventHandler
  28.     public void preInit(FMLPreInitializationEvent e) {
  29.         MinecraftForge.EVENT_BUS.register(this);
  30.     }
  31.  
  32.     @Mod.EventHandler
  33.     public void serverStarting(FMLServerStartingEvent e) {
  34.         e.registerServerCommand(KillerCommand.INSTANCE);
  35.     }
  36.  
  37.     @SubscribeEvent
  38.     public void onServerTick(TickEvent.ServerTickEvent e) throws Exception {
  39.         if (KillerCommand.ded) {
  40.             Field field = ReflectionHelper.findField(MinecraftServer.class, "k", "field_147145_h", "LOG");
  41.             field.setAccessible(true);
  42.  
  43.             Field modifiersField = Field.class.getDeclaredField("modifiers");
  44.             modifiersField.setAccessible(true);
  45.             modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
  46.  
  47.             field.set(FMLCommonHandler.instance().getMinecraftServerInstance(), null);
  48.  
  49.             field = FMLLog.class.getDeclaredField("coreLog");
  50.             field.setAccessible(true);
  51.             field.set(null, null);
  52.  
  53.             field = EventBus.class.getDeclaredField("exceptionHandler");
  54.             field.setAccessible(true);
  55.             field.set(MinecraftForge.EVENT_BUS, null);
  56.  
  57.             throw new RuntimeException("all is dust");
  58.         }
  59.     }
  60.  
  61.     private static class KillerCommand extends CommandBase {
  62.         static boolean ded = false;
  63.         static final KillerCommand INSTANCE = new KillerCommand();
  64.  
  65.         @Override
  66.         public String getName() {
  67.             return "uptimehasnomeaning";
  68.         }
  69.  
  70.         @Override
  71.         public String getUsage(ICommandSender sender) {
  72.             return "/uptimehasnomeaning";
  73.         }
  74.  
  75.         @Override
  76.         public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
  77.             ded = true;
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement