Add Support / Missile Item split
Dieser Commit ist enthalten in:
Ursprung
2d348c24b5
Commit
bb59140616
@ -48,9 +48,11 @@ public class Config {
|
||||
public static final int ShieldFlyTime;
|
||||
public static final int EndTime;
|
||||
|
||||
static{
|
||||
public static final double MissileChance;
|
||||
|
||||
static {
|
||||
File configfile = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "config.yml");
|
||||
if(!configfile.exists()){
|
||||
if (!configfile.exists()) {
|
||||
Bukkit.getLogger().log(Level.SEVERE, "Config fehlt!");
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
@ -62,6 +64,8 @@ public class Config {
|
||||
ShieldFlyTime = config.getInt("ShieldFlyTime");
|
||||
EndTime = config.getInt("EndTime");
|
||||
|
||||
MissileChance = config.getDouble("MissileChance");
|
||||
|
||||
ConfigurationSection arena = config.getConfigurationSection("Arena");
|
||||
assert arena != null;
|
||||
ArenaMinX = arena.getInt("MinX");
|
||||
|
@ -148,6 +148,11 @@ public class Missile extends SpecialItem {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMissile() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles");
|
||||
if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) {
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
package de.steamwar.misslewars.items;
|
||||
|
||||
import de.steamwar.misslewars.Config;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -26,20 +27,30 @@ import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public abstract class SpecialItem {
|
||||
|
||||
private static final Random random = new Random();
|
||||
|
||||
private static List<SpecialItem> items = new ArrayList<>();
|
||||
private static List<SpecialItem> supportItems = new ArrayList<>();
|
||||
private static List<SpecialItem> missileItems = new ArrayList<>();
|
||||
|
||||
SpecialItem(){
|
||||
items.add(this);
|
||||
SpecialItem() {
|
||||
if (this.isMissile()) {
|
||||
missileItems.add(this);
|
||||
} else {
|
||||
supportItems.add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract ItemStack getItem();
|
||||
public abstract boolean handleUse(Player p);
|
||||
public boolean isMissile() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public ItemStack createItem(Material material, String name, int amount) {
|
||||
return createItem(material, name, amount, new ArrayList<>());
|
||||
@ -56,16 +67,23 @@ public abstract class SpecialItem {
|
||||
return item;
|
||||
}
|
||||
|
||||
public static boolean handleUse(ItemStack item, Player player){
|
||||
for(SpecialItem specialItem : items){
|
||||
if(item.isSimilar(specialItem.getItem())){
|
||||
return specialItem.handleUse(player);
|
||||
}
|
||||
public static boolean handleUse(ItemStack item, Player player) {
|
||||
return handleUse(item, player, missileItems) || handleUse(item, player, supportItems);
|
||||
}
|
||||
|
||||
private static boolean handleUse(ItemStack item, Player player, List<SpecialItem> items) {
|
||||
for (SpecialItem specialItem : items) {
|
||||
if (item.isSimilar(specialItem.getItem())) return specialItem.handleUse(player);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ItemStack getRandomItem(){
|
||||
return items.get(random.nextInt(items.size())).getItem();
|
||||
public static ItemStack getRandomItem() {
|
||||
if (random.nextDouble() > Config.MissileChance) {
|
||||
return supportItems.get(random.nextInt(supportItems.size())).getItem();
|
||||
} else {
|
||||
return missileItems.get(random.nextInt(missileItems.size())).getItem();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren