add BabyParty, update helpCommand

This commit is contained in:
Charlie Wang 2015-08-17 13:24:02 -04:00
parent 5daee8b5f1
commit 5abaffeee7
3 changed files with 59 additions and 4 deletions

View File

@ -0,0 +1,45 @@
package me.cwang.discosheep;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Sheep;
/**
* Created by Charlie on 2015-08-17.
*/
public class BabyParty extends DiscoDecorator {
private int guestBabyCount;
private int sheepBabyCount;
public BabyParty(AbstractParty p, int babyness) {
super(p);
sheepBabyCount = (int) ((babyness / 100.0d) * getSheep());
int totalGuests = 0;
for (int i : getGuestMap().values()) {
totalGuests += i;
}
guestBabyCount = (int) ((babyness / 100.0d) * totalGuests);
}
@Override
protected Entity spawnGuest(EntityType type) {
Entity guest = super.spawnGuest(type);
if (guest instanceof Ageable && guestBabyCount > 0) {
Ageable baby = (Ageable) guest;
baby.setBaby();
--guestBabyCount;
}
return guest;
}
@Override
protected Sheep spawnSheep() {
Sheep sheep = super.spawnSheep();
if (sheepBabyCount > 0) {
sheep.setBaby();
--sheepBabyCount;
}
return sheep;
}
}

View File

@ -60,7 +60,7 @@ public class DiscoCommands implements CommandExecutor {
PartyBuilder builder = new PartyBuilder(player); PartyBuilder builder = new PartyBuilder(player);
// ctor takes "program name" as first arg so we pass the sub-command as that // ctor takes "program name" as first arg so we pass the sub-command as that
// args then start at args[1] so we slice args[1:] // args then start at args[1] so we slice args[1:]
Getopt g = new Getopt(args[0], Arrays.copyOfRange(args, 1, args.length), "n:t:p:r:g:lwjP"); Getopt g = new Getopt(args[0], Arrays.copyOfRange(args, 1, args.length), "n:t:p:r:g:lwjPb:");
int c; int c;
while ((c = g.getopt()) != -1) { while ((c = g.getopt()) != -1) {
@ -111,6 +111,8 @@ public class DiscoCommands implements CommandExecutor {
case 'P': case 'P':
builder.pentatonic(); builder.pentatonic();
break; break;
case 'b':
builder.baby(Integer.parseInt(g.getOptarg()));
} }
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
sender.sendMessage("Bad command: " + e.getMessage()); sender.sendMessage("Bad command: " + e.getMessage());

View File

@ -22,6 +22,7 @@ public class PartyBuilder {
private boolean lightning = false; private boolean lightning = false;
private boolean jeb = false; private boolean jeb = false;
private boolean pentatonic = false; private boolean pentatonic = false;
private int babyness = 0;
public PartyBuilder(Player player) { public PartyBuilder(Player player) {
this.player = player; this.player = player;
@ -115,10 +116,19 @@ public class PartyBuilder {
if (lightning) party = new LightningParty(party); if (lightning) party = new LightningParty(party);
if (jeb) party = new JebParty(party); if (jeb) party = new JebParty(party);
if (pentatonic) party = new PentatonicParty(party); if (pentatonic) party = new PentatonicParty(party);
if (babyness > 0) party = new BabyParty(party, babyness);
return party; return party;
} }
public void pentatonic() {
pentatonic = true;
}
public void baby(int babyness) {
this.babyness = babyness;
}
public AbstractParty buildOther(Player newPlayer) { public AbstractParty buildOther(Player newPlayer) {
Player oldPlayer = player; Player oldPlayer = player;
player = newPlayer; player = newPlayer;
@ -127,7 +137,5 @@ public class PartyBuilder {
return otherParty; return otherParty;
} }
public void pentatonic() {
pentatonic = true;
}
} }