/******************************************************************************* * Copyright 2014 Tobias Welther * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package de.tobiyas.racesandclasses.util.items; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.bukkit.inventory.ItemStack; public class DropContainer { private int expMin; private int expMax; private Random rand; private ArrayList<ItemContainer> items; public DropContainer(int expMin, int expMax){ this.expMin = expMin; this.expMax = expMax; this.items = new ArrayList<ItemContainer>(); this.rand = new Random(); } public DropContainer(int exp){ this.expMin = exp; this.expMax = -1; this.items = new ArrayList<ItemContainer>(); this.rand = new Random(); } public void addItem(int itemID, int damageValue, int minAmount, int maxAmount, double probability, int randomEnchants){ ItemContainer container = new ItemContainer(itemID, damageValue, minAmount, maxAmount, probability, randomEnchants); items.add(container); } public void addItem(int itemID, int damageValue, int minAmount, int maxAmount, double probability){ ItemContainer container = new ItemContainer(itemID, damageValue, minAmount, maxAmount, probability); items.add(container); } public void addItem(int itemID, int minAmount, int maxAmount, double probability){ addItem(itemID, -1, minAmount, maxAmount, probability); } public void addItem(int itemID, int amount){ addItem(itemID, amount, -1, 100); } public void addItem(int itemID, int minAmount, int maxAmount){ addItem(itemID, -1, minAmount, maxAmount); } public void parseString(String itemString) throws Exception{ String[] stringSplit = itemString.split(";"); String tempItemID = stringSplit[0]; int itemID = -1; int damageValue = -1; if(tempItemID.contains("-")){ String[] tempSplit = tempItemID.split("-"); itemID = Integer.valueOf(tempSplit[0]); damageValue = Integer.valueOf(tempSplit[1]); }else itemID = Integer.valueOf(tempItemID); int minAmount = -1; int maxAmount = -1; String amount = stringSplit[1]; if(amount.contains("-")){ String[] tempSplit = amount.split("-"); minAmount = Integer.valueOf(tempSplit[0]); maxAmount = Integer.valueOf(tempSplit[1]); }else minAmount = Integer.valueOf(amount); double probability = 100; if(stringSplit.length >= 3) probability = Double.valueOf(stringSplit[2]); int randomEnchants = 0; if(stringSplit.length >= 4) randomEnchants = Integer.valueOf(stringSplit[3]); if(randomEnchants == 0) addItem(itemID, damageValue, minAmount, maxAmount, probability); else addItem(itemID, damageValue, minAmount, maxAmount, probability, randomEnchants); } public int getEXP() { if(expMax == -1) return expMin; int range = expMax - expMin; int exp = expMin + rand.nextInt(range + 1); return exp; } public List<ItemStack> getItems() { ArrayList<ItemStack> stack = new ArrayList<ItemStack>(); for(ItemContainer container : items){ ItemStack item = container.generateItemStack(); if(item != null) stack.add(item); } return stack; } }