"Various" fixes
This commit is contained in:
		
							parent
							
								
									a74b74addd
								
							
						
					
					
						commit
						dbdcd10a40
					
				| @ -12,6 +12,9 @@ import org.bukkit.entity.Player; | ||||
| import org.bukkit.event.EventHandler; | ||||
| import org.bukkit.event.Listener; | ||||
| import org.bukkit.event.block.BlockBreakEvent; | ||||
| import org.bukkit.inventory.ItemStack; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| 
 | ||||
| public class OnBlockBreak implements Listener { | ||||
| 
 | ||||
| @ -21,46 +24,77 @@ public class OnBlockBreak implements Listener { | ||||
|         Player p = e.getPlayer(); | ||||
| 
 | ||||
|         if(e.getBlock().getType() == Material.MOB_SPAWNER){ | ||||
|             // Allow creative | ||||
|             if(p.getGameMode() == GameMode.CREATIVE) | ||||
|                 return; | ||||
|             Location loc = e.getBlock().getLocation(); | ||||
|             String locSer = Main.serialiseLocation(loc); | ||||
| 
 | ||||
|             // Get spawner-source (unknown, player, admin) | ||||
|             Location loc = e.getBlock().getLocation(); | ||||
|             BlockSource bSource; | ||||
|             Boolean placedByAdmin = Main.data.getBoolean(Main.serialiseLocation(loc)); | ||||
|             Object placedByAdmin = Main.data.get(locSer); | ||||
|             if(placedByAdmin == null) | ||||
|                 bSource = BlockSource.UNKNOWN; | ||||
|             else | ||||
|                 if(!placedByAdmin) | ||||
|             if(!(boolean)placedByAdmin) | ||||
|                 bSource = BlockSource.PLAYER; | ||||
|             else | ||||
|                 bSource = BlockSource.ADMIN; | ||||
| 
 | ||||
|             // Ignore creative | ||||
|             if(p.getGameMode() != GameMode.CREATIVE){ | ||||
| 
 | ||||
|                 // # Break-Prerequisite | ||||
|                 ConfigurationSection breakPreConfig = Main.config.getConfigurationSection("break.break-prerequisite."+ bSource); | ||||
|                 boolean success = false; | ||||
|                 // Silktouch | ||||
|                 if(breakPreConfig.getBoolean("silktouch")){ | ||||
|                 if(!p.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) | ||||
|                     if(p.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) | ||||
|                         success = true; | ||||
|                     else | ||||
|                         e.setCancelled(true); | ||||
|                 } | ||||
|                 // Send msg | ||||
|             String msg = breakPreConfig.getString("msg."+ (e.isCancelled()?"fail":"success")); | ||||
|                 String msg = breakPreConfig.getString("msg."+ (success?"success":"fail")); | ||||
|                 if(msg != null && !msg.equals("")) p.sendMessage(msg); | ||||
| 
 | ||||
|                 // Stop if breaking wasnt successful | ||||
|                 if(!success) return; | ||||
|             } | ||||
| 
 | ||||
|             if(e.isCancelled()) return; | ||||
| 
 | ||||
|             // Remove block from data | ||||
|             if(bSource != BlockSource.UNKNOWN){ | ||||
|                 Main.data.set(locSer, null); | ||||
|                 try { | ||||
|                     Main.data.save("data.yml"); | ||||
|                 } catch (IOException ex) { | ||||
|                     Main.plugin.getLogger().severe("Cannot save data to data.yml! Data will lost after restart!"); | ||||
|                     ex.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             // Ignore creative | ||||
|             if(p.getGameMode() != GameMode.CREATIVE){ | ||||
| 
 | ||||
|                 // # Drop-Prerequisite | ||||
|                 ConfigurationSection dropPreConfig = Main.config.getConfigurationSection("break.drop-prerequisite."+ bSource); | ||||
|                 boolean success = false; | ||||
|                 // Silktouch | ||||
|             if(breakPreConfig.getBoolean("silktouch")){ | ||||
|                 if(!p.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) | ||||
|                     e.setDropItems(false); | ||||
|                 if(dropPreConfig.getBoolean("silktouch")){ | ||||
|                     if(p.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) | ||||
|                         success = true; | ||||
|                     else | ||||
|                         e.setCancelled(true); | ||||
|                 } | ||||
| 
 | ||||
|                 // Set drop | ||||
|                 if(success){ | ||||
|                     ItemStack item = new ItemStack(Material.MOB_SPAWNER); | ||||
|                     loc.getWorld().dropItem(loc, item); | ||||
|                 } | ||||
| 
 | ||||
|                 // Send msg | ||||
|             msg = dropPreConfig.getString("msg."+ (e.isDropItems()?"success":"fail")); | ||||
|                 String msg = dropPreConfig.getString("msg."+ (success?"success":"fail")); | ||||
|                 if(msg != null && !msg.equals("")) p.sendMessage(msg); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -4,6 +4,7 @@ import eu.railduction.ruakij.spawnerDrops.Main; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.Material; | ||||
| import org.bukkit.entity.Player; | ||||
| import org.bukkit.event.EventHandler; | ||||
| import org.bukkit.event.Listener; | ||||
| import org.bukkit.event.block.BlockPlaceEvent; | ||||
| 
 | ||||
| @ -11,6 +12,7 @@ import java.io.IOException; | ||||
| 
 | ||||
| public class OnBlockPlace implements Listener { | ||||
| 
 | ||||
|     @EventHandler | ||||
|     public void onBlockPlaceEvent(BlockPlaceEvent e){ | ||||
| 
 | ||||
|         Player p = e.getPlayer(); | ||||
| @ -20,18 +22,22 @@ public class OnBlockPlace implements Listener { | ||||
| 
 | ||||
|             // Can break? | ||||
|             boolean isAdmin = p.hasPermission("spawnerDrops.admin"); | ||||
|             if(!isAdmin && !Main.config.getBoolean("place.player.canPlace")){ | ||||
|             if(!isAdmin && !Main.config.getBoolean("place.PLAYER.canPlace")){ | ||||
| 
 | ||||
|                 // Cancel place-event | ||||
|                 e.setCancelled(true); | ||||
| 
 | ||||
|                 // Send msg | ||||
|                 String msg = Main.config.getString("place.player.msg.fail"); | ||||
|                 String msg = Main.config.getString("place.PLAYER.msg.fail"); | ||||
|                 if(msg != null && !msg.equals("")) p.sendMessage(msg); | ||||
| 
 | ||||
|                 return; | ||||
|             } | ||||
|             else{ | ||||
| 
 | ||||
|             // Write place-data | ||||
|             Main.plugin.getLogger().info(Main.serialiseLocation(loc) +" - "+ isAdmin); | ||||
|             Main.data.set(Main.serialiseLocation(loc), isAdmin); | ||||
| 
 | ||||
|             try { | ||||
|                 Main.data.save("data.yml"); | ||||
|             } catch (IOException ex) { | ||||
| @ -40,9 +46,8 @@ public class OnBlockPlace implements Listener { | ||||
|             } | ||||
| 
 | ||||
|             // Send msg | ||||
|                 String msg = Main.config.getString("place.player.msg.success"); | ||||
|             String msg = Main.config.getString("place."+ (isAdmin?"ADMIN":"PLAYER") +".msg.success"); | ||||
|             if(msg != null && !msg.equals("")) p.sendMessage(msg); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user