Add configuration
This commit is contained in:
parent
7df836845d
commit
d18c504825
|
@ -1,73 +1,91 @@
|
||||||
package gg.wildfrontier.goldpanning;
|
package gg.wildfrontier.goldpanning;
|
||||||
import java.io.Console;
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
|
|
||||||
public class GoldPan implements Runnable {
|
public class GoldPan implements Runnable {
|
||||||
JavaPlugin plugin;
|
JavaPlugin plugin;
|
||||||
Inventory goldpan;
|
Inventory goldpan;
|
||||||
|
String pan;
|
||||||
Player player;
|
Player player;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int maxcount;
|
int cycles, delaymin, delaymax;
|
||||||
public GoldPan(JavaPlugin plugin, Player player, String name) {
|
List<PanItem> items = new ArrayList<PanItem>();
|
||||||
|
public GoldPan(JavaPlugin plugin, Player player, String pan) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.maxcount = (int)(Math.random()*50+5);
|
this.pan = pan;
|
||||||
|
int cyclesmin = plugin.getConfig().getInt("cycles.min");
|
||||||
|
int cyclesmax = plugin.getConfig().getInt("cycles.max");
|
||||||
|
this.cycles = (int)(Math.random()*cyclesmax+cyclesmin);
|
||||||
|
this.delaymin = plugin.getConfig().getInt("cycles.delaymin");
|
||||||
|
this.delaymax = plugin.getConfig().getInt("cycles.delaymax");
|
||||||
|
|
||||||
this.goldpan = Bukkit.createInventory(this.player, 54, name);
|
ConfigurationSection items = plugin.getConfig().getConfigurationSection("pans."+pan+".items");
|
||||||
|
for (String item : items.getKeys(false)) {
|
||||||
|
int chance = plugin.getConfig().getInt("pans."+pan+".items."+item+".chance");
|
||||||
|
int adddelaymin = plugin.getConfig().getInt("pans."+pan+".items."+item+".delay.add.min");
|
||||||
|
int adddelaymax = plugin.getConfig().getInt("pans."+pan+".items."+item+".delay.add.max");
|
||||||
|
int removedelaymin = plugin.getConfig().getInt("pans."+pan+".items."+item+".delay.remove.min");
|
||||||
|
int removedelaymax = plugin.getConfig().getInt("pans."+pan+".items."+item+".delay.remove.max");
|
||||||
|
plugin.getLogger().log(Level.INFO, item+String.valueOf(chance));
|
||||||
|
this.items.add(new PanItem(item, chance, adddelaymin, adddelaymax,
|
||||||
|
removedelaymin, removedelaymax));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//create and open an inventory
|
||||||
|
String displayname = plugin.getConfig().getString("pans."+pan+".name");
|
||||||
|
this.goldpan = Bukkit.createInventory(this.player, 54, displayname);
|
||||||
this.player.openInventory(this.goldpan);
|
this.player.openInventory(this.goldpan);
|
||||||
|
//kick it off
|
||||||
run();
|
run();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
ItemStack goldnugget = new ItemStack(Material.getMaterial("GOLD_NUGGET"), 1);
|
if(count>cycles) {
|
||||||
ItemStack gravel = new ItemStack(Material.GRAVEL, 1);
|
|
||||||
|
|
||||||
if(count>maxcount) {
|
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
for (PanItem item : this.items) {
|
||||||
int slot = (int)(Math.random()*54);
|
int slot = (int)(Math.random()*54);
|
||||||
if((Math.random()*100)<75) {
|
if(item.spawn()) {
|
||||||
new AddItem(slot, goldnugget);
|
new AddItem(slot, item);
|
||||||
}
|
}
|
||||||
slot = (int)(Math.random()*54);
|
|
||||||
if((Math.random()*100)<90) {
|
|
||||||
new AddItem(slot, gravel);
|
|
||||||
}
|
}
|
||||||
Bukkit.getScheduler().runTaskLater(plugin, this, (int)(Math.random()*25+5));
|
|
||||||
plugin.getLogger().log(Level.INFO, String.valueOf(count));
|
Bukkit.getScheduler().runTaskLater(plugin, this, (int)(Math.random()*delaymax+delaymin));
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class AddItem implements Runnable {
|
private class AddItem implements Runnable {
|
||||||
int slot;
|
int slot;
|
||||||
ItemStack item;
|
PanItem item;
|
||||||
private AddItem(int slot, ItemStack item) {
|
private AddItem(int slot, PanItem item) {
|
||||||
this.slot = slot;
|
this.slot = slot;
|
||||||
this.item = item;
|
this.item = item;
|
||||||
Bukkit.getScheduler().runTaskLater(plugin, this, (int)(Math.random()*25+5));
|
Bukkit.getScheduler().runTaskLater(plugin, this, item.getAddDelay());
|
||||||
}
|
}
|
||||||
public void run() {
|
public void run() {
|
||||||
goldpan.setItem(slot, item);
|
goldpan.setItem(slot, item);
|
||||||
new RemoveItem(slot);
|
new RemoveItem(slot, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class RemoveItem implements Runnable {
|
private class RemoveItem implements Runnable {
|
||||||
int slot;
|
int slot;
|
||||||
private RemoveItem(int slot) {
|
private RemoveItem(int slot, PanItem item) {
|
||||||
this.slot = slot;
|
this.slot = slot;
|
||||||
Bukkit.getScheduler().runTaskLater(plugin, this, (int)(Math.random()*25+5));
|
Bukkit.getScheduler().runTaskLater(plugin, this, item.getRemoveDelay());
|
||||||
}
|
}
|
||||||
public void run() {
|
public void run() {
|
||||||
goldpan.setItem(slot, null);
|
goldpan.setItem(slot, null);
|
||||||
|
|
Loading…
Reference in New Issue