Solved Blaze rod should not destroy blocks

Discussion in 'Plugin Development' started by Asgernohns, Feb 27, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Asgernohns

    Hello all Bukkit Devs!

    I am making an update to my plugin Godwand. Every time you try to some of the modes you will destroy the block you're looking at in a close distance. So I need to know how to not destroy the block im looking at.

    If it could help, here is the source code:
    Code:java
    1. package me.AsgerNohns.magicwand;
    2.  
    3. import java.util.HashMap;
    4. import java.util.logging.Logger;
    5.  
    6.  
    7.  
    8.  
    9.  
    10.  
    11.  
    12.  
    13.  
    14.  
    15.  
    16. import org.bukkit.ChatColor;
    17. import org.bukkit.GameMode;
    18. import org.bukkit.Location;
    19. import org.bukkit.Material;
    20. import org.bukkit.command.Command;
    21. import org.bukkit.command.CommandSender;
    22. import org.bukkit.configuration.file.FileConfiguration;
    23. import org.bukkit.entity.Fireball;
    24. import org.bukkit.entity.Player;
    25. import org.bukkit.event.EventHandler;
    26. import org.bukkit.event.Listener;
    27. import org.bukkit.event.block.Action;
    28. import org.bukkit.event.block.BlockBreakEvent;
    29. import org.bukkit.event.player.PlayerInteractEvent;
    30. import org.bukkit.inventory.ItemStack;
    31. import org.bukkit.plugin.PluginDescriptionFile;
    32. import org.bukkit.plugin.java.JavaPlugin;
    33.  
    34. public class magicwand extends JavaPlugin implements Listener{
    35.  
    36.  
    37. boolean ItemInHand = false;
    38. public final Logger Logger = java.util.logging.Logger.getLogger("Minecraft");
    39. public static magicwand plugin;
    40.  
    41. public void loadConfiguration(){
    42. FileConfiguration config = this.getConfig();
    43. config.addDefault("Explosion_power", 5);
    44. config.addDefault("Wand_range", 500);
    45. config.addDefault("Magic_wand_itemId", 369);
    46. config.addDefault("Wand_in_all_gamemodes", true);
    47. getConfig().options().copyDefaults(true);
    48. saveConfig();
    49. }
    50.  
    51. @Override
    52. public void onEnable(){
    53. loadConfiguration();
    54. PluginDescriptionFile pdfFile = this.getDescription();
    55. this.Logger.info(pdfFile.getName()+" v"+pdfFile.getVersion()+" Has Been Enabled!");
    56. this.getServer().getPluginManager().registerEvents(this, this);
    57. }
    58.  
    59. @Override
    60. public void onDisable(){
    61. this.saveConfig();
    62. PluginDescriptionFile pdfFile = this.getDescription();
    63. this.Logger.info(pdfFile.getName()+" v"+pdfFile.getVersion()+" Has Been Disabled!");
    64. }
    65.  
    66. HashMap<String, Integer> wandmodes = new HashMap<String, Integer>();
    67. @EventHandler
    68. public void onPlayerInteract(PlayerInteractEvent e){
    69. Player p = e.getPlayer();
    70. int wandmode = wandmodes.containsKey(p.getName()) ? wandmodes.get(p.getName()) : 1;
    71. if(p.isOp()){
    72. if(p.getItemInHand().getTypeId() == getConfig().getInt("Magic_wand_itemId")){
    73. ItemInHand = true;
    74. if((e.getAction() == Action.RIGHT_CLICK_AIR) || (e.getAction() == Action.RIGHT_CLICK_BLOCK)){
    75. if(p.hasPermission("godwand.Usewand")){
    76. if(getConfig().getBoolean("Wand_in_all_gamemodes")){
    77. if(wandmode < 4){
    78. if(wandmode == 1){
    79. p.sendMessage(ChatColor.GOLD+"Lightning mode");
    80. }else if(wandmode == 2){
    81. p.sendMessage(ChatColor.GOLD+"Teleport mode");
    82. }else if(wandmode == 3){
    83. p.sendMessage(ChatColor.GOLD+"Explosion mode");
    84. }else if(wandmode == 0){
    85. p.sendMessage(ChatColor.GOLD+"Fireball mode");
    86. }
    87.  
    88. wandmode++;
    89.  
    90. }else if (wandmode == 4){
    91. wandmode -= 4;
    92.  
    93. }else {
    94. wandmode = 0;
    95. }
    96. }else{
    97. if(p.getGameMode() == GameMode.CREATIVE){
    98. if(wandmode < 4){
    99. if(wandmode == 1){
    100. p.sendMessage(ChatColor.GOLD+"Lightning mode");
    101. }else if(wandmode == 2){
    102. p.sendMessage(ChatColor.GOLD+"Teleport mode");
    103. }else if(wandmode == 3){
    104. p.sendMessage(ChatColor.GOLD+"Explosion mode");
    105. }else if(wandmode == 0){
    106. p.sendMessage(ChatColor.GOLD+"Fireball mode");
    107. }
    108.  
    109. wandmode++;
    110.  
    111. }else if (wandmode == 4){
    112. wandmode -= 4;
    113.  
    114. }else {
    115. wandmode = 0;
    116. }
    117. }else{
    118. p.sendMessage(ChatColor.DARK_RED+"You're not in gamemode 1!");
    119. }
    120. }
    121.  
    122. }else{
    123. p.sendMessage(ChatColor.DARK_RED+"You don't have permission to preform this command!");
    124. }
    125.  
    126. wandmodes.put(p.getName(), wandmode);
    127. }
    128. if((e.getAction() == Action.LEFT_CLICK_AIR) || (e.getAction() == Action.LEFT_CLICK_BLOCK)){
    129.  
    130. if(p.hasPermission("godwand.Usewand")){
    131. if(getConfig().getBoolean("Wand_in_all_gamemodes")){
    132. if(wandmode == 1){
    133.  
    134.  
    135. p.launchProjectile(Fireball.class);
    136.  
    137.  
    138.  
    139. }else if(wandmode == 2){
    140.  
    141.  
    142.  
    143. Location loc = p.getTargetBlock(null, getConfig().getInt("Wand_range")).getLocation();
    144. p.getWorld().strikeLightning(loc);
    145.  
    146. }else if(wandmode == 3){
    147.  
    148.  
    149. Location loc = p.getTargetBlock(null, getConfig().getInt("Wand_range")).getLocation();
    150. loc.add(0, 1, 0);
    151. p.teleport(loc);
    152.  
    153.  
    154.  
    155. }else if(wandmode == 4){
    156.  
    157. Location loc = p.getTargetBlock(null, getConfig().getInt("Wand_range")).getLocation();
    158. p.getWorld().createExplosion(loc, getConfig().getInt("Explosion_power"));
    159.  
    160.  
    161. }
    162.  
    163. }else{
    164. if(p.getGameMode() == GameMode.CREATIVE){
    165. if(wandmode == 1){
    166.  
    167.  
    168. p.launchProjectile(Fireball.class);
    169.  
    170.  
    171.  
    172. }else if(wandmode == 2){
    173.  
    174.  
    175.  
    176. Location loc = p.getTargetBlock(null, getConfig().getInt("Wand_range")).getLocation();
    177. p.getWorld().strikeLightning(loc);
    178.  
    179. }else if(wandmode == 3){
    180.  
    181.  
    182. Location loc = p.getTargetBlock(null, getConfig().getInt("Wand_range")).getLocation();
    183. loc.add(0, 1, 0);
    184. p.teleport(loc);
    185.  
    186.  
    187.  
    188. }else if(wandmode == 4){
    189.  
    190. Location loc = p.getTargetBlock(null, getConfig().getInt("Wand_range")).getLocation();
    191. p.getWorld().createExplosion(loc, getConfig().getInt("Explosion_power"));
    192.  
    193.  
    194. }
    195. }else{
    196. p.sendMessage(ChatColor.DARK_RED+"You're not in gamemode 1!");
    197. }
    198. }
    199. }
    200. }
    201. }
    202. }
    203. }
    204. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    205. Player p = (Player) sender;
    206. if(label.equalsIgnoreCase("gw")){
    207.  
    208. if(args.length == 0){
    209. p.sendMessage(ChatColor.DARK_RED+"Usage: /gw <subject> <value/boolean>");
    210. p.sendMessage(ChatColor.GOLD+"Subjects:"+ChatColor.BLUE+" WandInAllGamemodes(boolean), WandID(value), ExplosionPower(value), WandRange(value), Wand(Give you a wand)");
    211. }else if(args.length == 1){
    212. if(args[0].equalsIgnoreCase("WandInAllGamemodes")){
    213. p.sendMessage(ChatColor.DARK_RED+"Usage: /gw WandInAllGamemodes <true/false>");
    214. }else if(args[0].equalsIgnoreCase("WandID")){
    215. p.sendMessage(ChatColor.DARK_RED+"Usage: /gw WandID <value>");
    216. }else if(args[0].equalsIgnoreCase("ExplosionPower")){
    217. p.sendMessage(ChatColor.DARK_RED+"Usage: /gw ExplosionPower <value>");
    218. }else if(args[0].equalsIgnoreCase("WandRange")){
    219. p.sendMessage(ChatColor.DARK_RED+"Usage: /gw WandRange <value>");
    220. }else if(args[0].equalsIgnoreCase("Wand")){
    221. ItemStack wand = new ItemStack(Material.getMaterial(getConfig().getInt("Magic_wand_itemId")));
    222. p.getInventory().addItem(wand);
    223. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+"Wand"+ChatColor.GOLD+" to your inventory");
    224. }else{
    225. p.sendMessage(ChatColor.DARK_RED+"Usage: /gw <subject> <value/boolean>");
    226. p.sendMessage(ChatColor.GOLD+"Subjects:"+ChatColor.BLUE+" WandInAllGamemodes(boolean), WandID(value), ExplosionPower(value), WandRange(value)");
    227. }
    228. }else if(args.length >= 2){
    229. if(args[0].equalsIgnoreCase("WandInAllGamemodes")){
    230. if(args[1].equalsIgnoreCase("true")){
    231.  
    232. getConfig().set("Wand_in_all_gamemodes", true);
    233. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+"True"+ChatColor.GOLD+" for "+ChatColor.GREEN+"WindInAllGamemodes");
    234.  
    235. }else if(args[1].equalsIgnoreCase("false")){
    236.  
    237. getConfig().set("Wand_in_all_gamemodes", false);
    238. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+"false"+ChatColor.GOLD+" for "+ChatColor.GREEN+"WindInAllGamemodes");
    239.  
    240. }else{
    241.  
    242. p.sendMessage(ChatColor.DARK_RED+"Please enter true or false");
    243.  
    244. }
    245. }else if(args[0].equalsIgnoreCase("WandID")){
    246.  
    247. int PWandID;
    248. try {
    249. PWandID = Integer.parseInt(args[1]);
    250.  
    251. } catch (NumberFormatException er1) {
    252. p.sendMessage(ChatColor.DARK_RED+"Please enter a vaild value");
    253. return false;
    254.  
    255. }
    256. getConfig().set("Magic_wand_itemId", PWandID);
    257. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+PWandID+ChatColor.GOLD+" for "+ChatColor.GREEN+"WandID"+ChatColor.GOLD+"("+ChatColor.AQUA+"Default value: 369"+ChatColor.GOLD+")");
    258.  
    259. }else if(args[0].equalsIgnoreCase("ExplosionPower")){
    260. int PExplosionPower;
    261. try {
    262. PExplosionPower = Integer.parseInt(args[1]);
    263.  
    264. } catch (NumberFormatException er2) {
    265. p.sendMessage(ChatColor.DARK_RED+"Please enter a vaild value");
    266. return false;
    267.  
    268. }
    269. getConfig().set("Explosion_power", PExplosionPower);
    270. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+PExplosionPower+ChatColor.GOLD+" for "+ChatColor.GREEN+"ExplosionPower");
    271.  
    272. }else if(args[0].equals("WandRange")){
    273. int PWandRange;
    274. try {
    275. PWandRange = Integer.parseInt(args[1]);
    276.  
    277. } catch (NumberFormatException er2) {
    278. p.sendMessage(ChatColor.DARK_RED+"Please enter a vaild value");
    279. return false;
    280.  
    281. }
    282. getConfig().set("Wand_range", PWandRange);
    283. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+PWandRange+ChatColor.GOLD+" for "+ChatColor.GREEN+"WandRange");
    284. }
    285. }
    286.  
    287. }else if(label.equalsIgnoreCase("godwand")){
    288. if(args.length == 0){
    289. p.sendMessage(ChatColor.DARK_RED+"Usage: /godwand <subject> <value/boolean>");
    290. p.sendMessage(ChatColor.GOLD+"Subjects:"+ChatColor.BLUE+" WandInAllGamemodes(boolean), WandID(value), ExplosionPower(value), WandRange(value), Wand(Give you a wand)");
    291. }else if(args.length == 1){
    292. if(args[0].equalsIgnoreCase("WandInAllGamemodes")){
    293. p.sendMessage(ChatColor.DARK_RED+"Usage: /godwand WandInAllGamemodes <true/false>");
    294. }else if(args[0].equalsIgnoreCase("WandID")){
    295. p.sendMessage(ChatColor.DARK_RED+"Usage: /godwand WandID <value>");
    296. }else if(args[0].equalsIgnoreCase("ExplosionPower")){
    297. p.sendMessage(ChatColor.DARK_RED+"Usage: /godwand ExplosionPower <value>");
    298. }else if(args[0].equalsIgnoreCase("WandRange")){
    299. p.sendMessage(ChatColor.DARK_RED+"Usage: /godwand WandRange <value>");
    300. }else if(args[0].equalsIgnoreCase("Wand")){
    301. ItemStack wand = new ItemStack(Material.getMaterial(getConfig().getInt("Magic_wand_itemId")));
    302. p.getInventory().addItem(wand);
    303. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+"Wand"+ChatColor.GOLD+" to your inventory");
    304. }else{
    305. p.sendMessage(ChatColor.DARK_RED+"Usage: /godwand <subject> <value/boolean>");
    306. p.sendMessage(ChatColor.GOLD+"Subjects:"+ChatColor.BLUE+" WandInAllGamemodes(boolean), WandID(value), ExplosionPower(value), WandRange(value)");
    307. }
    308. }else if(args.length >= 2){
    309. if(args[0].equalsIgnoreCase("WandInAllGamemodes")){
    310. if(args[1].equalsIgnoreCase("true")){
    311.  
    312. getConfig().set("Wand_in_all_gamemodes", true);
    313. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+"True"+ChatColor.GOLD+" for "+ChatColor.GREEN+"WindInAllGamemodes");
    314.  
    315. }else if(args[1].equalsIgnoreCase("false")){
    316.  
    317. getConfig().set("Wand_in_all_gamemodes", false);
    318. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+"false"+ChatColor.GOLD+" for "+ChatColor.GREEN+"WindInAllGamemodes");
    319.  
    320. }else{
    321.  
    322. p.sendMessage(ChatColor.DARK_RED+"Please enter true or false");
    323.  
    324. }
    325. }else if(args[0].equalsIgnoreCase("WandID")){
    326.  
    327. int PWandID;
    328. try {
    329. PWandID = Integer.parseInt(args[1]);
    330.  
    331. } catch (NumberFormatException er1) {
    332. p.sendMessage(ChatColor.DARK_RED+"Please enter a vaild value");
    333. return false;
    334.  
    335. }
    336. getConfig().set("Magic_wand_itemId", PWandID);
    337. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+PWandID+ChatColor.GOLD+" for "+ChatColor.GREEN+"WandID"+ChatColor.GOLD+"("+ChatColor.AQUA+"Default value: 369"+ChatColor.GOLD+")");
    338.  
    339. }else if(args[0].equalsIgnoreCase("ExplosionPower")){
    340. int PExplosionPower;
    341. try {
    342. PExplosionPower = Integer.parseInt(args[1]);
    343.  
    344. } catch (NumberFormatException er2) {
    345. p.sendMessage(ChatColor.DARK_RED+"Please enter a vaild value");
    346. return false;
    347.  
    348. }
    349. getConfig().set("Explosion_power", PExplosionPower);
    350. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+PExplosionPower+ChatColor.GOLD+" for "+ChatColor.GREEN+"ExplosionPower");
    351.  
    352. }else if(args[0].equals("WandRange")){
    353. int PWandRange;
    354. try {
    355. PWandRange = Integer.parseInt(args[1]);
    356.  
    357. } catch (NumberFormatException er2) {
    358. p.sendMessage(ChatColor.DARK_RED+"Please enter a vaild value");
    359. return false;
    360.  
    361. }
    362. getConfig().set("Wand_range", PWandRange);
    363. p.sendMessage(ChatColor.GOLD+"Added "+ChatColor.GREEN+PWandRange+ChatColor.GOLD+" for "+ChatColor.GREEN+"WandRange");
    364. }
    365. }
    366.  
    367. }
    368. return false;
    369. }
    370.  
    371.  
    372.  
    373. }
    374.  


    Here is the Plugin.yml:
    Code:
    name: GodWand
    main: me.AsgerNohns.magicwand.magicwand
    version: 1.2.8
    author: AsgerNohns
    description: You can take your wand and use all the different modes
    commands:
      godwand:
        description: this is the global command for godwand
      gw:
        description: this is the global command for godwand
     
  2. Offline

    MordorKing78

    IDK but i thought you need to set the Yield to zero..

    setYield
     
  3. Offline

    Traks

    Just add
    Code:java
    1. e.setCancelled(true);

    in
    Code:java
    1. if((e.getAction() == Action.LEFT_CLICK_AIR) || (e.getAction() == Action.LEFT_CLICK_BLOCK)){

    It should work then
     
  4. Offline

    Asgernohns

    Assist Traks Thanks for the help. :) Did only think that e.setCancelled() worked in BlockBreakEvents xD
     
  5. Offline

    Minesuchtiiii

    No it works in every event ..!
     
  6. That's not true. Events have to implement Cancellable in order for them to be, never guess, cancellable.
     
  7. Offline

    Minesuchtiiii

    I mean the same thing ..
     
Thread Status:
Not open for further replies.

Share This Page