mirror of
https://github.com/PikaMug/Quests.git
synced 2025-02-19 22:11:40 +01:00
+ Changed way of spawning mobs with an event.
This commit is contained in:
parent
35971be829
commit
526e6f28dc
27
pom.xml
27
pom.xml
@ -1,5 +1,4 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>me.blackvein.quests</groupId>
|
<groupId>me.blackvein.quests</groupId>
|
||||||
@ -12,7 +11,6 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<libs.dir>${project.basedir}/lib</libs.dir>
|
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
@ -53,7 +51,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.aufdemrand</groupId>
|
<groupId>net.aufdemrand</groupId>
|
||||||
<artifactId>denizen</artifactId>
|
<artifactId>denizen</artifactId>
|
||||||
<version>0.9.2-SNAPSHOT</version>
|
<version>0.9.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.milkbowl.vault</groupId>
|
<groupId>net.milkbowl.vault</groupId>
|
||||||
@ -70,7 +68,7 @@
|
|||||||
<artifactId>EpicBoss</artifactId>
|
<artifactId>EpicBoss</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${libs.dir}/EpicBossRecoded.jar</systemPath>
|
<systemPath>${project.basedir}/lib/EpicBossRecoded.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
@ -102,28 +100,11 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<version>3.1</version>
|
<version>2.3.2</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<showDeprecation>true</showDeprecation>
|
<showDeprecation>true</showDeprecation>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
|
||||||
<version>2.4</version>
|
|
||||||
<configuration>
|
|
||||||
<archive>
|
|
||||||
<addMavenDescriptor>true</addMavenDescriptor>
|
|
||||||
<manifest>
|
|
||||||
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
|
||||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
|
||||||
</manifest>
|
|
||||||
</archive>
|
|
||||||
<outputDirectory>${project.build.directory}</outputDirectory>
|
|
||||||
<finalName>${project.build.finalName}</finalName>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,9 +1,19 @@
|
|||||||
package me.blackvein.quests;
|
package me.blackvein.quests;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import me.blackvein.quests.util.ItemUtil;
|
import me.blackvein.quests.util.ItemUtil;
|
||||||
import org.bukkit.*;
|
import me.blackvein.quests.util.QuestMob;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
@ -23,9 +33,23 @@ public class Event {
|
|||||||
int stormDuration = 0;
|
int stormDuration = 0;
|
||||||
World thunderWorld = null;
|
World thunderWorld = null;
|
||||||
int thunderDuration = 0;
|
int thunderDuration = 0;
|
||||||
LinkedList<Location> mobSpawnLocs = new LinkedList<Location>();
|
public LinkedList<QuestMob> mobSpawns = new LinkedList<QuestMob>() {
|
||||||
LinkedList<EntityType> mobSpawnTypes = new LinkedList<EntityType>();
|
|
||||||
LinkedList<Integer> mobSpawnAmounts = new LinkedList<Integer>();
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (o instanceof LinkedList) {
|
||||||
|
|
||||||
|
LinkedList<QuestMob> other = (LinkedList<QuestMob>) o;
|
||||||
|
|
||||||
|
if (size() != other.size()) return false;
|
||||||
|
|
||||||
|
for (int i = 0; i < size(); i++) {
|
||||||
|
if (get(i).equals(other.get(i)) == false) return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
LinkedList<Location> lightningStrikes = new LinkedList<Location>();
|
LinkedList<Location> lightningStrikes = new LinkedList<Location>();
|
||||||
LinkedList<String> commands = new LinkedList<String>();
|
LinkedList<String> commands = new LinkedList<String>();
|
||||||
LinkedList<PotionEffect> potionEffects = new LinkedList<PotionEffect>();
|
LinkedList<PotionEffect> potionEffects = new LinkedList<PotionEffect>();
|
||||||
@ -99,17 +123,8 @@ public class Event {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other.mobSpawnLocs.equals(mobSpawnLocs) == false) {
|
if (other.mobSpawns.equals(mobSpawns) == false)
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
if (other.mobSpawnTypes.equals(mobSpawnTypes) == false) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other.mobSpawnAmounts.equals(mobSpawnAmounts) == false) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other.lightningStrikes.equals(lightningStrikes) == false) {
|
if (other.lightningStrikes.equals(lightningStrikes) == false) {
|
||||||
return false;
|
return false;
|
||||||
@ -206,18 +221,11 @@ public class Event {
|
|||||||
thunderWorld.setThunderDuration(thunderDuration);
|
thunderWorld.setThunderDuration(thunderDuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mobSpawnLocs.isEmpty() == false) {
|
if (mobSpawns.isEmpty() == false) {
|
||||||
|
|
||||||
for (Location l : mobSpawnLocs) {
|
|
||||||
|
|
||||||
for (int i = 1; i <= mobSpawnAmounts.get(mobSpawnLocs.indexOf(l)); i++) {
|
|
||||||
|
|
||||||
l.getWorld().spawnEntity(l, mobSpawnTypes.get(mobSpawnLocs.indexOf(l)));
|
|
||||||
|
|
||||||
|
for (QuestMob questMob : mobSpawns) {
|
||||||
|
questMob.spawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lightningStrikes.isEmpty() == false) {
|
if (lightningStrikes.isEmpty() == false) {
|
||||||
@ -458,70 +466,53 @@ public class Event {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.contains(eventKey + "mob-spawn-locations")) {
|
if (data.contains(eventKey + "mob-spawns")) {
|
||||||
|
ConfigurationSection section = data.getConfigurationSection(eventKey + "mob-spawns");
|
||||||
|
|
||||||
if (Quests.checkList(data.getList(eventKey + "mob-spawn-locations"), String.class)) {
|
//is a mob, the keys are just a number or something.
|
||||||
|
for (String s : section.getKeys(false)) {
|
||||||
|
String mobName = section.getString(s + ".name");
|
||||||
|
Location spawnLocation = Quests.getLocation(section.getString(s + ".spawn-location"));
|
||||||
|
EntityType type = Quests.getMobType(section.getString(s + ".mob-type"));
|
||||||
|
Integer mobAmount = section.getInt(s + ".spawn-amounts");
|
||||||
|
|
||||||
if (data.contains(eventKey + "mob-spawn-types")) {
|
|
||||||
|
|
||||||
if (Quests.checkList(data.getList(eventKey + "mob-spawn-types"), String.class)) {
|
if (spawnLocation == null) {
|
||||||
|
|
||||||
if (data.contains(eventKey + "mob-spawn-amounts")) {
|
|
||||||
|
|
||||||
if (Quests.checkList(data.getList(eventKey + "mob-spawn-amounts"), Integer.class)) {
|
|
||||||
|
|
||||||
List<String> mobLocs = data.getStringList(eventKey + "mob-spawn-locations");
|
|
||||||
List<String> mobTypes = data.getStringList(eventKey + "mob-spawn-types");
|
|
||||||
List<Integer> mobAmounts = data.getIntegerList(eventKey + "mob-spawn-amounts");
|
|
||||||
|
|
||||||
for (String s : mobLocs) {
|
|
||||||
|
|
||||||
Location location = Quests.getLocation(s);
|
|
||||||
if (location == null) {
|
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] " + ChatColor.RED + s + ChatColor.GOLD + " inside " + ChatColor.GREEN + " mob-spawn-locations: " + ChatColor.GOLD + "inside Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is not in proper location format!");
|
Quests.printSevere(ChatColor.GOLD + "[Quests] " + ChatColor.RED + s + ChatColor.GOLD + " inside " + ChatColor.GREEN + " mob-spawn-locations: " + ChatColor.GOLD + "inside Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is not in proper location format!");
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] Proper location format is: \"WorldName x y z\"");
|
Quests.printSevere(ChatColor.GOLD + "[Quests] Proper location format is: \"WorldName x y z\"");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityType type = Quests.getMobType(mobTypes.get(mobLocs.indexOf(s)));
|
|
||||||
if (type == null) {
|
if (type == null) {
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] " + ChatColor.RED + mobTypes.get(mobLocs.indexOf(s)) + ChatColor.GOLD + " inside " + ChatColor.GREEN + " mob-spawn-types: " + ChatColor.GOLD + "inside Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is not a valid mob name!");
|
Quests.printSevere(ChatColor.GOLD + "[Quests] " + ChatColor.RED + section.getString(s + ".mob-type") + ChatColor.GOLD + " inside " + ChatColor.GREEN + " mob-spawn-types: " + ChatColor.GOLD + "inside Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is not a valid mob name!");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
int amount = mobAmounts.get(mobLocs.indexOf(s));
|
ItemStack[] inventory = new ItemStack[5];
|
||||||
|
Float[] dropChances = new Float[5];
|
||||||
|
|
||||||
event.mobSpawnLocs.add(location);
|
inventory[0] = ItemUtil.readItemStack(section.getString(s + ".held-item"));
|
||||||
event.mobSpawnTypes.add(type);
|
dropChances[0] = (float) section.getDouble(s + ".held-item-drop-chance");
|
||||||
event.mobSpawnAmounts.add(amount);
|
|
||||||
|
|
||||||
|
inventory[1] = ItemUtil.readItemStack(section.getString(s + ".boots"));
|
||||||
|
dropChances[1] = (float) section.getDouble(s + ".boots-drop-chance");
|
||||||
|
|
||||||
|
inventory[2] = ItemUtil.readItemStack(section.getString(s + ".leggings"));
|
||||||
|
dropChances[2] = (float) section.getDouble(s + ".leggings-drop-chance");
|
||||||
|
|
||||||
|
inventory[3] = ItemUtil.readItemStack(section.getString(s + ".chest-plate"));
|
||||||
|
dropChances[3] = (float) section.getDouble(s + ".chest-plate-drop-chance");
|
||||||
|
|
||||||
|
inventory[4] = ItemUtil.readItemStack(section.getString(s + ".helmet"));
|
||||||
|
dropChances[4] = (float) section.getDouble(s + ".helmet-drop-chance");
|
||||||
|
|
||||||
|
QuestMob questMob = new QuestMob(type, spawnLocation, mobAmount);
|
||||||
|
questMob.inventory = inventory;
|
||||||
|
questMob.dropChances = dropChances;
|
||||||
|
questMob.setName(mobName);
|
||||||
|
|
||||||
|
event.mobSpawns.add(questMob);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] " + ChatColor.RED + "mob-spawn-amounts: " + ChatColor.GOLD + "inside Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is not a list of numbers!");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is missing " + ChatColor.RED + "mob-spawn-amounts:");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] " + ChatColor.RED + "mob-spawn-types: " + ChatColor.GOLD + "inside Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is not a list of mob names!");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is missing " + ChatColor.RED + "mob-spawn-types:");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Quests.printSevere(ChatColor.GOLD + "[Quests] " + ChatColor.RED + "mob-spawn-locations: " + ChatColor.GOLD + "inside Event " + ChatColor.DARK_PURPLE + name + ChatColor.GOLD + " is not a list of locations!");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.contains(eventKey + "lightning-strikes")) {
|
if (data.contains(eventKey + "lightning-strikes")) {
|
||||||
|
@ -7,10 +7,12 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import me.blackvein.quests.prompts.ItemStackPrompt;
|
import me.blackvein.quests.prompts.ItemStackPrompt;
|
||||||
import me.blackvein.quests.util.CK;
|
import me.blackvein.quests.util.CK;
|
||||||
import me.blackvein.quests.util.ItemUtil;
|
import me.blackvein.quests.util.ItemUtil;
|
||||||
import me.blackvein.quests.util.Lang;
|
import me.blackvein.quests.util.Lang;
|
||||||
|
import me.blackvein.quests.util.QuestMob;
|
||||||
import net.citizensnpcs.api.CitizensAPI;
|
import net.citizensnpcs.api.CitizensAPI;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@ -21,7 +23,15 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.conversations.*;
|
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||||
|
import org.bukkit.conversations.ConversationAbandonedListener;
|
||||||
|
import org.bukkit.conversations.ConversationContext;
|
||||||
|
import org.bukkit.conversations.ConversationFactory;
|
||||||
|
import org.bukkit.conversations.ConversationPrefix;
|
||||||
|
import org.bukkit.conversations.FixedSetPrompt;
|
||||||
|
import org.bukkit.conversations.NumericPrompt;
|
||||||
|
import org.bukkit.conversations.Prompt;
|
||||||
|
import org.bukkit.conversations.StringPrompt;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
@ -184,8 +194,6 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
context.setSessionData(CK.E_WORLD_THUNDER, null);
|
context.setSessionData(CK.E_WORLD_THUNDER, null);
|
||||||
context.setSessionData(CK.E_WORLD_THUNDER_DURATION, null);
|
context.setSessionData(CK.E_WORLD_THUNDER_DURATION, null);
|
||||||
context.setSessionData(CK.E_MOB_TYPES, null);
|
context.setSessionData(CK.E_MOB_TYPES, null);
|
||||||
context.setSessionData(CK.E_MOB_AMOUNTS, null);
|
|
||||||
context.setSessionData(CK.E_MOB_LOCATIONS, null);
|
|
||||||
context.setSessionData(CK.E_LIGHTNING, null);
|
context.setSessionData(CK.E_LIGHTNING, null);
|
||||||
context.setSessionData(CK.E_POTION_TYPES, null);
|
context.setSessionData(CK.E_POTION_TYPES, null);
|
||||||
context.setSessionData(CK.E_POTION_DURATIONS, null);
|
context.setSessionData(CK.E_POTION_DURATIONS, null);
|
||||||
@ -233,7 +241,7 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
LinkedList<String> effs = new LinkedList<String>();
|
LinkedList<String> effs = new LinkedList<String>();
|
||||||
LinkedList<String> locs = new LinkedList<String>();
|
LinkedList<String> locs = new LinkedList<String>();
|
||||||
|
|
||||||
for(Entry e : event.effects.entrySet()){
|
for(Entry<?, ?> e : event.effects.entrySet()){
|
||||||
|
|
||||||
effs.add(((Effect) e.getKey()).toString());
|
effs.add(((Effect) e.getKey()).toString());
|
||||||
locs.add(Quests.getLocationInfo((Location) e.getValue()));
|
locs.add(Quests.getLocationInfo((Location) e.getValue()));
|
||||||
@ -259,24 +267,15 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.mobSpawnTypes != null && event.mobSpawnTypes.isEmpty() == false){
|
if (event.mobSpawns != null && event.mobSpawns.isEmpty() == false) {
|
||||||
|
|
||||||
LinkedList<String> types = new LinkedList<String>();
|
LinkedList<String> questMobs = new LinkedList<String>();
|
||||||
LinkedList<String> locs = new LinkedList<String>();
|
|
||||||
LinkedList<Integer> amounts = new LinkedList<Integer>();
|
|
||||||
|
|
||||||
for(int i = 0; i < event.mobSpawnTypes.size(); i++){
|
|
||||||
|
|
||||||
types.add(Quester.prettyMobString(event.mobSpawnTypes.get(i)));
|
|
||||||
locs.add(Quests.getLocationInfo(event.mobSpawnLocs.get(i)));
|
|
||||||
amounts.add(event.mobSpawnAmounts.get(i));
|
|
||||||
|
|
||||||
|
for (QuestMob questMob : event.mobSpawns) {
|
||||||
|
questMobs.add(questMob.serialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
context.setSessionData(CK.E_MOB_TYPES, types);
|
context.setSessionData(CK.E_MOB_TYPES, questMobs);
|
||||||
context.setSessionData(CK.E_MOB_AMOUNTS, amounts);
|
|
||||||
context.setSessionData(CK.E_MOB_LOCATIONS, locs);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.lightningStrikes != null && event.lightningStrikes.isEmpty() == false){
|
if(event.lightningStrikes != null && event.lightningStrikes.isEmpty() == false){
|
||||||
@ -571,15 +570,12 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
text += BLUE + "" + BOLD + "9" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobSpawns") + GRAY + " (" + Lang.get("noneSet") + ")\n";
|
text += BLUE + "" + BOLD + "9" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobSpawns") + GRAY + " (" + Lang.get("noneSet") + ")\n";
|
||||||
} else {
|
} else {
|
||||||
LinkedList<String> types = (LinkedList<String>) context.getSessionData(CK.E_MOB_TYPES);
|
LinkedList<String> types = (LinkedList<String>) context.getSessionData(CK.E_MOB_TYPES);
|
||||||
LinkedList<Integer> amounts = (LinkedList<Integer>) context.getSessionData(CK.E_MOB_AMOUNTS);
|
|
||||||
LinkedList<String> locations = (LinkedList<String>) context.getSessionData(CK.E_MOB_LOCATIONS);
|
|
||||||
|
|
||||||
text += BLUE + "" + BOLD + "9" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobSpawns") + "\n";
|
text += BLUE + "" + BOLD + "9" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobSpawns") + "\n";
|
||||||
|
|
||||||
for (String s : types) {
|
for (String s : types) {
|
||||||
int amt = amounts.get(types.indexOf(s));
|
QuestMob qm = QuestMob.fromString(s);
|
||||||
String loc = locations.get(types.indexOf(s));
|
text += GRAY + " - " + AQUA + qm.getType().getName() + ((qm.getName() != null) ? ": " + qm.getName() : "") + GRAY + " x " + DARKAQUA + qm.getSpawnAmounts() + GRAY + " -> " + GREEN + Quests.getLocationInfo(qm.getSpawnLocation()) + "\n";
|
||||||
text += GRAY + " - " + AQUA + s + GRAY + " x " + DARKAQUA + amt + GRAY + " -> " + GREEN + loc + "\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -862,6 +858,7 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
return (String)context.getSessionData(path);
|
return (String)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
private static LinkedList<String> getCStringList(ConversationContext context, String path){
|
private static LinkedList<String> getCStringList(ConversationContext context, String path){
|
||||||
return (LinkedList<String>)context.getSessionData(path);
|
return (LinkedList<String>)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
@ -870,6 +867,7 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
return (Integer)context.getSessionData(path);
|
return (Integer)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
private static LinkedList<Integer> getCIntList(ConversationContext context, String path){
|
private static LinkedList<Integer> getCIntList(ConversationContext context, String path){
|
||||||
return (LinkedList<Integer>)context.getSessionData(path);
|
return (LinkedList<Integer>)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
@ -878,6 +876,7 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
return (Boolean)context.getSessionData(path);
|
return (Boolean)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
private static LinkedList<Boolean> getCBooleanList(ConversationContext context, String path){
|
private static LinkedList<Boolean> getCBooleanList(ConversationContext context, String path){
|
||||||
return (LinkedList<Boolean>)context.getSessionData(path);
|
return (LinkedList<Boolean>)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
@ -886,6 +885,7 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
return (Long)context.getSessionData(path);
|
return (Long)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
private static LinkedList<Long> getCLongList(ConversationContext context, String path){
|
private static LinkedList<Long> getCLongList(ConversationContext context, String path){
|
||||||
return (LinkedList<Long>)context.getSessionData(path);
|
return (LinkedList<Long>)context.getSessionData(path);
|
||||||
}
|
}
|
||||||
@ -1007,16 +1007,39 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
if (context.getSessionData(CK.E_MOB_TYPES) != null) {
|
if (context.getSessionData(CK.E_MOB_TYPES) != null) {
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
LinkedList<String> types = getCStringList(context, CK.E_MOB_TYPES);
|
for (String s : getCStringList(context, CK.E_MOB_TYPES)) {
|
||||||
LinkedList<Integer> amounts = getCIntList(context, CK.E_MOB_AMOUNTS);
|
ConfigurationSection ss = section.getConfigurationSection("mob-spawns." + count);
|
||||||
LinkedList<String> locations = getCStringList(context, CK.E_MOB_LOCATIONS);
|
if (ss == null) {
|
||||||
|
ss = section.createSection("mob-spawns." + count);
|
||||||
|
}
|
||||||
|
QuestMob questMob = QuestMob.fromString(s);
|
||||||
|
|
||||||
section.set("mob-spawn-types", types);
|
if (questMob == null) continue;
|
||||||
section.set("mob-spawn-amounts", amounts);
|
|
||||||
section.set("mob-spawn-locations", locations);
|
|
||||||
|
|
||||||
|
ss.set("name", questMob.getName());
|
||||||
|
ss.set("spawn-location", Quests.getLocationInfo(questMob.getSpawnLocation()));
|
||||||
|
ss.set("mob-type", questMob.getType().getName());
|
||||||
|
ss.set("spawn-amounts", questMob.getSpawnAmounts());
|
||||||
|
ss.set("held-item", ItemUtil.serialize(questMob.inventory[0]));
|
||||||
|
ss.set("held-item-drop-chance", questMob.dropChances[0]);
|
||||||
|
ss.set("boots", ItemUtil.serialize(questMob.inventory[1]));
|
||||||
|
ss.set("boots-drop-chance", questMob.dropChances[1]);
|
||||||
|
ss.set("leggings", ItemUtil.serialize(questMob.inventory[2]));
|
||||||
|
ss.set("leggings-drop-chance", questMob.dropChances[2]);
|
||||||
|
ss.set("chest-plate", ItemUtil.serialize(questMob.inventory[3]));
|
||||||
|
ss.set("chest-plate-drop-chance", questMob.dropChances[3]);
|
||||||
|
ss.set("helmet", ItemUtil.serialize(questMob.inventory[4]));
|
||||||
|
ss.set("helmet-drop-chance", questMob.dropChances[4]);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context.getSessionData(CK.E_LIGHTNING) != null) {
|
if (context.getSessionData(CK.E_LIGHTNING) != null) {
|
||||||
@ -1029,6 +1052,7 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
if (context.getSessionData(CK.E_COMMANDS) != null) {
|
if (context.getSessionData(CK.E_COMMANDS) != null) {
|
||||||
|
|
||||||
LinkedList<String> commands = getCStringList(context, CK.E_COMMANDS);
|
LinkedList<String> commands = getCStringList(context, CK.E_COMMANDS);
|
||||||
|
if (commands.isEmpty() == false)
|
||||||
section.set("commands", commands);
|
section.set("commands", commands);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1855,57 +1879,27 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MobPrompt extends FixedSetPrompt {
|
private class MobPrompt extends StringPrompt {
|
||||||
|
|
||||||
public MobPrompt() {
|
|
||||||
|
|
||||||
super("1", "2", "3", "4", "5");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPromptText(ConversationContext context) {
|
public String getPromptText(ConversationContext context) {
|
||||||
|
|
||||||
String text = GOLD + "- " + Lang.get("eventEditorMobSpawns") + " -\n";
|
String text = GOLD + "- " + Lang.get("eventEditorMobSpawns") + " -\n";
|
||||||
if (context.getSessionData(CK.E_MOB_TYPES) == null) {
|
if (context.getSessionData(CK.E_MOB_TYPES) == null) {
|
||||||
text += BLUE + "" + BOLD + "1" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobTypes") + " (" + Lang.get("noneSet") + ")\n";
|
text += BLUE + "" + BOLD + "1" + RESET + YELLOW + " - " + Lang.get("eventEditorAddMobTypes") + " (" + Lang.get("noneSet") + ")\n";
|
||||||
text += GRAY + "2 - " + Lang.get("eventEditorSetMobAmounts") + " " + Lang.get("eventEditorNoTypesSet") + "\n";
|
text += BLUE + "" + BOLD + "2" + RESET + YELLOW + " - " + Lang.get("clear") + "\n";
|
||||||
text += GRAY + "3 - " + Lang.get("eventEditorAddSpawnLocation") + " " + Lang.get("eventEditorNoTypesSet") + "\n";
|
text += BLUE + "" + BOLD + "3" + RESET + YELLOW + " - " + Lang.get("done");
|
||||||
text += BLUE + "" + BOLD + "4" + RESET + YELLOW + " - " + Lang.get("clear") + "\n";
|
|
||||||
text += BLUE + "" + BOLD + "5" + RESET + YELLOW + " - " + Lang.get("done");
|
|
||||||
} else {
|
} else {
|
||||||
|
LinkedList<String> types = (LinkedList<String>) context.getSessionData(CK.E_MOB_TYPES);
|
||||||
|
|
||||||
text += BLUE + "" + BOLD + "1" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobTypes") + "\n";
|
for (int i = 0; i < types.size(); i++) {
|
||||||
for (String s : (LinkedList<String>) context.getSessionData(CK.E_MOB_TYPES)) {
|
QuestMob qm = QuestMob.fromString(types.get(i));
|
||||||
text += GRAY + " - " + AQUA + s + "\n";
|
text += GOLD + " " + (i + 1) + " - Edit: " + AQUA + qm.getType().getName() + ((qm.getName() != null) ? ": " + qm.getName() : "") + GRAY + " x " + DARKAQUA + qm.getSpawnAmounts() + GRAY + " -> " + GREEN + Quests.getLocationInfo(qm.getSpawnLocation()) + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context.getSessionData(CK.E_MOB_AMOUNTS) == null) {
|
text += BLUE + "" + BOLD + (types.size() + 1) + RESET + YELLOW + " - " + Lang.get("eventEditorAddMobTypes") + "\n";
|
||||||
text += BLUE + "" + BOLD + "2" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobAmounts") + " (" + Lang.get("noneSet") + ")\n";
|
text += BLUE + "" + BOLD + (types.size() + 2) + RESET + YELLOW + " - " + Lang.get("clear") + "\n";
|
||||||
text += GRAY + "3 - " + Lang.get("eventEditorAddSpawnLocation") + Lang.get("eventEditorNoAmountsSet") + "\n";
|
text += GREEN + "" + BOLD + (types.size() + 3) + RESET + YELLOW + " - " + Lang.get("done");
|
||||||
} else {
|
|
||||||
|
|
||||||
text += BLUE + "" + BOLD + "2" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobAmounts") + "\n";
|
|
||||||
for (int i : (LinkedList<Integer>) context.getSessionData(CK.E_MOB_AMOUNTS)) {
|
|
||||||
text += GRAY + " - " + DARKAQUA + i + "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (context.getSessionData(CK.E_MOB_LOCATIONS) == null) {
|
|
||||||
text += BLUE + "" + BOLD + "3" + RESET + YELLOW + " - " + Lang.get("eventEditorAddSpawnLocation") + " (" + Lang.get("noneSet") + ")\n";
|
|
||||||
} else {
|
|
||||||
|
|
||||||
text += BLUE + "" + BOLD + "3" + RESET + YELLOW + " - " + Lang.get("eventEditorAddSpawnLocation") + "\n";
|
|
||||||
for (String s : (LinkedList<String>) context.getSessionData(CK.E_MOB_LOCATIONS)) {
|
|
||||||
text += GRAY + " - " + GREEN + s + "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
text += BLUE + "" + BOLD + "4" + RESET + YELLOW + " - " + Lang.get("clear") + "\n";
|
|
||||||
text += GREEN + "" + BOLD + "5" + RESET + YELLOW + " - " + Lang.get("done");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1914,76 +1908,221 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
|
public Prompt acceptInput(ConversationContext context, String input) {
|
||||||
|
|
||||||
|
if (context.getSessionData(CK.E_MOB_TYPES) == null) {
|
||||||
if (input.equalsIgnoreCase("1")) {
|
if (input.equalsIgnoreCase("1")) {
|
||||||
return new MobTypesPrompt();
|
return new QuestMobPrompt(0, null);
|
||||||
} else if (input.equalsIgnoreCase("2")) {
|
} else if (input.equalsIgnoreCase("2")) {
|
||||||
if (context.getSessionData(CK.E_MOB_TYPES) == null) {
|
|
||||||
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorMustSetMobTypesFirst"));
|
|
||||||
return new MobPrompt();
|
|
||||||
} else {
|
|
||||||
return new MobAmountsPrompt();
|
|
||||||
}
|
|
||||||
} else if (input.equalsIgnoreCase("3")) {
|
|
||||||
if (context.getSessionData(CK.E_MOB_TYPES) == null) {
|
|
||||||
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorMustSetMobTypesAndAmountsFirst"));
|
|
||||||
return new MobPrompt();
|
|
||||||
} else if (context.getSessionData(CK.E_MOB_AMOUNTS) == null) {
|
|
||||||
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorMustSetMobAmountsFirst"));
|
|
||||||
return new MobPrompt();
|
|
||||||
} else {
|
|
||||||
selectedMobLocations.put((Player) context.getForWhom(), null);
|
|
||||||
return new MobLocationPrompt();
|
|
||||||
}
|
|
||||||
} else if (input.equalsIgnoreCase("4")) {
|
|
||||||
context.getForWhom().sendRawMessage(YELLOW + Lang.get("eventEditorMobSpawnsCleared"));
|
context.getForWhom().sendRawMessage(YELLOW + Lang.get("eventEditorMobSpawnsCleared"));
|
||||||
context.setSessionData(CK.E_MOB_TYPES, null);
|
context.setSessionData(CK.E_MOB_TYPES, null);
|
||||||
context.setSessionData(CK.E_MOB_AMOUNTS, null);
|
|
||||||
context.setSessionData(CK.E_MOB_LOCATIONS, null);
|
|
||||||
return new MobPrompt();
|
return new MobPrompt();
|
||||||
} else if (input.equalsIgnoreCase("5")) {
|
} else if (input.equalsIgnoreCase("3")) {
|
||||||
|
|
||||||
int one;
|
|
||||||
int two;
|
|
||||||
int three;
|
|
||||||
|
|
||||||
if (context.getSessionData(CK.E_MOB_TYPES) != null) {
|
|
||||||
one = ((List<String>) context.getSessionData(CK.E_MOB_TYPES)).size();
|
|
||||||
} else {
|
|
||||||
one = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context.getSessionData(CK.E_MOB_AMOUNTS) != null) {
|
|
||||||
two = ((List<Integer>) context.getSessionData(CK.E_MOB_AMOUNTS)).size();
|
|
||||||
} else {
|
|
||||||
two = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context.getSessionData(CK.E_MOB_LOCATIONS) != null) {
|
|
||||||
three = ((List<String>) context.getSessionData(CK.E_MOB_LOCATIONS)).size();
|
|
||||||
} else {
|
|
||||||
three = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (one == two && two == three) {
|
|
||||||
return new CreateMenuPrompt();
|
return new CreateMenuPrompt();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorListSizeMismatch"));
|
LinkedList<String> types = (LinkedList<String>) context.getSessionData(CK.E_MOB_TYPES);
|
||||||
|
int inp = -1;
|
||||||
|
try {
|
||||||
|
inp = Integer.parseInt(input);
|
||||||
|
} catch (Exception e) {
|
||||||
|
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorNotANumber"));
|
||||||
return new MobPrompt();
|
return new MobPrompt();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (inp == types.size() + 1) {
|
||||||
return null;
|
return new QuestMobPrompt(inp - 1, null);
|
||||||
|
} else if (inp == types.size() + 2) {
|
||||||
|
context.getForWhom().sendRawMessage(YELLOW + Lang.get("eventEditorMobSpawnsCleared"));
|
||||||
|
context.setSessionData(CK.E_MOB_TYPES, null);
|
||||||
|
return new MobPrompt();
|
||||||
|
} else if (inp == types.size() + 3) {
|
||||||
|
return new CreateMenuPrompt();
|
||||||
|
} else if (inp > types.size()){
|
||||||
|
return new MobPrompt();
|
||||||
|
} else {
|
||||||
|
return new QuestMobPrompt(inp - 1, QuestMob.fromString(types.get(inp - 1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MobTypesPrompt extends StringPrompt {
|
return new MobPrompt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class QuestMobPrompt extends StringPrompt {
|
||||||
|
|
||||||
|
private QuestMob questMob;
|
||||||
|
private Integer itemIndex = -1;
|
||||||
|
private Integer mobIndex;
|
||||||
|
|
||||||
|
public QuestMobPrompt(int mobIndex, QuestMob questMob) {
|
||||||
|
this.questMob = questMob;
|
||||||
|
this.mobIndex = mobIndex;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPromptText(ConversationContext context) {
|
public String getPromptText(ConversationContext context) {
|
||||||
|
|
||||||
|
String text = GOLD + "- " + Lang.get("eventEditorAddMobTypes") + " - \n";
|
||||||
|
|
||||||
|
if (questMob == null) {
|
||||||
|
questMob = new QuestMob();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check/add newly made item
|
||||||
|
|
||||||
|
if(context.getSessionData("newItem") != null){
|
||||||
|
if(itemIndex >= 0){
|
||||||
|
questMob.inventory[itemIndex] = ((ItemStack) context.getSessionData("tempStack"));
|
||||||
|
itemIndex = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
context.setSessionData("newItem", null);
|
||||||
|
context.setSessionData("tempStack", null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
text += BLUE + "" + BOLD + "1" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobName") + GRAY + " (" + ((questMob.getName() == null) ? Lang.get("noneSet") : AQUA + questMob.getName()) + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "2" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobType") + GRAY + " (" + ((questMob.getType() == null) ? Lang.get("eventEditorNoTypesSet") : AQUA + questMob.getType().getName()) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "3" + RESET + YELLOW + " - " + Lang.get("eventEditorAddSpawnLocation") + GRAY + " (" + ((questMob.getSpawnLocation() == null) ? GRAY + Lang.get("noneSet") : AQUA + Quests.getLocationInfo(questMob.getSpawnLocation()) ) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "4" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobSpawnAmount") + GRAY +" (" + ((questMob.getSpawnAmounts() == null) ? GRAY + Lang.get("eventEditorNoAmountsSet") : AQUA + "" + questMob.getSpawnAmounts()) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "5" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobItemInHand") + GRAY +" (" + ((questMob.inventory[0] == null) ? GRAY + Lang.get("noneSet") : AQUA + ItemUtil.getDisplayString(questMob.inventory[0])) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "6" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobItemInHandDrop") + GRAY + " (" + ((questMob.dropChances[0] == null) ? GRAY + Lang.get("noneSet") : AQUA + "" + questMob.dropChances[0]) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "7" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobBoots") + GRAY + " (" + ((questMob.inventory[1] == null) ? GRAY + Lang.get("noneSet") : AQUA + ItemUtil.getDisplayString(questMob.inventory[1])) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "8" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobBootsDrop") + GRAY + " (" + ((questMob.dropChances[1] == null) ? GRAY + Lang.get("noneSet") : AQUA + "" + questMob.dropChances[1]) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "9" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobLeggings") + GRAY + " (" + ((questMob.inventory[2] == null) ? GRAY + Lang.get("noneSet") : AQUA + ItemUtil.getDisplayString(questMob.inventory[2])) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "10" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobLeggingsDrop") + GRAY + " (" + ((questMob.dropChances[2] == null) ? GRAY + Lang.get("noneSet") : AQUA + "" + questMob.dropChances[2]) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "11" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobChestPlate") + GRAY + " (" + ((questMob.inventory[3] == null) ? GRAY + Lang.get("noneSet") : AQUA + ItemUtil.getDisplayString(questMob.inventory[3])) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "12" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobChestPlateDrop") + GRAY + " (" + ((questMob.dropChances[3] == null) ? GRAY + Lang.get("noneSet") : AQUA + "" + questMob.dropChances[3]) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "13" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobHelmet") + GRAY + " (" + ((questMob.inventory[4] == null) ? GRAY + Lang.get("noneSet") : AQUA + ItemUtil.getDisplayString(questMob.inventory[4])) + GRAY + ")\n";
|
||||||
|
text += BLUE + "" + BOLD + "14" + RESET + YELLOW + " - " + Lang.get("eventEditorSetMobHelmetDrop") + GRAY + " (" + ((questMob.dropChances[4] == null) ? GRAY + Lang.get("noneSet") : AQUA + "" + questMob.dropChances[4]) + GRAY + ")\n";
|
||||||
|
|
||||||
|
|
||||||
|
text += GREEN + "" + BOLD + "15" + RESET + YELLOW + " - " + Lang.get("done") + "\n";
|
||||||
|
text += RED + "" + BOLD + "16" + RESET + YELLOW + " - " + Lang.get("cancel");
|
||||||
|
|
||||||
|
return text;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Override
|
||||||
|
public Prompt acceptInput(ConversationContext context, String input) {
|
||||||
|
|
||||||
|
if (input.equalsIgnoreCase("1")) {
|
||||||
|
return new MobNamePrompt(mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("2")) {
|
||||||
|
return new MobTypePrompt(mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("3")) {
|
||||||
|
selectedMobLocations.put((Player) context.getForWhom(), null);
|
||||||
|
return new MobLocationPrompt(mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("4")) {
|
||||||
|
return new MobAmountPrompt(mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("5")) {
|
||||||
|
itemIndex = 0;
|
||||||
|
return new ItemStackPrompt(QuestMobPrompt.this);
|
||||||
|
} else if (input.equalsIgnoreCase("6")) {
|
||||||
|
return new MobDropPrompt(0, mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("7")) {
|
||||||
|
itemIndex = 1;
|
||||||
|
return new ItemStackPrompt(QuestMobPrompt.this);
|
||||||
|
} else if (input.equalsIgnoreCase("8")) {
|
||||||
|
return new MobDropPrompt(1, mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("9")) {
|
||||||
|
itemIndex = 2;
|
||||||
|
return new ItemStackPrompt(QuestMobPrompt.this);
|
||||||
|
} else if (input.equalsIgnoreCase("10")) {
|
||||||
|
return new MobDropPrompt(2, mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("11")) {
|
||||||
|
itemIndex = 3;
|
||||||
|
return new ItemStackPrompt(QuestMobPrompt.this);
|
||||||
|
} else if (input.equalsIgnoreCase("12")) {
|
||||||
|
return new MobDropPrompt(3, mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("13")) {
|
||||||
|
itemIndex = 4;
|
||||||
|
return new ItemStackPrompt(QuestMobPrompt.this);
|
||||||
|
} else if (input.equalsIgnoreCase("14")) {
|
||||||
|
return new MobDropPrompt(4, mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase("15")) {
|
||||||
|
if (questMob.getType() == null) {
|
||||||
|
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorMustSetMobTypesFirst"));
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
} else if (questMob.getSpawnLocation() == null) {
|
||||||
|
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorMustSetMobLocationFirst"));
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
} else if (questMob.getSpawnAmounts() == null) {
|
||||||
|
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorMustSetMobAmountsFirst"));
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
}
|
||||||
|
if (context.getSessionData(CK.E_MOB_TYPES) == null) {
|
||||||
|
LinkedList<String> list = new LinkedList<String>();
|
||||||
|
list.add(questMob.serialize());
|
||||||
|
context.setSessionData(CK.E_MOB_TYPES, list);
|
||||||
|
} else {
|
||||||
|
if (((LinkedList<String>) context.getSessionData(CK.E_MOB_TYPES)).isEmpty()) {
|
||||||
|
LinkedList<String> list = new LinkedList<String>();
|
||||||
|
list.add(questMob.serialize());
|
||||||
|
context.setSessionData(CK.E_MOB_TYPES, list);
|
||||||
|
} else {
|
||||||
|
LinkedList<String> list = (LinkedList<String>) context.getSessionData(CK.E_MOB_TYPES);
|
||||||
|
list.set(mobIndex, questMob.serialize());
|
||||||
|
context.setSessionData(CK.E_MOB_TYPES, list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new MobPrompt();
|
||||||
|
} else if (input.equalsIgnoreCase("16")) {
|
||||||
|
return new MobPrompt();
|
||||||
|
} else {
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MobNamePrompt extends StringPrompt {
|
||||||
|
|
||||||
|
private QuestMob questMob;
|
||||||
|
private Integer mobIndex;
|
||||||
|
|
||||||
|
public MobNamePrompt (int mobIndex, QuestMob questMob) {
|
||||||
|
this.questMob = questMob;
|
||||||
|
this.mobIndex = mobIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPromptText(ConversationContext context) {
|
||||||
|
String text = YELLOW + Lang.get("eventEditorSetMobNamePrompt");
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Prompt acceptInput(ConversationContext context, String input) {
|
||||||
|
|
||||||
|
if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||||
|
questMob.setName(null);
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
} else {
|
||||||
|
input = ChatColor.translateAlternateColorCodes('&', input);
|
||||||
|
questMob.setName(input);
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MobTypePrompt extends StringPrompt {
|
||||||
|
|
||||||
|
private QuestMob questMob;
|
||||||
|
private Integer mobIndex;
|
||||||
|
|
||||||
|
public MobTypePrompt (int mobIndex, QuestMob questMob) {
|
||||||
|
this.questMob = questMob;
|
||||||
|
this.mobIndex = mobIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPromptText(ConversationContext arg0) {
|
||||||
String mobs = PINK + "- " + Lang.get("mobs") + " - \n";
|
String mobs = PINK + "- " + Lang.get("mobs") + " - \n";
|
||||||
mobs += PURPLE + "Bat, ";
|
mobs += PURPLE + "Bat, ";
|
||||||
mobs += PURPLE + "Blaze, ";
|
mobs += PURPLE + "Blaze, ";
|
||||||
@ -2015,39 +2154,37 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
mobs += PURPLE + "Zombie\n";
|
mobs += PURPLE + "Zombie\n";
|
||||||
|
|
||||||
return mobs + YELLOW + Lang.get("eventEditorSetMobTypesPrompt");
|
return mobs + YELLOW + Lang.get("eventEditorSetMobTypesPrompt");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Prompt acceptInput(ConversationContext context, String input) {
|
public Prompt acceptInput(ConversationContext context, String input) {
|
||||||
|
|
||||||
Player player = (Player) context.getForWhom();
|
Player player = (Player) context.getForWhom();
|
||||||
|
|
||||||
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
|
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
|
||||||
|
|
||||||
LinkedList<String> mobTypes = new LinkedList<String>();
|
if (Quests.getMobType(input) != null) {
|
||||||
for (String s : input.split(" ")) {
|
|
||||||
|
|
||||||
if (Quests.getMobType(s) != null) {
|
questMob.setType(Quests.getMobType(input));
|
||||||
|
|
||||||
mobTypes.add(Quester.prettyMobString(Quests.getMobType(s)));
|
|
||||||
context.setSessionData(CK.E_MOB_TYPES, mobTypes);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(PINK + s + " " + RED + Lang.get("eventEditorInvalidMob"));
|
player.sendMessage(PINK + input + " " + RED + Lang.get("eventEditorInvalidMob"));
|
||||||
return new MobTypesPrompt();
|
return new MobTypePrompt(mobIndex, questMob);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return new MobPrompt();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MobAmountsPrompt extends StringPrompt {
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MobAmountPrompt extends StringPrompt {
|
||||||
|
|
||||||
|
private QuestMob questMob;
|
||||||
|
private Integer mobIndex;
|
||||||
|
|
||||||
|
public MobAmountPrompt (int mobIndex, QuestMob questMob) {
|
||||||
|
this.questMob = questMob;
|
||||||
|
this.mobIndex = mobIndex;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPromptText(ConversationContext context) {
|
public String getPromptText(ConversationContext context) {
|
||||||
@ -2063,43 +2200,43 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
|
|
||||||
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
|
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
|
||||||
|
|
||||||
LinkedList<Integer> mobAmounts = new LinkedList<Integer>();
|
|
||||||
for (String s : input.split(" ")) {
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
int i = Integer.parseInt(s);
|
int i = Integer.parseInt(input);
|
||||||
|
|
||||||
if (i < 1) {
|
if (i < 1) {
|
||||||
player.sendMessage(PINK + input + " " + RED + Lang.get("eventEditorNotGreaterThanZero"));
|
player.sendMessage(PINK + input + " " + RED + Lang.get("eventEditorNotGreaterThanZero"));
|
||||||
return new MobAmountsPrompt();
|
return new MobAmountPrompt(mobIndex, questMob);
|
||||||
}
|
}
|
||||||
|
|
||||||
mobAmounts.add(i);
|
questMob.setSpawnAmounts(i);
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
player.sendMessage(PINK + input + " " + RED + Lang.get("eventEditorNotANumber"));
|
player.sendMessage(PINK + input + " " + RED + Lang.get("eventEditorNotANumber"));
|
||||||
return new MobAmountsPrompt();
|
return new MobAmountPrompt(mobIndex, questMob);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
context.setSessionData(CK.E_MOB_AMOUNTS, mobAmounts);
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return new MobPrompt();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MobLocationPrompt extends StringPrompt {
|
private class MobLocationPrompt extends StringPrompt {
|
||||||
|
|
||||||
|
private QuestMob questMob;
|
||||||
|
private Integer mobIndex;
|
||||||
|
|
||||||
|
public MobLocationPrompt (int mobIndex, QuestMob questMob) {
|
||||||
|
this.questMob = questMob;
|
||||||
|
this.mobIndex = mobIndex;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPromptText(ConversationContext context) {
|
public String getPromptText(ConversationContext context) {
|
||||||
|
|
||||||
return YELLOW + Lang.get("eventEditorMobLocationPrompt");
|
return YELLOW + Lang.get("eventEditorSetMobLocationPrompt");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2115,36 +2252,71 @@ public class EventFactory implements ConversationAbandonedListener, ColorUtil{
|
|||||||
|
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
|
|
||||||
LinkedList<String> locs;
|
questMob.setSpawnLocation(loc);
|
||||||
if (context.getSessionData(CK.E_MOB_LOCATIONS) != null) {
|
|
||||||
locs = (LinkedList<String>) context.getSessionData(CK.E_MOB_LOCATIONS);
|
|
||||||
} else {
|
|
||||||
locs = new LinkedList<String>();
|
|
||||||
}
|
|
||||||
|
|
||||||
locs.add(Quests.getLocationInfo(loc));
|
|
||||||
context.setSessionData(CK.E_MOB_LOCATIONS, locs);
|
|
||||||
selectedMobLocations.remove(player);
|
selectedMobLocations.remove(player);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(RED + Lang.get("eventEditorSelectBlockFirst"));
|
player.sendMessage(RED + Lang.get("eventEditorSelectBlockFirst"));
|
||||||
return new MobLocationPrompt();
|
return new MobLocationPrompt(mobIndex, questMob);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MobPrompt();
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
|
||||||
} else if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
} else if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||||
|
|
||||||
selectedMobLocations.remove(player);
|
selectedMobLocations.remove(player);
|
||||||
return new MobPrompt();
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return new MobLocationPrompt();
|
return new MobLocationPrompt(mobIndex, questMob);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class MobDropPrompt extends StringPrompt {
|
||||||
|
|
||||||
|
private QuestMob questMob;
|
||||||
|
private Integer mobIndex;
|
||||||
|
private Integer invIndex;
|
||||||
|
|
||||||
|
public MobDropPrompt (int invIndex, int mobIndex ,QuestMob questMob) {
|
||||||
|
this.questMob = questMob;
|
||||||
|
this.mobIndex = mobIndex;
|
||||||
|
this.invIndex = invIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPromptText(ConversationContext context) {
|
||||||
|
String text = YELLOW + Lang.get("eventEditorSetDropChance");
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Prompt acceptInput(ConversationContext context, String input) {
|
||||||
|
float chance = 0.0F;
|
||||||
|
|
||||||
|
if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
chance = Float.parseFloat(input);
|
||||||
|
} catch (Exception e) {
|
||||||
|
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorInvalidDropChance"));
|
||||||
|
return new MobDropPrompt(invIndex, mobIndex, questMob);
|
||||||
|
}
|
||||||
|
if (chance > 1 || chance < 0) {
|
||||||
|
context.getForWhom().sendRawMessage(RED + Lang.get("eventEditorInvalidDropChance"));
|
||||||
|
return new MobDropPrompt(invIndex, mobIndex, questMob);
|
||||||
|
}
|
||||||
|
|
||||||
|
questMob.dropChances[invIndex] = chance;
|
||||||
|
|
||||||
|
return new QuestMobPrompt(mobIndex, questMob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class LightningPrompt extends StringPrompt {
|
private class LightningPrompt extends StringPrompt {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
package me.blackvein.quests;
|
package me.blackvein.quests;
|
||||||
|
|
||||||
import com.gmail.nossr50.api.ExperienceAPI;
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import me.blackvein.quests.util.ItemUtil;
|
import me.blackvein.quests.util.ItemUtil;
|
||||||
import net.citizensnpcs.api.npc.NPC;
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.PlayerInventory;
|
import org.bukkit.inventory.PlayerInventory;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class Quest {
|
public class Quest {
|
||||||
|
|
||||||
public String name;
|
public String name;
|
||||||
|
@ -570,7 +570,7 @@ public class RewardsPrompt extends FixedSetPrompt implements ColorUtil{
|
|||||||
String skillList =
|
String skillList =
|
||||||
GOLD + "-Skill List-\n" +
|
GOLD + "-Skill List-\n" +
|
||||||
AQUA + "Acrobatics\n" +
|
AQUA + "Acrobatics\n" +
|
||||||
AQUA + "All\n" +
|
GRAY + "All\n" +
|
||||||
AQUA + "Archery\n" +
|
AQUA + "Archery\n" +
|
||||||
AQUA + "Axes\n" +
|
AQUA + "Axes\n" +
|
||||||
AQUA + "Excavation\n" +
|
AQUA + "Excavation\n" +
|
||||||
|
@ -93,8 +93,6 @@ public class CK {
|
|||||||
public static final String E_WORLD_THUNDER = "evtThunderWorld";
|
public static final String E_WORLD_THUNDER = "evtThunderWorld";
|
||||||
public static final String E_WORLD_THUNDER_DURATION = "evtThunderDuration";
|
public static final String E_WORLD_THUNDER_DURATION = "evtThunderDuration";
|
||||||
public static final String E_MOB_TYPES = "evtMobTypes";
|
public static final String E_MOB_TYPES = "evtMobTypes";
|
||||||
public static final String E_MOB_AMOUNTS = "evtMobAmounts";
|
|
||||||
public static final String E_MOB_LOCATIONS = "evtMobLocations";
|
|
||||||
public static final String E_LIGHTNING = "evtLightningStrikes";
|
public static final String E_LIGHTNING = "evtLightningStrikes";
|
||||||
public static final String E_POTION_TYPES = "evtPotionTypes";
|
public static final String E_POTION_TYPES = "evtPotionTypes";
|
||||||
public static final String E_POTION_DURATIONS = "evtPotionDurations";
|
public static final String E_POTION_DURATIONS = "evtPotionDurations";
|
||||||
|
@ -70,6 +70,7 @@ public class ItemUtil implements ColorUtil{
|
|||||||
//
|
//
|
||||||
public static ItemStack readItemStack(String data){
|
public static ItemStack readItemStack(String data){
|
||||||
|
|
||||||
|
if (data == null) return null;
|
||||||
ItemStack stack = null;
|
ItemStack stack = null;
|
||||||
String[] args = data.split(":");
|
String[] args = data.split(":");
|
||||||
ItemMeta meta = null;
|
ItemMeta meta = null;
|
||||||
@ -108,6 +109,8 @@ public class ItemUtil implements ColorUtil{
|
|||||||
|
|
||||||
String serial;
|
String serial;
|
||||||
|
|
||||||
|
if (is == null) return null;
|
||||||
|
|
||||||
serial = "id-" + is.getTypeId();
|
serial = "id-" + is.getTypeId();
|
||||||
serial += ":amount-" + is.getAmount();
|
serial += ":amount-" + is.getAmount();
|
||||||
if(is.getDurability() != 0)
|
if(is.getDurability() != 0)
|
||||||
|
@ -225,16 +225,32 @@ public class Lang {
|
|||||||
en.put("eventEditorEffectLocationPrompt", "Right-click on a block to play an effect at, then enter \"add\" to add it to the list, or enter \"cancel\" to return");
|
en.put("eventEditorEffectLocationPrompt", "Right-click on a block to play an effect at, then enter \"add\" to add it to the list, or enter \"cancel\" to return");
|
||||||
|
|
||||||
en.put("eventEditorMobSpawns", "Event Mob Spawns");
|
en.put("eventEditorMobSpawns", "Event Mob Spawns");
|
||||||
en.put("eventEditorSetMobTypes", "Set mob types");
|
en.put("eventEditorAddMobTypes", "Add mob");
|
||||||
en.put("eventEditorNoTypesSet", "(No types set)");
|
en.put("eventEditorNoTypesSet", "(No type set)");
|
||||||
en.put("eventEditorMustSetMobTypesFirst", "You must set mob types first!");
|
en.put("eventEditorMustSetMobTypesFirst", "You must set the mob type first!");
|
||||||
en.put("eventEditorSetMobAmounts", "Set mob amounts");
|
en.put("eventEditorSetMobAmounts", "Set mob amount");
|
||||||
en.put("eventEditorNoAmountsSet", "(No amounts set)");
|
en.put("eventEditorNoAmountsSet", "(No amounts set)");
|
||||||
en.put("eventEditorMustSetMobAmountsFirst", "You must set mob amounts first!");
|
en.put("eventEditorMustSetMobAmountsFirst", "You must set mob amount first!");
|
||||||
en.put("eventEditorMustSetMobTypesAndAmountsFirst", "You must set mob types and amounts first!");
|
en.put("eventEditorAddSpawnLocation", "Set spawn location");
|
||||||
en.put("eventEditorAddSpawnLocation", "Add spawn location");
|
|
||||||
en.put("eventEditorMobSpawnsCleared", "Mob spawns cleared.");
|
en.put("eventEditorMobSpawnsCleared", "Mob spawns cleared.");
|
||||||
|
en.put("eventEditorMustSetMobLocationFirst", "You must set a spawn-location first!");
|
||||||
en.put("eventEditorInvalidMob", "___ is not a valid mob name!");
|
en.put("eventEditorInvalidMob", "___ is not a valid mob name!");
|
||||||
|
en.put("eventEditorSetMobName", "Set custom name for mob");
|
||||||
|
en.put("eventEditorSetMobType", "Set mob type");
|
||||||
|
en.put("eventEditorSetMobItemInHand", "Set item in hand");
|
||||||
|
en.put("eventEditorSetMobItemInHandDrop", "Set drop chance of item in hand");
|
||||||
|
en.put("eventEditorSetMobBoots", "Set boots");
|
||||||
|
en.put("eventEditorSetMobBootsDrop", "Set drop chance of boots");
|
||||||
|
en.put("eventEditorSetMobLeggings", "Set leggings");
|
||||||
|
en.put("eventEditorSetMobLeggingsDrop", "Set drop chance of leggings");
|
||||||
|
en.put("eventEditorSetMobChestPlate", "Set chest plate");
|
||||||
|
en.put("eventEditorSetMobChestPlateDrop", "Set drop chance of chest plate");
|
||||||
|
en.put("eventEditorSetMobHelmet", "Set helmet");
|
||||||
|
en.put("eventEditorSetMobHelmetDrop", "Set drop chance of helmet");
|
||||||
|
en.put("eventEditorSetMobSpawnLoc", "Right-click on a block to spawn a mob at, then enter \"add\" to the confirm it, or enter \"cancel\" to return");
|
||||||
|
en.put("eventEditorSetMobSpawnAmount", "Set the amount of mobs to spawn");
|
||||||
|
en.put("eventEditorSetDropChance", "Set the drop chance");
|
||||||
|
en.put("eventEditorInvalidDropChance", "Drop chance has to be between 0.0 and 1.0");
|
||||||
|
|
||||||
en.put("eventEditorLightningPrompt", "Right-click on a block to spawn a lightning strike at, then enter \"add\" to add it to the list, or enter \"clear\" to clear the locations list, or \"cancel\" to return");
|
en.put("eventEditorLightningPrompt", "Right-click on a block to spawn a lightning strike at, then enter \"add\" to add it to the list, or enter \"clear\" to clear the locations list, or \"cancel\" to return");
|
||||||
|
|
||||||
@ -256,9 +272,10 @@ public class Lang {
|
|||||||
en.put("eventEditorSetMessagePrompt", "Enter message, or enter \'none\' to delete, (or \'cancel\' to return)");
|
en.put("eventEditorSetMessagePrompt", "Enter message, or enter \'none\' to delete, (or \'cancel\' to return)");
|
||||||
en.put("eventEditorSetItemIDsPrompt", "Enter item IDs separating each one by a space, or enter \"cancel\" to return.");
|
en.put("eventEditorSetItemIDsPrompt", "Enter item IDs separating each one by a space, or enter \"cancel\" to return.");
|
||||||
en.put("eventEditorSetItemAmountsPrompt", "Enter item amounts (numbers) separating each one by a space, or enter \"cancel\" to return.");
|
en.put("eventEditorSetItemAmountsPrompt", "Enter item amounts (numbers) separating each one by a space, or enter \"cancel\" to return.");
|
||||||
en.put("eventEditorSetMobTypesPrompt", "Enter mob names separating each one by a space, or enter \"cancel\" to return");
|
en.put("eventEditorSetMobTypesPrompt", "Enter mob name, or enter \"cancel\" to return");
|
||||||
en.put("eventEditorSetMobAmountsPrompt", "Enter mob amounts separating each one by a space, or enter \"cancel\" to return");
|
en.put("eventEditorSetMobAmountsPrompt", "Enter mob amount, or enter \"cancel\" to return");
|
||||||
en.put("eventEditorMobLocationPrompt", "Right-click on a block to select it, then enter \"add\" to add it to the mob spawn location list, or enter \"cancel\" to return");
|
en.put("eventEditorSetMobNamePrompt", "Set the name for this mob, or enter \"cancel\" to return");
|
||||||
|
en.put("eventEditorSetMobLocationPrompt", "Right-click on a block to select it, then enter \"add\" to add it to the mob spawn location list, or enter \"cancel\" to return");
|
||||||
en.put("eventEditorSetPotionEffectsPrompt", "Enter potion effect types separating each one by a space, or enter \"cancel\" to return");
|
en.put("eventEditorSetPotionEffectsPrompt", "Enter potion effect types separating each one by a space, or enter \"cancel\" to return");
|
||||||
en.put("eventEditorSetPotionDurationsPrompt", "Enter effect durations (in milliseconds) separating each one by a space, or enter \"cancel\" to return");
|
en.put("eventEditorSetPotionDurationsPrompt", "Enter effect durations (in milliseconds) separating each one by a space, or enter \"cancel\" to return");
|
||||||
en.put("eventEditorSetPotionMagnitudesPrompt", "Enter potion effect magnitudes separating each one by a space, or enter \"cancel\" to return");
|
en.put("eventEditorSetPotionMagnitudesPrompt", "Enter potion effect magnitudes separating each one by a space, or enter \"cancel\" to return");
|
||||||
@ -306,7 +323,8 @@ public class Lang {
|
|||||||
en.put("delay", "Delay");
|
en.put("delay", "Delay");
|
||||||
en.put("save", "Save");
|
en.put("save", "Save");
|
||||||
en.put("exit", "Exit");
|
en.put("exit", "Exit");
|
||||||
en.put("exited", "Exited.");
|
en.put("exited", "Exited");
|
||||||
|
en.put("cancel", "Cancel");
|
||||||
en.put("yes", "Yes");
|
en.put("yes", "Yes");
|
||||||
en.put("no", "No");
|
en.put("no", "No");
|
||||||
en.put("clear", "Clear");
|
en.put("clear", "Clear");
|
||||||
|
242
src/main/java/me/blackvein/quests/util/QuestMob.java
Normal file
242
src/main/java/me/blackvein/quests/util/QuestMob.java
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
package me.blackvein.quests.util;
|
||||||
|
|
||||||
|
import me.blackvein.quests.Quests;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.craftbukkit.v1_6_R2.entity.CraftEntity;
|
||||||
|
import org.bukkit.craftbukkit.v1_6_R2.entity.CraftLivingEntity;
|
||||||
|
import org.bukkit.craftbukkit.v1_6_R2.inventory.CraftItemStack;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.inventory.EntityEquipment;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class QuestMob {
|
||||||
|
|
||||||
|
private String name = null;
|
||||||
|
private EntityType entityType = null;
|
||||||
|
private Location spawnLocation = null;
|
||||||
|
private Integer spawnAmounts = null;
|
||||||
|
public ItemStack[] inventory = new ItemStack[5];
|
||||||
|
public Float[] dropChances = new Float[5];
|
||||||
|
|
||||||
|
public QuestMob (EntityType entityType, Location spawnLocation, int spawnAmounts) {
|
||||||
|
this.entityType = entityType;
|
||||||
|
this.spawnLocation = spawnLocation;
|
||||||
|
this.spawnAmounts = spawnAmounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QuestMob() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpawnLocation(Location spawnLocation) {
|
||||||
|
this.spawnLocation = spawnLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getSpawnLocation() {
|
||||||
|
return spawnLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(EntityType entityType) {
|
||||||
|
this.entityType = entityType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityType getType() {
|
||||||
|
return entityType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpawnAmounts(int spawnAmounts) {
|
||||||
|
this.spawnAmounts = spawnAmounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getSpawnAmounts() {
|
||||||
|
return spawnAmounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHelmet(ItemStack helmet, float dropChance) {
|
||||||
|
inventory[4] = helmet;
|
||||||
|
dropChances[4] = dropChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChest(ItemStack chest, float dropChance) {
|
||||||
|
inventory[3] = chest;
|
||||||
|
dropChances[3] = dropChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLeggings(ItemStack leggings, float dropChance) {
|
||||||
|
inventory[2] = leggings;
|
||||||
|
dropChances[2] = dropChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBoots(ItemStack boots, float dropChance) {
|
||||||
|
inventory[1] = boots;
|
||||||
|
dropChances[1] = dropChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeldItem(ItemStack heldItem, float dropChance) {
|
||||||
|
inventory[0] = heldItem;
|
||||||
|
dropChances[0] = dropChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void spawn() {
|
||||||
|
System.out.println("Spawned!");
|
||||||
|
World world = spawnLocation.getWorld();
|
||||||
|
|
||||||
|
for (int i = 0; i < spawnAmounts; i++) {
|
||||||
|
|
||||||
|
Entity entity = world.spawnEntity(spawnLocation, entityType);
|
||||||
|
|
||||||
|
if (name != null) {
|
||||||
|
((LivingEntity) entity).setCustomName(name);
|
||||||
|
((LivingEntity) entity).setCustomNameVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 0; j < 5; j++) {
|
||||||
|
if (inventory[j] != null)
|
||||||
|
((CraftEntity) entity).getHandle().setEquipment(j, CraftItemStack.asNMSCopy(inventory[j]));
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityEquipment eq = ((CraftLivingEntity) entity).getEquipment();
|
||||||
|
|
||||||
|
if (dropChances[0] != null) eq.setItemInHandDropChance(dropChances[0]);
|
||||||
|
if (dropChances[1] != null) eq.setBootsDropChance(dropChances[1]);
|
||||||
|
if (dropChances[2] != null) eq.setLeggingsDropChance(dropChances[2]);
|
||||||
|
if (dropChances[3] != null) eq.setChestplateDropChance(dropChances[3]);
|
||||||
|
if (dropChances[4] != null) eq.setHelmetDropChance(dropChances[4]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String serialize() {
|
||||||
|
String string = "";
|
||||||
|
string += "type-" + entityType.getName();
|
||||||
|
if (name != null) string += "::name-" + name;
|
||||||
|
if (spawnLocation != null) string += "::spawn-" + Quests.getLocationInfo(spawnLocation);
|
||||||
|
if (spawnAmounts != null) string += "::amounts-" + spawnAmounts;
|
||||||
|
|
||||||
|
if (inventory[0] != null) {
|
||||||
|
string += "::hand-" + ItemUtil.serialize(inventory[0]);
|
||||||
|
string += "::hand_drop-" + dropChances[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inventory[1] != null) {
|
||||||
|
string += "::boots-" + ItemUtil.serialize(inventory[1]);
|
||||||
|
string += "::boots_drop-" + dropChances[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inventory[2] != null) {
|
||||||
|
string += "::leggings-" + ItemUtil.serialize(inventory[2]);
|
||||||
|
string += "::leggings_drop-" + dropChances[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inventory[3] != null) {
|
||||||
|
string += "::chest-" + ItemUtil.serialize(inventory[3]);
|
||||||
|
string += "::chest_drop-" + dropChances[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inventory[4] != null) {
|
||||||
|
string += "::helmet-" + ItemUtil.serialize(inventory[4]);
|
||||||
|
string += "::helmet_drop-" + dropChances[4];
|
||||||
|
}
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static QuestMob fromString(String str) {
|
||||||
|
|
||||||
|
String name = null;
|
||||||
|
EntityType entityType = null;
|
||||||
|
Location loc = null;
|
||||||
|
Integer amounts = null;
|
||||||
|
ItemStack[] inventory = new ItemStack[5];
|
||||||
|
Float[] dropChances = new Float[5];
|
||||||
|
|
||||||
|
String[] args = str.split("::");
|
||||||
|
for (String string : args) {
|
||||||
|
if (string.startsWith("type-")) {
|
||||||
|
entityType = Quests.getMobType(string.substring(5));
|
||||||
|
} else if (string.startsWith("name-")) {
|
||||||
|
name = string.substring(5);
|
||||||
|
} else if (string.startsWith("spawn-")) {
|
||||||
|
loc = Quests.getLocation(string.substring(6));
|
||||||
|
} else if (string.startsWith("amounts-")) {
|
||||||
|
amounts = Integer.parseInt(string.substring(8));
|
||||||
|
} else if (string.startsWith("hand-")) {
|
||||||
|
inventory[0] = ItemUtil.readItemStack(string.substring(5));
|
||||||
|
} else if (string.startsWith("hand_drop-")) {
|
||||||
|
dropChances[0] = Float.parseFloat(string.substring(10));
|
||||||
|
} else if (string.startsWith("boots-")) {
|
||||||
|
inventory[1] = ItemUtil.readItemStack(string.substring(6));
|
||||||
|
} else if (string.startsWith("boots_drop-")) {
|
||||||
|
dropChances[1] = Float.parseFloat(string.substring(11));
|
||||||
|
} else if (string.startsWith("leggings-")) {
|
||||||
|
inventory[2] = ItemUtil.readItemStack(string.substring(9));
|
||||||
|
} else if (string.startsWith("leggings_drop-")) {
|
||||||
|
dropChances[2] = Float.parseFloat(string.substring(14));
|
||||||
|
} else if (string.startsWith("chest-")) {
|
||||||
|
inventory[3] = ItemUtil.readItemStack(string.substring(6));
|
||||||
|
} else if (string.startsWith("chest_drop-")) {
|
||||||
|
dropChances[3] = Float.parseFloat(string.substring(11));
|
||||||
|
} else if (string.startsWith("helmet-")) {
|
||||||
|
inventory[4] = ItemUtil.readItemStack(string.substring(7));
|
||||||
|
} else if (string.startsWith("helmet_drop-")) {
|
||||||
|
dropChances[4] = Float.parseFloat(string.substring(12));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QuestMob qm = new QuestMob(entityType, loc, amounts);
|
||||||
|
qm.setName(name);
|
||||||
|
qm.inventory = inventory;
|
||||||
|
qm.dropChances = dropChances;
|
||||||
|
return qm;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if ((o instanceof QuestMob) == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
QuestMob other = (QuestMob) o;
|
||||||
|
|
||||||
|
if (name.equalsIgnoreCase(other.name) == false)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (entityType != other.entityType)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (dropChances != other.dropChances)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (inventory.length == other.inventory.length) {
|
||||||
|
for (int i = 0; i < inventory.length; i++) {
|
||||||
|
if (ItemUtil.compareItems(inventory[i], other.inventory[i], false) != 0)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (spawnAmounts != other.spawnAmounts)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (spawnLocation != other.spawnLocation)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user