added config file for default guests
This commit is contained in:
parent
e73f0414d2
commit
d8cd43891a
@ -40,7 +40,7 @@ public class BaaBaaBlockSheepEvents implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// actually make sheep invincible
|
// actually make sheep and other guests invincible
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onLivingEntityDamageEvent(EntityDamageEvent e) {
|
public void onLivingEntityDamageEvent(EntityDamageEvent e) {
|
||||||
if (e.getEntity() instanceof Sheep) {
|
if (e.getEntity() instanceof Sheep) {
|
||||||
@ -53,6 +53,7 @@ public class BaaBaaBlockSheepEvents implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (DiscoParty party : parent.getParties()) {
|
for (DiscoParty party : parent.getParties()) {
|
||||||
if (party.getGuestList().contains(e.getEntity())) {
|
if (party.getGuestList().contains(e.getEntity())) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
@ -34,15 +34,14 @@ public class DiscoParty {
|
|||||||
static int defaultPeriod = 10; // ticks per state change
|
static int defaultPeriod = 10; // ticks per state change
|
||||||
static int defaultRadius = 5;
|
static int defaultRadius = 5;
|
||||||
static int defaultSheep = 10;
|
static int defaultSheep = 10;
|
||||||
static int defaultCreepers = 1;
|
|
||||||
static float defaultSheepJump = 0.35f;
|
static float defaultSheepJump = 0.35f;
|
||||||
static int maxDuration = 2400; // 120 seconds
|
static int maxDuration = 2400; // 120 seconds
|
||||||
static int maxSheep = 100;
|
static int maxSheep = 100;
|
||||||
static int maxRadius = 100;
|
static int maxRadius = 100;
|
||||||
static int minPeriod = 5; // 0.25 seconds
|
static int minPeriod = 5; // 0.25 seconds
|
||||||
static int maxPeriod = 40; // 2.0 seconds
|
static int maxPeriod = 40; // 2.0 seconds
|
||||||
static int maxCreepers = 5;
|
|
||||||
private HashMap<String, Integer> guestNumbers = new HashMap<String, Integer>();
|
private HashMap<String, Integer> guestNumbers = new HashMap<String, Integer>();
|
||||||
|
static HashMap<String, Integer> defaultGuestNumbers = new HashMap<String, Integer>();
|
||||||
private boolean doFireworks = false;
|
private boolean doFireworks = false;
|
||||||
private boolean doJump = true;
|
private boolean doJump = true;
|
||||||
private int duration, period, radius, sheep;
|
private int duration, period, radius, sheep;
|
||||||
@ -71,6 +70,8 @@ public class DiscoParty {
|
|||||||
this.period = DiscoParty.defaultPeriod;
|
this.period = DiscoParty.defaultPeriod;
|
||||||
this.radius = DiscoParty.defaultRadius;
|
this.radius = DiscoParty.defaultRadius;
|
||||||
this.sheep = DiscoParty.defaultSheep;
|
this.sheep = DiscoParty.defaultSheep;
|
||||||
|
|
||||||
|
this.guestNumbers = DiscoParty.getDefaultGuestNumbers();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DiscoParty(DiscoSheep parent) {
|
public DiscoParty(DiscoSheep parent) {
|
||||||
@ -79,6 +80,7 @@ public class DiscoParty {
|
|||||||
this.period = DiscoParty.defaultPeriod;
|
this.period = DiscoParty.defaultPeriod;
|
||||||
this.radius = DiscoParty.defaultRadius;
|
this.radius = DiscoParty.defaultRadius;
|
||||||
this.sheep = DiscoParty.defaultSheep;
|
this.sheep = DiscoParty.defaultSheep;
|
||||||
|
this.guestNumbers = DiscoParty.getDefaultGuestNumbers();
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy but with new player
|
// copy but with new player
|
||||||
@ -101,6 +103,10 @@ public class DiscoParty {
|
|||||||
return guestList;
|
return guestList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HashMap<String, Integer> getDefaultGuestNumbers() {
|
||||||
|
return defaultGuestNumbers;
|
||||||
|
}
|
||||||
|
|
||||||
public int getSheep() {
|
public int getSheep() {
|
||||||
return this.sheep;
|
return this.sheep;
|
||||||
}
|
}
|
||||||
@ -227,8 +233,8 @@ public class DiscoParty {
|
|||||||
void spawnSheep(World world, Location loc) {
|
void spawnSheep(World world, Location loc) {
|
||||||
Sheep newSheep = (Sheep) world.spawnEntity(loc, EntityType.SHEEP);
|
Sheep newSheep = (Sheep) world.spawnEntity(loc, EntityType.SHEEP);
|
||||||
newSheep.setColor(discoColours[(int) (Math.random() * (discoColours.length - 1))]);
|
newSheep.setColor(discoColours[(int) (Math.random() * (discoColours.length - 1))]);
|
||||||
newSheep.setBreed(false); // this prevents breeding - no event listener required
|
newSheep.setBreed(false); // this prevents breeding - no event listener required
|
||||||
newSheep.teleport(loc); // teleport is needed to set orientation
|
newSheep.teleport(loc); // teleport is needed to set orientation
|
||||||
getSheepList().add(newSheep);
|
getSheepList().add(newSheep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,7 +245,7 @@ public class DiscoParty {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mark all guests for removal, then clear the array
|
// Mark all guests for removal, then clear the array
|
||||||
void removeAllGuests() {
|
void removeAll() {
|
||||||
for (Sheep sheeple : getSheepList()) {
|
for (Sheep sheeple : getSheepList()) {
|
||||||
sheeple.remove();
|
sheeple.remove();
|
||||||
}
|
}
|
||||||
@ -417,14 +423,13 @@ public class DiscoParty {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void startDisco() {
|
void startDisco() {
|
||||||
this.guestNumbers.put("CREEPER", 5);
|
|
||||||
this.spawnAll(sheep, radius);
|
this.spawnAll(sheep, radius);
|
||||||
this.scheduleUpdate();
|
this.scheduleUpdate();
|
||||||
ds.getPartyMap().put(this.player.getName(), this);
|
ds.getPartyMap().put(this.player.getName(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stopDisco() {
|
void stopDisco() {
|
||||||
removeAllGuests();
|
removeAll();
|
||||||
this.duration = 0;
|
this.duration = 0;
|
||||||
if (updater != null) {
|
if (updater != null) {
|
||||||
updater.cancel();
|
updater.cancel();
|
||||||
|
@ -7,6 +7,7 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@ -22,6 +23,7 @@ public final class DiscoSheep extends JavaPlugin {
|
|||||||
static final String PERMISSION_CHANGEDEFAULTS = "discosheep.changedefaults";
|
static final String PERMISSION_CHANGEDEFAULTS = "discosheep.changedefaults";
|
||||||
static final String PERMISSION_SAVECONFIG = "discosheep.saveconfig";
|
static final String PERMISSION_SAVECONFIG = "discosheep.saveconfig";
|
||||||
static final String PERMISSION_ONJOIN = "discosheep.onjoin";
|
static final String PERMISSION_ONJOIN = "discosheep.onjoin";
|
||||||
|
static final String PERMISSION_SPAWNGUESTS = "discosheep.spawnguests";
|
||||||
Map<String, DiscoParty> parties = new HashMap<String, DiscoParty>();
|
Map<String, DiscoParty> parties = new HashMap<String, DiscoParty>();
|
||||||
private BaaBaaBlockSheepEvents blockEvents = new BaaBaaBlockSheepEvents(this);
|
private BaaBaaBlockSheepEvents blockEvents = new BaaBaaBlockSheepEvents(this);
|
||||||
FileConfiguration config;
|
FileConfiguration config;
|
||||||
@ -45,6 +47,22 @@ public final class DiscoSheep extends JavaPlugin {
|
|||||||
config.addDefault("default.duration", toSeconds_i(DiscoParty.defaultDuration));
|
config.addDefault("default.duration", toSeconds_i(DiscoParty.defaultDuration));
|
||||||
config.addDefault("default.period-ticks", DiscoParty.defaultPeriod);
|
config.addDefault("default.period-ticks", DiscoParty.defaultPeriod);
|
||||||
|
|
||||||
|
Map<String, Integer> defaultGuests = new HashMap<String, Integer>();
|
||||||
|
|
||||||
|
|
||||||
|
// create a default hashmap of <EntityType, 0> for all living entities
|
||||||
|
// this creates a default config entry with all living entites present
|
||||||
|
// except for bosses (they throw NPE for some reason)
|
||||||
|
for (EntityType ent : EntityType.values()) {
|
||||||
|
if (ent.isAlive() && !ent.equals(EntityType.ENDER_DRAGON) && !ent.equals(EntityType.WITHER)) {
|
||||||
|
defaultGuests.put(ent.toString(), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Map.Entry<String, Integer> entry : defaultGuests.entrySet()) {
|
||||||
|
config.addDefault("default.guests." + entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
loadConfigFromDisk();
|
loadConfigFromDisk();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,6 +79,11 @@ public final class DiscoSheep extends JavaPlugin {
|
|||||||
DiscoParty.defaultRadius = getConfig().getInt("default.radius");
|
DiscoParty.defaultRadius = getConfig().getInt("default.radius");
|
||||||
DiscoParty.defaultDuration = toTicks(getConfig().getInt("default.duration"));
|
DiscoParty.defaultDuration = toTicks(getConfig().getInt("default.duration"));
|
||||||
DiscoParty.defaultPeriod = getConfig().getInt("default.period-ticks");
|
DiscoParty.defaultPeriod = getConfig().getInt("default.period-ticks");
|
||||||
|
|
||||||
|
for (String key : getConfig().getConfigurationSection("default.guests").getKeys(false)) {
|
||||||
|
DiscoParty.getDefaultGuestNumbers().put(key, getConfig().getInt("default.guests." + key));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void reloadConfigFromDisk() {
|
void reloadConfigFromDisk() {
|
||||||
@ -77,6 +100,10 @@ public final class DiscoSheep extends JavaPlugin {
|
|||||||
config.set("default.radius", DiscoParty.defaultRadius);
|
config.set("default.radius", DiscoParty.defaultRadius);
|
||||||
config.set("default.duration", toSeconds_i(DiscoParty.defaultDuration));
|
config.set("default.duration", toSeconds_i(DiscoParty.defaultDuration));
|
||||||
config.set("default.period-ticks", DiscoParty.defaultPeriod);
|
config.set("default.period-ticks", DiscoParty.defaultPeriod);
|
||||||
|
|
||||||
|
for (Map.Entry<String, Integer> entry : DiscoParty.getDefaultGuestNumbers().entrySet()) {
|
||||||
|
config.addDefault("default.guests." + entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
saveConfig();
|
saveConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,7 +133,6 @@ public final class DiscoSheep extends JavaPlugin {
|
|||||||
return new ArrayList(this.getPartyMap().values());
|
return new ArrayList(this.getPartyMap().values());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void stopParty(String name) {
|
public void stopParty(String name) {
|
||||||
if (this.hasParty(name)) {
|
if (this.hasParty(name)) {
|
||||||
this.getParty(name).stopDisco();
|
this.getParty(name).stopDisco();
|
||||||
|
Loading…
Reference in New Issue
Block a user