Fredashay's Torches icon

Fredashay's Torches -----

This plugin spams your caves with torches.




Updated for Minecraft 1.20.
----------, Nov 11, 2023

Recompiled for 1.16
----------, Dec 19, 2020

This plugin spams your caves with torches.

To install this plugin, copy the plugin JAR file to your server's plugins folder.

To run it, type /TORCH ON [DISTANCE] or /TORCH OFF. Be warned, this plugin has a snarky attitude, lol

I currently run a Rainbow server but I want greater functionality than the Rainbow API provides, so I've been learning Spigot. This is one of several silly plugins I've written to that end.


Code (Text):

package FredashaySpigotTorch;

import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;

public class MyPlugin extends JavaPlugin implements Listener, CommandExecutor {
   
   private static PluginDescriptionFile pdfFile = null;
   private static boolean torchOn = false;
   private static int torchDistance = 10;
   private static Player torchPlayer = null;
   private static boolean torchMove = false;
   
   @Override
    public void onEnable() {
       pdfFile = getDescription();                  
       getServer().getPluginManager().registerEvents(this,this);  
       clock(2);
        }

    private void clock(int interval) {
        getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
            public void run() {
                onTick();                              
                clock(interval);
                }
            }, interval);
        }

   @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
       if (label.equalsIgnoreCase("torch")) {
           if (!(sender instanceof Player)) {
               sender.sendMessage("[" + pdfFile.getName() + "] This command can only be issued by a player in the game. ");
               return (false);
               }
           Player player = (Player) sender;
           if (player.isOp()) {
               if (args.length > 0) {
                   if (args[0].equalsIgnoreCase("on")) {                          
                       if (torchOn) {
                           if (player.getName().equalsIgnoreCase(torchPlayer.getName())) {
                               player.sendMessage("<Torch> Already on for a radius of " + torchDistance + ". ");
                               }
                           else {
                               player.sendMessage("<Torch> In use by someone else.  Try later, dude. ");
                               }
                           }
                       else {
                           torchPlayer = player;
                           torchOn = true;
                           torchMove = true;
                           torchDistance = 10;
                           if (args.length > 1) {
                               if (isNumeric(args[1])) {
                                   torchDistance = (int) toInteger(args[1]);
                                   if (torchDistance < 1) {
                                       player.sendMessage("<Torch> No! ");
                                       torchOn = false;
                                       }
                                   else if (torchDistance > 50) {
                                       player.sendMessage("<Torch> You really wanna turn the whole friggin' world into torches?!?! ");
                                       torchOn = false;
                                       }
                                   }
                               else {
                                   player.sendMessage("<Torch> Say what?");
                                   }
                               }
                           if (torchOn) {
                               player.sendMessage("<Torch> On for a radius of " + torchDistance + ". ");
                               }
                           }                      
                       }
                   else if (args[0].equalsIgnoreCase("off")) {                      
                       if (torchOn) {
                           player.sendMessage("<Torch> What?  You don't like torches any more? ");
                           torchOn = false;
                           }
                       else {
                           player.sendMessage("<Torch> Whatever, dude. ");
                           }
                       torchMove = false;
                       }
                   else {
                       player.sendMessage("<Torch> Huh? ");
                       }
                   }
               else {
                   player.sendMessage("<Torch> Yo! ");
                   }
               return (true);
               }
           return (false);          
           }
       return (false);
        }
   
   @EventHandler
   private void onPlayerMove(PlayerMoveEvent event) {
       Player player = event.getPlayer();
       if (player == torchPlayer) {
           if (player.isOp()) {
               torchMove = true;
               }
           else {
               torchMove = false;
               }
           }
       }
   
   private static boolean isNumeric(String str) {
       double d = 0;
       if (d == 0) {
           try {          
               d = Double.parseDouble(str);              
               }  
           catch(NumberFormatException nfe) {  
               return (false);  
               }
           }
       return (true);  
       }
   
   private long toInteger(String garbage) {
       long bigNumber = 0;
       int inputIx = 0;
       String sign = null;
       String inputChar = "";
       int inputDigit = 0;      
       garbage = garbage.trim();
           bigNumber = 0;      
       if ((garbage.length() > 0) && (garbage.length() <= 18)) {
           inputChar = garbage.substring(0,1);
           inputIx = 0;
           sign = "+";
           if (inputChar.equals("-")) {
               sign = "-";
               inputIx = 1;
               inputChar = garbage.substring(1,2);
               }
           while ((inputIx < garbage.length()) && ((inputChar.equals("0") || (inputChar.equals("1")) || (inputChar.equals("2")) || (inputChar.equals("3")) || (inputChar.equals("4"))  || (inputChar.equals("5")) || (inputChar.equals("6")) || (inputChar.equals("7")) || (inputChar.equals("8"))  || (inputChar.equals("9"))))) {
               inputDigit = 0;
               if (inputChar.equals("1")) inputDigit = 1;
               else if (inputChar.equals("2")) inputDigit = 2;
               else if (inputChar.equals("3")) inputDigit = 3;
               else if (inputChar.equals("4")) inputDigit = 4;
               else if (inputChar.equals("5")) inputDigit = 5;
               else if (inputChar.equals("6")) inputDigit = 6;
               else if (inputChar.equals("7")) inputDigit = 7;
               else if (inputChar.equals("8")) inputDigit = 8;
               else if (inputChar.equals("9")) inputDigit = 9;
               bigNumber = bigNumber * 10;
               bigNumber = bigNumber + inputDigit;
               inputIx = inputIx + 1;
               if (inputIx < garbage.length()) inputChar = garbage.substring(inputIx,inputIx + 1);
               }                      
           if (inputChar.equals("-")) {
               sign = "-";
               }
           if (sign.equals("-")) {
               bigNumber = bigNumber * -1;
               }
           }      
       return (bigNumber);
       }
       
   /*
   @EventHandler
   public void onTick(GameTick event) {
       }
   /* */

   private void onTick() {
       int playerX = 0;
       int playerY = 0;
       int playerZ = 0;  
       int subX = 0;
       int subY = 0;
       int subZ = 0;
       Block block = null;
       Block blockUnder = null;
       if (torchOn) {
           if (torchPlayer.isOp()) {
               // torchPlayer.sendMessage("<Torch> Tick! ");
               if (torchMove) {
                   // torchPlayer.sendMessage("<Torch> You moved! ");
                   torchMove = false;
                   Location loc = torchPlayer.getLocation();
                   playerX = loc.getBlockX();
                   playerY = loc.getBlockY();
                   playerZ = loc.getBlockZ();  
                   subX = playerX - torchDistance;
                   while (subX <= playerX + torchDistance) {
                       subZ = playerZ - torchDistance;
                       while (subZ <= playerZ + torchDistance) {
                           subY = playerY - torchDistance;
                           while (subY <= playerY + torchDistance) {
                               block = getServer().getWorld(torchPlayer.getWorld().getUID()).getBlockAt(subX, subY, subZ);
                               if (block.getType() == Material.AIR) {
                                   blockUnder = getServer().getWorld(torchPlayer.getWorld().getUID()).getBlockAt(subX, subY - 1, subZ);
                                   if (subY <= 50) {
                                       if ((blockUnder.getType() != Material.AIR) && (blockUnder.getType() != Material.TORCH)) {
                                           block.setType(Material.TORCH);  // <-- Spigot
                                           // myServer.getWorld(torchPlayerWorld).setBlockAt(subX, subY, subZ, myServer.getBlockFromName(BlockHelper.getBlockName(MC_BlockType.TORCH)), 0);  // <-- Rainbow  
                                           }
                                       }
                                   else if (subY <= 60) {
                                       if ((blockUnder.getType() == Material.STONE) && (blockUnder.getType() != Material.TORCH)) {
                                           block.setType(Material.TORCH);  // <-- Spigot
                                           // myServer.getWorld(torchPlayerWorld).setBlockAt(subX, subY, subZ, myServer.getBlockFromName(BlockHelper.getBlockName(MC_BlockType.TORCH)), 0);  // <-- Rainbow  
                                           }
                                       }
                                   }      
                               subY = subY + 1;
                               }                                                                                      
                           subZ = subZ + 1;
                           }
                       subX = subX + 1;
                       }
                   }
               }
           }
       }      
       
   // private void doNothing() { }
           
    }
 
----------, Sep 30, 2017

Resource Information
Author:
----------
Total Downloads: 311
First Release: Sep 17, 2017
Last Update: Nov 11, 2023
Category: ---------------
All-Time Rating:
0 ratings
Find more info at minecraft-server-list.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings