Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pomoc w pluginie


us3rn0tf0und

Rekomendowane odpowiedzi

Opublikowano

Jak w temacie :

 

Main:

 

 

package me.scoreboard.mxdrop;

import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{
	
	private static Main instance;
	public static List<ItemToDrop> drops = new ArrayList<ItemToDrop>();
	
	public void onEnable() {
		instance = this;
		saveDefaultConfig();
		DataLoader.loadBlocks();
		DataLoader.loadMobs();
		Bukkit.getPluginManager().registerEvents(new BlockBreakListener(), this);
		Bukkit.getPluginManager().registerEvents(new EntityDeathListener(), this);
	}
	
	public void onDisable() {}

	public static Main getInst() {
		return instance;
	}
}

 

 

Utils

 

package me.scoreboard.mxdrop;

import java.util.Random;

import org.apache.commons.lang.Validate;

public class Utils {

	private static final Random RAND = new Random();
	
	public static int getRandInt(int min, int max) throws IllegalArgumentException{
		Validate.isTrue(max > min, "Max can't be smaller than min!");
		return RAND.nextInt(max - min + 1) + min;
	}
	
	public static double getRandDouble(double min, double max) throws IllegalArgumentException{
		Validate.isTrue(max > min, "Max can't be smaller than min!");
		return RAND.nextDouble() * (max - min) + min;
	}
	
	public static boolean getChance(double chance){
		return (chance >= 100) || (chance >= getRandDouble(0, 100));
	}
	
	public static void ERROR(String msg){
		System.out.println("[ERROR] " + msg);
	}
}

 

 

ItemToDrop

 

package me.scoreboard.mxdrop;

import java.util.List;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;

public class ItemToDrop {
	private DropType type;
	private EntityType fromEnt;
	private Material fromBlock;
	private ItemStack drop;
	private double chance;
	private int minY;
	private int minAmount;
	private int maxAmount;
	private boolean useY;
	private boolean useTool;
	private List<Material> tools;

	public DropType getType() {
		return this.type;
	}

	public EntityType getMob() {
		return this.fromEnt;
	}

	public Material getBlock() {
		return this.fromBlock;
	}

	public ItemStack getDrop() {
		return this.drop;
	}

	public double getChance() {
		return this.chance;
	}

	public int getMinY() {
		return this.minY;
	}

	public int getMinAmount() {
		return this.minAmount;
	}

	public int getMaxAmount() {
		return this.maxAmount;
	}

	public boolean getUseY() {
		return this.useY;
	}

	public boolean getUseTools() {
		return this.useTool;
	}

	public List<Material> getTools() {
		return this.tools;
	}

	public void setType(DropType type) {
		this.type = type;
	}

	public void setMob(EntityType type) {
		this.fromEnt = type;
	}

	public void setBlock(Material block) {
		this.fromBlock = block;
	}

	public void setDrop(ItemStack drop) {
		this.drop = drop;
	}

	public void setChance(double chance) {
		this.chance = chance;
	}

	public void setMinY(int minY) {
		this.minY = minY;
	}

	public void setMinAmount(int minAmount) {
		this.minAmount = minAmount;
	}

	public void setMaxAmount(int maxAmount) {
		this.maxAmount = maxAmount;
	}

	public void setUseY(Boolean useY) {
		this.useY = useY.booleanValue();
	}

	public void setUseTools(Boolean useTool) {
		this.useTool = useTool.booleanValue();
	}

	public void setTools(List<Material> tools) {
		this.tools = tools;
	}
}

 

 

DropType

 

package me.scoreboard.mxdrop;

public enum DropType {

		MOB,
		BLOCK
	}

 

 

DataLoader

 

package me.scoreboard.mxdrop;

import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;

public class DataLoader{

	public static void loadBlocks(){
		ConfigurationSection cs1 = Main.getInst().getConfig().getConfigurationSection("blockDrop");
		for(String s : cs1.getKeys(false)){
			ItemToDrop drop = new ItemToDrop();
			drop.setType(DropType.BLOCK);
			ConfigurationSection cs = cs1.getConfigurationSection(s);
			Material from = Material.matchMaterial(cs.getString("from").toUpperCase());
			if(from == null){
				Utils.ERROR(s + " -> wrong 'from' type");
				Bukkit.getPluginManager().disablePlugin(Main.getInst());
			}
			drop.setBlock(from);
			Material dm = Material.matchMaterial(cs.getString("drop").toUpperCase());
			if(dm == null){
				Utils.ERROR(s + " -> wrong 'drop' type");
				Bukkit.getPluginManager().disablePlugin(Main.getInst());
			}
			drop.setDrop(new ItemStack(dm, 1, (short) (cs.get("dropData") !=null ? (short)cs.getInt("dropData") : 0)));
			drop.setChance(cs.getDouble("chance"));
			drop.setUseY(cs.getBoolean("useY"));
			if(cs.getBoolean("useY")){
				drop.setMinY(cs.getInt("minY"));
			}
			drop.setMinAmount(cs.getInt("minAmount"));
			drop.setMaxAmount(cs.getInt("maxAmount"));
			drop.setUseTools(cs.getBoolean("useTools"));
			if(cs.getBoolean("useTools")){
				List<Material> m = new ArrayList<Material>();
				for(String t : cs.getStringList("tools")){
					Material tm = Material.matchMaterial(t.toUpperCase());
					if(tm == null){
						Utils.ERROR(s + " -> wrong 'tools' content");
						Bukkit.getPluginManager().disablePlugin(Main.getInst());
					}
					m.add(tm);
				}
				drop.setTools(m);
			}
			Main.drops.add(drop);
		}
	}
	@SuppressWarnings("deprecation")
	public static void loadMobs(){
		ConfigurationSection cs1 = Main.getInst().getConfig().getConfigurationSection("mobDrop");
		for(String s : cs1.getKeys(false)){
			ItemToDrop drop = new ItemToDrop();
			drop.setType(DropType.MOB);
			ConfigurationSection cs = cs1.getConfigurationSection(s);
			if(EntityType.fromName(cs.getString("from").toUpperCase()) == null){
				Utils.ERROR(s + " -> wrong 'from' type");
				Bukkit.getPluginManager().disablePlugin(Main.getInst());
			}
			drop.setMob(EntityType.fromName(cs.getString("from").toUpperCase()));
			Material dm = Material.matchMaterial(cs.getString("drop").toUpperCase());
			if(dm == null){
				Utils.ERROR(s + " -> wrong 'drop' type");
				Bukkit.getPluginManager().disablePlugin(Main.getInst());
			}
			drop.setDrop(new ItemStack(dm, 1, (short) (cs.get("dropData") !=null ? (short)cs.getInt("dropData") : 0)));
			drop.setChance(cs.getDouble("chance"));
			drop.setMinAmount(cs.getInt("minAmount"));
			drop.setMaxAmount(cs.getInt("maxAmount"));
			drop.setUseTools(cs.getBoolean("useTools"));
			if(cs.getBoolean("useTools")){
				List<Material> m = new ArrayList<Material>();
				for(String t : cs.getStringList("tools")){
					Material tm = Material.matchMaterial(t.toUpperCase());
					if(tm == null){
						Utils.ERROR(s + " -> wrong 'tools' content");
						Bukkit.getPluginManager().disablePlugin(Main.getInst());
					}
					m.add(tm);
				}
				drop.setTools(m);
			}
			Main.drops.add(drop);
		}
	}
}

 

 

 

BlockBreakerListener

 

package me.scoreboard.mxdrop;

import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.ExperienceOrb;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;

public class BlockBreakListener implements Listener{

	@EventHandler
	public void onBreak(BlockBreakEvent e){
		if(e.isCancelled()) return;
		for(ItemToDrop i : Main.drops){
			if(i.getType().equals(DropType.BLOCK)){
				if(Utils.getChance(i.getChance())){
					if(i.getBlock().equals(e.getBlock().getType())){
						if(!i.getUseY() || e.getBlock().getY() <= i.getMinY()){
							if(!i.getUseTools() || i.getTools().contains(e.getPlayer().getItemInHand().getType())){
								ItemStack toDrop = i.getDrop();
								int amount = Utils.getRandInt(i.getMinAmount() + e.getPlayer().getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS),
										i.getMaxAmount() + e.getPlayer().getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS));
								toDrop.setAmount(amount);
								e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation(), toDrop);
								e.getBlock().getWorld().spawn(e.getBlock().getLocation(), ExperienceOrb.class).setExperience(1
										+ e.getPlayer().getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS));;
							}
						}
					}
				}
			}
		}
	}
}

 

 

 

I tu gdzie mam jeden error: ( pisze : Syntax error, insert "}" to complete ClassBody)

EntityDeathListener 

UWAGA , RAK MUZGU XDDD

 

 

package me.scoreboard.mxdrop;

import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.inventory.ItemStack;

public class EntityDeathListener implements Listener{

	@EventHandler
	public void onDeath(EntityDeathEvent e){
		for(ItemToDrop i : Main.drops){
			if(i.getType().equals(DropType.MOB)){
				if(Utils.getChance(i.getChance())){
					if(i.getMob().equals(e.getEntityType())){
						if(e.getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent){
							EntityDamageByEntityEvent ed = (EntityDamageByEntityEvent) e.getEntity().getLastDamageCause();
							if(ed.getDamager() instanceof Player){
								Player p = (Player) ed.getDamager();
								if(!i.getUseTools() || i.getTools().contains(p.getItemInHand().getType())){
									ItemStack toDrop = i.getDrop();
									int amount = Utils.getRandInt(i.getMinAmount() + p.getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS),
											i.getMaxAmount() + p.getItemInHand().getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS));
									toDrop.setAmount(amount);
									e.getEntity().getWorld().dropItemNaturally(e.getEntity().getLocation(), toDrop);
								}
							}
						}
					}
				}
			}
		}
	}

 

 

Wszystko pod jave 8 , prosze o pomoc

Opublikowano
I tu gdzie mam jeden error: ( pisze : Syntax error, insert "}" to complete ClassBody)

No nie zamknąłeś klasy znacznikiem '}', więc o ile nie piszesz tego w notatniku, to powinno tobie to podkreślić...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...