SteamWar/MissileWars
Archiviert
13
0

Add Support / Missile Item split

Dieser Commit ist enthalten in:
jojo 2020-09-27 16:45:59 +02:00
Ursprung 2d348c24b5
Commit bb59140616
3 geänderte Dateien mit 40 neuen und 13 gelöschten Zeilen

Datei anzeigen

@ -48,6 +48,8 @@ public class Config {
public static final int ShieldFlyTime; public static final int ShieldFlyTime;
public static final int EndTime; public static final int EndTime;
public static final double MissileChance;
static { static {
File configfile = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "config.yml"); File configfile = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "config.yml");
if (!configfile.exists()) { if (!configfile.exists()) {
@ -62,6 +64,8 @@ public class Config {
ShieldFlyTime = config.getInt("ShieldFlyTime"); ShieldFlyTime = config.getInt("ShieldFlyTime");
EndTime = config.getInt("EndTime"); EndTime = config.getInt("EndTime");
MissileChance = config.getDouble("MissileChance");
ConfigurationSection arena = config.getConfigurationSection("Arena"); ConfigurationSection arena = config.getConfigurationSection("Arena");
assert arena != null; assert arena != null;
ArenaMinX = arena.getInt("MinX"); ArenaMinX = arena.getInt("MinX");

Datei anzeigen

@ -148,6 +148,11 @@ public class Missile extends SpecialItem {
return true; return true;
} }
@Override
public boolean isMissile() {
return true;
}
public static void init() { public static void init() {
File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles"); File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles");
if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) { if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) {

Datei anzeigen

@ -19,6 +19,7 @@
package de.steamwar.misslewars.items; package de.steamwar.misslewars.items;
import de.steamwar.misslewars.Config;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -26,20 +27,30 @@ import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; 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 { public abstract class SpecialItem {
private static final Random random = new Random(); 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() { SpecialItem() {
items.add(this); if (this.isMissile()) {
missileItems.add(this);
} else {
supportItems.add(this);
}
} }
public abstract ItemStack getItem(); public abstract ItemStack getItem();
public abstract boolean handleUse(Player p); public abstract boolean handleUse(Player p);
public boolean isMissile() {
return false;
}
public ItemStack createItem(Material material, String name, int amount) { public ItemStack createItem(Material material, String name, int amount) {
return createItem(material, name, amount, new ArrayList<>()); return createItem(material, name, amount, new ArrayList<>());
@ -57,15 +68,22 @@ public abstract class SpecialItem {
} }
public static boolean handleUse(ItemStack item, Player player) { public static boolean handleUse(ItemStack item, Player player) {
for(SpecialItem specialItem : items){ return handleUse(item, player, missileItems) || handleUse(item, player, supportItems);
if(item.isSimilar(specialItem.getItem())){
return specialItem.handleUse(player);
} }
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; return false;
} }
public static ItemStack getRandomItem() { public static ItemStack getRandomItem() {
return items.get(random.nextInt(items.size())).getItem(); if (random.nextDouble() > Config.MissileChance) {
return supportItems.get(random.nextInt(supportItems.size())).getItem();
} else {
return missileItems.get(random.nextInt(missileItems.size())).getItem();
} }
} }
}