Quests - V2.8.6-01 - Code reformat - By GregZ_

* Incremented dev version in pom.xml.
     * Reformatted code to make it easier to read.
     * Organized import order because the current lack order hurts my head.
This commit is contained in:
GregZ_ 2017-06-23 15:43:07 +01:00
parent 73becdc67a
commit 82eca3991a
40 changed files with 22796 additions and 30178 deletions

View File

@ -3,7 +3,7 @@
<groupId>me.blackvein.quests</groupId>
<artifactId>quests</artifactId>
<version>2.8.6</version>
<version>2.8.6-01</version>
<name>quests</name>
<url>https://github.com/FlyingPikachu/Quests/</url>
<packaging>jar</packaging>

View File

@ -1,97 +1,102 @@
package com.evilmidget38;
import com.google.common.collect.ImmutableList;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.ByteBuffer;
import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.Callable;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import com.google.common.collect.ImmutableList;
public class UUIDFetcher implements Callable<Map<String, UUID>> {
private static final double PROFILES_PER_REQUEST = 100;
private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft";
private final JSONParser jsonParser = new JSONParser();
private final List<String> names;
private final boolean rateLimiting;
private static final double PROFILES_PER_REQUEST = 100;
private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft";
private final JSONParser jsonParser = new JSONParser();
private final List<String> names;
private final boolean rateLimiting;
public UUIDFetcher(List<String> names, boolean rateLimiting) {
this.names = ImmutableList.copyOf(names);
this.rateLimiting = rateLimiting;
}
public UUIDFetcher(List<String> names, boolean rateLimiting) {
this.names = ImmutableList.copyOf(names);
this.rateLimiting = rateLimiting;
}
public UUIDFetcher(List<String> names) {
this(names, true);
}
public UUIDFetcher(List<String> names) {
this(names, true);
}
public Map<String, UUID> call() throws Exception {
Map<String, UUID> uuidMap = new HashMap<String, UUID>();
int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST);
for (int i = 0; i < requests; i++) {
HttpURLConnection connection = createConnection();
String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size())));
writeBody(connection, body);
JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream()));
for (Object profile : array) {
JSONObject jsonProfile = (JSONObject) profile;
String id = (String) jsonProfile.get("id");
String name = (String) jsonProfile.get("name");
UUID uuid = UUIDFetcher.getUUID(id);
uuidMap.put(name, uuid);
}
if (rateLimiting && i != requests - 1) {
Thread.sleep(100L);
}
}
return uuidMap;
}
public Map<String, UUID> call() throws Exception {
Map<String, UUID> uuidMap = new HashMap<String, UUID>();
int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST);
for (int i = 0; i < requests; i++) {
HttpURLConnection connection = createConnection();
String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size())));
writeBody(connection, body);
JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream()));
for (Object profile : array) {
JSONObject jsonProfile = (JSONObject) profile;
String id = (String) jsonProfile.get("id");
String name = (String) jsonProfile.get("name");
UUID uuid = UUIDFetcher.getUUID(id);
uuidMap.put(name, uuid);
}
if (rateLimiting && i != requests - 1) {
Thread.sleep(100L);
}
}
return uuidMap;
}
private static void writeBody(HttpURLConnection connection, String body) throws Exception {
OutputStream stream = connection.getOutputStream();
stream.write(body.getBytes());
stream.flush();
stream.close();
}
private static void writeBody(HttpURLConnection connection, String body) throws Exception {
OutputStream stream = connection.getOutputStream();
stream.write(body.getBytes());
stream.flush();
stream.close();
}
private static HttpURLConnection createConnection() throws Exception {
URL url = new URL(PROFILE_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
return connection;
}
private static HttpURLConnection createConnection() throws Exception {
URL url = new URL(PROFILE_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
return connection;
}
private static UUID getUUID(String id) {
return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32));
}
private static UUID getUUID(String id) {
return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32));
}
public static byte[] toBytes(UUID uuid) {
ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]);
byteBuffer.putLong(uuid.getMostSignificantBits());
byteBuffer.putLong(uuid.getLeastSignificantBits());
return byteBuffer.array();
}
public static byte[] toBytes(UUID uuid) {
ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]);
byteBuffer.putLong(uuid.getMostSignificantBits());
byteBuffer.putLong(uuid.getLeastSignificantBits());
return byteBuffer.array();
}
public static UUID fromBytes(byte[] array) {
if (array.length != 16) {
throw new IllegalArgumentException("Illegal byte array length: " + array.length);
}
ByteBuffer byteBuffer = ByteBuffer.wrap(array);
long mostSignificant = byteBuffer.getLong();
long leastSignificant = byteBuffer.getLong();
return new UUID(mostSignificant, leastSignificant);
}
public static UUID fromBytes(byte[] array) {
if (array.length != 16) {
throw new IllegalArgumentException("Illegal byte array length: " + array.length);
}
ByteBuffer byteBuffer = ByteBuffer.wrap(array);
long mostSignificant = byteBuffer.getLong();
long leastSignificant = byteBuffer.getLong();
return new UUID(mostSignificant, leastSignificant);
}
public static UUID getUUIDOf(String name) throws Exception {
return new UUIDFetcher(Collections.singletonList(name)).call().get(name);
}
public static UUID getUUIDOf(String name) throws Exception {
return new UUIDFetcher(Collections.singletonList(name)).call().get(name);
}
}

View File

@ -9,46 +9,45 @@ import net.minecraft.server.v1_10_R1.PacketPlayOutWorldParticles;
public enum Eff_1_10_R1 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE),
@ -57,27 +56,15 @@ public enum Eff_1_10_R1 {
ENDROD(EnumParticle.END_ROD),
DAMAGE_INDICATOR(EnumParticle.DAMAGE_INDICATOR),
FALLING_DUST(EnumParticle.FALLING_DUST);
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_10_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_10_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -9,46 +9,45 @@ import net.minecraft.server.v1_11_R1.PacketPlayOutWorldParticles;
public enum Eff_1_11_R1 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE),
@ -59,27 +58,15 @@ public enum Eff_1_11_R1 {
FALLING_DUST(EnumParticle.FALLING_DUST),
SPIT(EnumParticle.SPIT),
TOTEM(EnumParticle.TOTEM);
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_11_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_11_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -9,46 +9,45 @@ import net.minecraft.server.v1_12_R1.PacketPlayOutWorldParticles;
public enum Eff_1_12_R1 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE),
@ -59,27 +58,15 @@ public enum Eff_1_12_R1 {
FALLING_DUST(EnumParticle.FALLING_DUST),
SPIT(EnumParticle.SPIT),
TOTEM(EnumParticle.TOTEM);
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_12_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_12_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,59 +8,50 @@ import net.minecraft.server.v1_7_R3.PacketPlayOutWorldParticles;
public enum Eff_1_7_R3 {
HUGE_EXPLOSION("hugeexplosion"),
LARGE_EXPLODE("largeexplode"),
FIREWORKS_SPARK("fireworksSpark"),
BUBBLE("bubble"),
SUSPEND("susgpend"),
DEPTH_SUSPEND("depthSuspend"),
TOWN_AURA("townaura"),
CRIT("crit"),
MAGIC_CRIT("magicCrit"),
MOB_SPELL("mobSpell"),
MOB_SPELL_AMBIENT("mobSpellAmbient"),
SPELL("spell"),
INSTANT_SPELL("instantSpell"),
WITCH_MAGIC("witchMagic"),
NOTE("note"),
PORTAL("portal"),
ENCHANTMENT_TABLE("enchantmenttable"),
EXPLODE("explode"),
FLAME("flame"),
LAVA("lava"),
FOOTSTEP("footstep"),
SPLASH("splash"),
LARGE_SMOKE("largesmoke"),
CLOUD("cloud"),
RED_DUST("reddust"),
SNOWBALL_POOF("snowballpoof"),
DRIP_WATER("dripWater"),
DRIP_LAVA("dripLava"),
SNOW_SHOVEL("snowshovel"),
SLIME("slime"),
HEART("heart"),
ANGRY_VILLAGER("angryVillager"),
HAPPY_VILLAGER("happyVillager"),
ICONCRACK("iconcrack_"),
TILECRACK("tilecrack_");
HUGE_EXPLOSION("hugeexplosion"),
LARGE_EXPLODE("largeexplode"),
FIREWORKS_SPARK("fireworksSpark"),
BUBBLE("bubble"),
SUSPEND("susgpend"),
DEPTH_SUSPEND("depthSuspend"),
TOWN_AURA("townaura"),
CRIT("crit"),
MAGIC_CRIT("magicCrit"),
MOB_SPELL("mobSpell"),
MOB_SPELL_AMBIENT("mobSpellAmbient"),
SPELL("spell"),
INSTANT_SPELL("instantSpell"),
WITCH_MAGIC("witchMagic"),
NOTE("note"),
PORTAL("portal"),
ENCHANTMENT_TABLE("enchantmenttable"),
EXPLODE("explode"),
FLAME("flame"),
LAVA("lava"),
FOOTSTEP("footstep"),
SPLASH("splash"),
LARGE_SMOKE("largesmoke"),
CLOUD("cloud"),
RED_DUST("reddust"),
SNOWBALL_POOF("snowballpoof"),
DRIP_WATER("dripWater"),
DRIP_LAVA("dripLava"),
SNOW_SHOVEL("snowshovel"),
SLIME("slime"),
HEART("heart"),
ANGRY_VILLAGER("angryVillager"),
HAPPY_VILLAGER("happyVillager"),
ICONCRACK("iconcrack_"),
TILECRACK("tilecrack_");
private final String particleName;
private final String particleName;
Eff_1_7_R3(String particleName) {
this.particleName = particleName;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleName,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
Eff_1_7_R3(String particleName) {
this.particleName = particleName;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleName, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,59 +8,50 @@ import net.minecraft.server.v1_7_R4.PacketPlayOutWorldParticles;
public enum Eff_1_7_R4 {
HUGE_EXPLOSION("hugeexplosion"),
LARGE_EXPLODE("largeexplode"),
FIREWORKS_SPARK("fireworksSpark"),
BUBBLE("bubble"),
SUSPEND("susgpend"),
DEPTH_SUSPEND("depthSuspend"),
TOWN_AURA("townaura"),
CRIT("crit"),
MAGIC_CRIT("magicCrit"),
MOB_SPELL("mobSpell"),
MOB_SPELL_AMBIENT("mobSpellAmbient"),
SPELL("spell"),
INSTANT_SPELL("instantSpell"),
WITCH_MAGIC("witchMagic"),
NOTE("note"),
PORTAL("portal"),
ENCHANTMENT_TABLE("enchantmenttable"),
EXPLODE("explode"),
FLAME("flame"),
LAVA("lava"),
FOOTSTEP("footstep"),
SPLASH("splash"),
LARGE_SMOKE("largesmoke"),
CLOUD("cloud"),
RED_DUST("reddust"),
SNOWBALL_POOF("snowballpoof"),
DRIP_WATER("dripWater"),
DRIP_LAVA("dripLava"),
SNOW_SHOVEL("snowshovel"),
SLIME("slime"),
HEART("heart"),
ANGRY_VILLAGER("angryVillager"),
HAPPY_VILLAGER("happyVillager"),
ICONCRACK("iconcrack_"),
TILECRACK("tilecrack_");
HUGE_EXPLOSION("hugeexplosion"),
LARGE_EXPLODE("largeexplode"),
FIREWORKS_SPARK("fireworksSpark"),
BUBBLE("bubble"),
SUSPEND("susgpend"),
DEPTH_SUSPEND("depthSuspend"),
TOWN_AURA("townaura"),
CRIT("crit"),
MAGIC_CRIT("magicCrit"),
MOB_SPELL("mobSpell"),
MOB_SPELL_AMBIENT("mobSpellAmbient"),
SPELL("spell"),
INSTANT_SPELL("instantSpell"),
WITCH_MAGIC("witchMagic"),
NOTE("note"),
PORTAL("portal"),
ENCHANTMENT_TABLE("enchantmenttable"),
EXPLODE("explode"),
FLAME("flame"),
LAVA("lava"),
FOOTSTEP("footstep"),
SPLASH("splash"),
LARGE_SMOKE("largesmoke"),
CLOUD("cloud"),
RED_DUST("reddust"),
SNOWBALL_POOF("snowballpoof"),
DRIP_WATER("dripWater"),
DRIP_LAVA("dripLava"),
SNOW_SHOVEL("snowshovel"),
SLIME("slime"),
HEART("heart"),
ANGRY_VILLAGER("angryVillager"),
HAPPY_VILLAGER("happyVillager"),
ICONCRACK("iconcrack_"),
TILECRACK("tilecrack_");
private final String particleName;
private final String particleName;
Eff_1_7_R4(String particleName) {
this.particleName = particleName;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleName,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
Eff_1_7_R4(String particleName) {
this.particleName = particleName;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleName, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,69 +8,58 @@ import net.minecraft.server.v1_8_R1.EnumParticle;
import net.minecraft.server.v1_8_R1.PacketPlayOutWorldParticles;
public enum Eff_1_8_R1 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE);
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_8_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_8_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,69 +8,58 @@ import net.minecraft.server.v1_8_R2.EnumParticle;
import net.minecraft.server.v1_8_R2.PacketPlayOutWorldParticles;
public enum Eff_1_8_R2 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE);
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_8_R2(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_8_R2(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,69 +8,58 @@ import net.minecraft.server.v1_8_R3.EnumParticle;
import net.minecraft.server.v1_8_R3.PacketPlayOutWorldParticles;
public enum Eff_1_8_R3 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE);
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_8_R3(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_8_R3(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,46 +8,46 @@ import net.minecraft.server.v1_9_R1.EnumParticle;
import net.minecraft.server.v1_9_R1.PacketPlayOutWorldParticles;
public enum Eff_1_9_R1 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE),
@ -56,25 +56,14 @@ public enum Eff_1_9_R1 {
ENDROD(EnumParticle.END_ROD),
DAMAGE_INDICATOR(EnumParticle.DAMAGE_INDICATOR),;
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_9_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_9_R1(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,46 +8,46 @@ import net.minecraft.server.v1_9_R2.EnumParticle;
import net.minecraft.server.v1_9_R2.PacketPlayOutWorldParticles;
public enum Eff_1_9_R2 {
EXPLOSION(EnumParticle.EXPLOSION_NORMAL),
EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE),
FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK),
BUBBLE(EnumParticle.WATER_BUBBLE),
WAKE(EnumParticle.WATER_WAKE),
SPLASH(EnumParticle.WATER_SPLASH),
SUSPENDED(EnumParticle.SUSPENDED),
DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH),
CRIT(EnumParticle.CRIT),
MAGIC_CRIT(EnumParticle.CRIT_MAGIC),
SMOKE(EnumParticle.SMOKE_NORMAL),
LARGE_SMOKE(EnumParticle.SMOKE_LARGE),
SPELL(EnumParticle.SPELL),
INSTANT_SPELL(EnumParticle.SPELL_INSTANT),
MOB_SPELL(EnumParticle.SPELL_MOB),
MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT),
WITCH_MAGIC(EnumParticle.SPELL_WITCH),
DRIP_WATER(EnumParticle.DRIP_WATER),
DRIP_LAVA(EnumParticle.DRIP_LAVA),
ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY),
HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY),
TOWN_AURA(EnumParticle.TOWN_AURA),
NOTE(EnumParticle.NOTE),
PORTAL(EnumParticle.PORTAL),
ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE),
FLAME(EnumParticle.FLAME),
LAVA(EnumParticle.LAVA),
FOOTSTEP(EnumParticle.FOOTSTEP),
CLOUD(EnumParticle.CLOUD),
RED_DUST(EnumParticle.REDSTONE),
SNOWBALL_POOF(EnumParticle.SNOWBALL),
SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL),
SLIME(EnumParticle.SLIME),
HEART(EnumParticle.HEART),
BARRIER(EnumParticle.BARRIER),
ICONCRACK_(EnumParticle.ITEM_CRACK),
BLOCKCRACK_(EnumParticle.BLOCK_CRACK),
BLOCKDUST_(EnumParticle.BLOCK_DUST),
DROPLET(EnumParticle.WATER_DROP),
TAKE(EnumParticle.ITEM_TAKE),
MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE),
@ -56,25 +56,14 @@ public enum Eff_1_9_R2 {
ENDROD(EnumParticle.END_ROD),
DAMAGE_INDICATOR(EnumParticle.DAMAGE_INDICATOR),;
private final EnumParticle particleEnum;
private final EnumParticle particleEnum;
Eff_1_9_R2(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
Eff_1_9_R2(EnumParticle particleEnum) {
this.particleEnum = particleEnum;
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum,
false,
(float) location.getX(),
(float) location.getY(),
(float) location.getZ(),
offsetX,
offsetY,
offsetZ,
speed,
count,
data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception {
PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(particleEnum, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count, data);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
}

View File

@ -8,227 +8,183 @@ import org.bukkit.event.Listener;
public abstract class CustomObjective implements Listener {
private String name = null;
private String author = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
private String countPrompt = "null";
private String display = "null";
private boolean enableCount = true;
private boolean showCount = true;
private int count = 1;
private String name = null;
private String author = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
private String countPrompt = "null";
private String display = "null";
private boolean enableCount = true;
private boolean showCount = true;
private int count = 1;
public String getName() {
return name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public void setAuthor(String author) {
this.author = author;
}
public void addData(String name) {
datamap.put(name, null);
}
public void addData(String name) {
datamap.put(name, null);
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
}
public int getCount() {
return count;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public void setCount(int count) {
this.count = count;
}
public String getCountPrompt() {
return countPrompt;
}
public String getCountPrompt() {
return countPrompt;
}
public void setCountPrompt(String countPrompt) {
this.countPrompt = countPrompt;
}
public void setCountPrompt(String countPrompt) {
this.countPrompt = countPrompt;
}
public boolean isCountShown() {
return showCount;
}
public boolean isCountShown() {
return showCount;
}
public void setShowCount(boolean showCount) {
this.showCount = showCount;
}
public void setShowCount(boolean showCount) {
this.showCount = showCount;
}
public String getDisplay() {
return display;
}
public String getDisplay() {
return display;
}
public void setDisplay(String display) {
this.display = display;
}
public void setDisplay(String display) {
this.display = display;
}
public boolean isEnableCount() {
return enableCount;
}
public boolean isEnableCount() {
return enableCount;
}
public void setEnableCount(boolean enableCount) {
this.enableCount = enableCount;
}
public void setEnableCount(boolean enableCount) {
this.enableCount = enableCount;
}
public static Map<String, Object> getDatamap(Player player, CustomObjective obj, Quest quest) {
public static Map<String, Object> getDatamap(Player player, CustomObjective obj, Quest quest) {
Quester quester = Quests.getInstance().getQuester(player.getUniqueId());
if (quester != null) {
Stage currentStage = quester.getCurrentStage(quest);
if (currentStage == null)
return null;
int index = -1;
int tempIndex = 0;
for (me.blackvein.quests.CustomObjective co : currentStage.customObjectives) {
if (co.getName().equals(obj.getName())) {
index = tempIndex;
break;
}
tempIndex++;
}
if (index > -1) {
return currentStage.customObjectiveData.get(index);
}
}
return null;
}
Quester quester = Quests.getInstance().getQuester(player.getUniqueId());
if (quester != null) {
Stage currentStage = quester.getCurrentStage(quest);
if (currentStage == null) return null;
int index = -1;
int tempIndex = 0;
for (me.blackvein.quests.CustomObjective co : currentStage.customObjectives) {
if (co.getName().equals(obj.getName())) {
index = tempIndex;
break;
}
tempIndex++;
}
if (index > -1) {
return currentStage.customObjectiveData.get(index);
}
}
return null;
}
public static void incrementObjective(Player player, CustomObjective obj, int count, Quest quest) {
Quester quester = Quests.getInstance().getQuester(player.getUniqueId());
if (quester != null) {
//Check if the player has Quest with objective
boolean hasQuest = false;
for (CustomObjective co : quester.getCurrentStage(quest).customObjectives) {
if (co.getName().equals(obj.getName())) {
hasQuest = true;
break;
}
}
if (hasQuest && quester.hasCustomObjective(quest, obj.getName())) {
if (quester.getQuestData(quest).customObjectiveCounts.containsKey(obj.getName())) {
int old = quester.getQuestData(quest).customObjectiveCounts.get(obj.getName());
Quests.getInstance().getQuester(player.getUniqueId()).getQuestData(quest).customObjectiveCounts.put(obj.getName(), old + count);
} else {
Quests.getInstance().getQuester(player.getUniqueId()).getQuestData(quest).customObjectiveCounts.put(obj.getName(), count);
}
int index = -1;
for (int i = 0; i < quester.getCurrentStage(quest).customObjectives.size(); i++) {
if (quester.getCurrentStage(quest).customObjectives.get(i).getName().equals(obj.getName())) {
index = i;
break;
}
}
if (index > -1) {
if (quester.getQuestData(quest).customObjectiveCounts.get(obj.getName()) >= quester.getCurrentStage(quest).customObjectiveCounts.get(index)) {
quester.finishObjective(quest, "customObj", null, null, null, null, null, null, null, null, null, obj);
}
}
}
}
}
@Override
public boolean equals(Object o) {
if (o instanceof CustomObjective) {
CustomObjective other = (CustomObjective) o;
if (other.name.equals(name) == false) {
return false;
}
if (other.author.equals(name) == false) {
return false;
}
for (String s : other.datamap.keySet()) {
if (datamap.containsKey(s) == false) {
return false;
}
}
for (Object val : other.datamap.values()) {
if (datamap.containsValue(val) == false) {
return false;
}
}
for (String s : other.descriptions.keySet()) {
if (descriptions.containsKey(s) == false) {
return false;
}
}
for (String s : other.descriptions.values()) {
if (descriptions.containsValue(s) == false) {
return false;
}
}
if (other.countPrompt.equals(countPrompt) == false) {
return false;
}
if (other.display.equals(display) == false) {
return false;
}
if (other.enableCount != enableCount) {
return false;
}
if (other.showCount != showCount) {
return false;
}
if (other.count != count) {
return false;
}
return true;
}
return false;
}
public static void incrementObjective(Player player, CustomObjective obj, int count, Quest quest) {
Quester quester = Quests.getInstance().getQuester(player.getUniqueId());
if (quester != null) {
// Check if the player has Quest with objective
boolean hasQuest = false;
for (CustomObjective co : quester.getCurrentStage(quest).customObjectives) {
if (co.getName().equals(obj.getName())) {
hasQuest = true;
break;
}
}
if (hasQuest && quester.hasCustomObjective(quest, obj.getName())) {
if (quester.getQuestData(quest).customObjectiveCounts.containsKey(obj.getName())) {
int old = quester.getQuestData(quest).customObjectiveCounts.get(obj.getName());
Quests.getInstance().getQuester(player.getUniqueId()).getQuestData(quest).customObjectiveCounts.put(obj.getName(), old + count);
} else {
Quests.getInstance().getQuester(player.getUniqueId()).getQuestData(quest).customObjectiveCounts.put(obj.getName(), count);
}
int index = -1;
for (int i = 0; i < quester.getCurrentStage(quest).customObjectives.size(); i++) {
if (quester.getCurrentStage(quest).customObjectives.get(i).getName().equals(obj.getName())) {
index = i;
break;
}
}
if (index > -1) {
if (quester.getQuestData(quest).customObjectiveCounts.get(obj.getName()) >= quester.getCurrentStage(quest).customObjectiveCounts.get(index)) {
quester.finishObjective(quest, "customObj", null, null, null, null, null, null, null, null, null, obj);
}
}
}
}
}
@Override
public boolean equals(Object o) {
if (o instanceof CustomObjective) {
CustomObjective other = (CustomObjective) o;
if (other.name.equals(name) == false) {
return false;
}
if (other.author.equals(name) == false) {
return false;
}
for (String s : other.datamap.keySet()) {
if (datamap.containsKey(s) == false) {
return false;
}
}
for (Object val : other.datamap.values()) {
if (datamap.containsValue(val) == false) {
return false;
}
}
for (String s : other.descriptions.keySet()) {
if (descriptions.containsKey(s) == false) {
return false;
}
}
for (String s : other.descriptions.values()) {
if (descriptions.containsValue(s) == false) {
return false;
}
}
if (other.countPrompt.equals(countPrompt) == false) {
return false;
}
if (other.display.equals(display) == false) {
return false;
}
if (other.enableCount != enableCount) {
return false;
}
if (other.showCount != showCount) {
return false;
}
if (other.count != count) {
return false;
}
return true;
}
return false;
}
}

View File

@ -2,39 +2,39 @@ package me.blackvein.quests;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.entity.Player;
public abstract class CustomRequirement {
private String name = null;
private String author = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
private String name = null;
private String author = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
public abstract boolean testRequirement(Player p, Map<String, Object> m);
public abstract boolean testRequirement(Player p, Map<String, Object> m);
public String getName() {
return name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public void setAuthor(String author) {
this.author = author;
}
public void addData(String name) {
datamap.put(name, null);
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
}
public void addData(String name) {
datamap.put(name, null);
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
}
}

View File

@ -2,48 +2,48 @@ package me.blackvein.quests;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.entity.Player;
public abstract class CustomReward {
private String name = null;
private String author = null;
private String rewardName = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
private String name = null;
private String author = null;
private String rewardName = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
public abstract void giveReward(Player p, Map<String, Object> m);
public abstract void giveReward(Player p, Map<String, Object> m);
public String getName() {
return name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public void setAuthor(String author) {
this.author = author;
}
public void addData(String name) {
datamap.put(name, null);
}
public void addData(String name) {
datamap.put(name, null);
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
}
public void setRewardName(String name) {
rewardName = name;
}
public String getRewardName() {
return rewardName;
}
public void setRewardName(String name) {
rewardName = name;
}
public String getRewardName() {
return rewardName;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,14 +3,6 @@ package me.blackvein.quests;
import java.text.MessageFormat;
import java.util.LinkedList;
import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.event.NPCDeathEvent;
import net.citizensnpcs.api.event.NPCLeftClickEvent;
import net.citizensnpcs.api.event.NPCRightClickEvent;
import net.citizensnpcs.api.npc.NPC;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.conversations.Conversation;
@ -23,302 +15,208 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.inventory.ItemStack;
import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.event.NPCDeathEvent;
import net.citizensnpcs.api.event.NPCLeftClickEvent;
import net.citizensnpcs.api.event.NPCRightClickEvent;
import net.citizensnpcs.api.npc.NPC;
public class NpcListener implements Listener {
final Quests plugin;
final Quests plugin;
public NpcListener(Quests newPlugin) {
public NpcListener(Quests newPlugin) {
plugin = newPlugin;
}
plugin = newPlugin;
}
@SuppressWarnings("deprecation")
@SuppressWarnings("deprecation")
@EventHandler(priority = EventPriority.LOWEST)
public void onNPCRightClick(NPCRightClickEvent evt) {
if (plugin.questFactory.selectingNPCs.contains(evt.getClicker())) {
evt.getClicker().sendMessage(ChatColor.GREEN + evt.getNPC().getName() + ": " + ChatColor.DARK_GREEN + "ID " + evt.getNPC().getId());
return;
}
if (evt.getClicker().isConversing() == false) {
final Player player = evt.getClicker();
final Quester quester = plugin.getQuester(player.getUniqueId());
boolean delivery = false;
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "deliverItem") && player.getItemInHand() != null) {
ItemStack hand = player.getItemInHand();
ItemStack found = null;
for (ItemStack is : quester.getCurrentStage(quest).itemsToDeliver) {
if (ItemUtil.compareItems(is, hand, true) == 0) {
found = is;
break;
}
}
NPC clicked = evt.getNPC();
if (found != null) {
for (Integer n : quester.getCurrentStage(quest).itemDeliveryTargets) {
if (n.equals(clicked.getId())) {
quester.deliverItem(quest, hand);
delivery = true;
break;
}
}
break;
} else if (!hand.getType().equals(Material.AIR)){
for (Integer n : quester.getCurrentStage(quest).itemDeliveryTargets) {
if (n.equals(clicked.getId())) {
String text = "";
if (hand.hasItemMeta()) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.ITALIC + (hand.getItemMeta().hasDisplayName() ? hand.getItemMeta().getDisplayName() + ChatColor.GRAY + " (" : "");
}
text += ChatColor.AQUA + Quester.prettyItemString(hand.getType().name()) + (hand.getDurability() != 0 ? (":" + ChatColor.BLUE + hand.getDurability()) : "") + ChatColor.GRAY;
if (hand.hasItemMeta()) {
text += (hand.getItemMeta().hasDisplayName() ? ")" : "");
}
text += " x " + ChatColor.DARK_AQUA + hand.getAmount() + ChatColor.GRAY;
evt.getClicker().sendMessage(Lang.get("questInvalidDeliveryItem").replaceAll("<item>", text));
break;
}
}
//break;
}
}
}
if (plugin.questNPCs.contains(evt.getNPC()) && delivery == false) {
if (plugin.checkQuester(player.getUniqueId()) == false) {
boolean hasObjective = false;
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "talkToNPC")) {
if (quester.getQuestData(quest) != null && quester.getQuestData(quest).citizensInteracted.containsKey(evt.getNPC().getId()) && quester.getQuestData(quest).citizensInteracted.get(evt.getNPC().getId()) == false) {
hasObjective = true;
}
quester.interactWithNPC(quest, evt.getNPC());
}
}
if (!hasObjective) {
LinkedList<Quest> npcQuests = new LinkedList<Quest>();
for (Quest q : plugin.getQuests()) {
if(quester.currentQuests.containsKey(q))
continue;
if (q.npcStart != null && q.npcStart.getId() == evt.getNPC().getId()) {
if (Quests.ignoreLockedQuests && (quester.completedQuests.contains(q.name) == false || q.redoDelay > -1)) {
if (q.testRequirements(quester)) {
npcQuests.add(q);
}
} else if (quester.completedQuests.contains(q.name) == false || q.redoDelay > -1) {
npcQuests.add(q);
}
}
}
if (npcQuests.isEmpty() == false && npcQuests.size() >= 1) {
if (plugin.questNPCGUIs.contains(evt.getNPC().getId())) {
quester.showGUIDisplay(evt.getNPC(), npcQuests);
return;
}
Conversation c = plugin.NPCConversationFactory.buildConversation(player);
c.getContext().setSessionData("quests", npcQuests);
c.getContext().setSessionData("npc", evt.getNPC().getName());
c.begin();
} else if (npcQuests.size() == 1) {
Quest q = npcQuests.get(0);
if (!quester.completedQuests.contains(q.name)) {
if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation(player).begin();
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
} else if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
if (quester.getDifference(q) > 0) {
String early = Lang.get("questTooEarly");
early = early.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
early = early.replaceAll("<time>", ChatColor.DARK_PURPLE + Quests.getTime(quester.getDifference(q)) + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + early);
} else if (q.redoDelay < 0) {
String completed = Lang.get("questAlreadyCompleted");
completed = completed.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + completed);
} else {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation(player).begin();
}
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
} else if (npcQuests.isEmpty()) {
evt.getClicker().sendMessage(ChatColor.YELLOW + Lang.get("noMoreQuest"));
}
}
}
}
}
}
@EventHandler
public void onNPCLeftClick(NPCLeftClickEvent evt) {
if (plugin.questFactory.selectingNPCs.contains(evt.getClicker())) {
evt.getClicker().sendMessage(ChatColor.GREEN + evt.getNPC().getName() + ": " + ChatColor.DARK_GREEN + Lang.get("id") + " " + evt.getNPC().getId());
}
}
@EventHandler
public void onNPCDeath(NPCDeathEvent evt) {
if (evt.getNPC().getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) evt.getNPC().getEntity().getLastDamageCause();
Entity damager = damageEvent.getDamager();
if (damager != null) {
if (damager instanceof Projectile) {
if (evt.getNPC().getEntity().getLastDamageCause().getEntity() instanceof Player) {
Player player = (Player) evt.getNPC().getEntity().getLastDamageCause().getEntity();
boolean okay = true;
if (plugin.citizens != null) {
if (CitizensAPI.getNPCRegistry().isNPC(player)) {
okay = false;
}
}
if (okay) {
Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "killNPC")) {
quester.killNPC(quest, evt.getNPC());
}
}
}
}
} else if (damager instanceof Player) {
boolean okay = true;
if (plugin.citizens != null) {
if (plugin.citizens.getNPCRegistry().isNPC(damager)) {
okay = false;
}
}
if (okay) {
Player player = (Player) damager;
Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "killNPC")) {
quester.killNPC(quest, evt.getNPC());
}
}
}
}
}
}
}
private String extracted(final Quester quester) {
return MessageFormat.format("{0}- {1}{2}{3} -\n\n{4}{5}\n",
ChatColor.GOLD,
ChatColor.DARK_PURPLE,
quester.questToTake,
ChatColor.GOLD,
ChatColor.RESET, plugin.getQuest(quester.questToTake).description);
}
public void onNPCRightClick(NPCRightClickEvent evt) {
if (plugin.questFactory.selectingNPCs.contains(evt.getClicker())) {
evt.getClicker().sendMessage(ChatColor.GREEN + evt.getNPC().getName() + ": " + ChatColor.DARK_GREEN + "ID " + evt.getNPC().getId());
return;
}
if (evt.getClicker().isConversing() == false) {
final Player player = evt.getClicker();
final Quester quester = plugin.getQuester(player.getUniqueId());
boolean delivery = false;
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "deliverItem") && player.getItemInHand() != null) {
ItemStack hand = player.getItemInHand();
ItemStack found = null;
for (ItemStack is : quester.getCurrentStage(quest).itemsToDeliver) {
if (ItemUtil.compareItems(is, hand, true) == 0) {
found = is;
break;
}
}
NPC clicked = evt.getNPC();
if (found != null) {
for (Integer n : quester.getCurrentStage(quest).itemDeliveryTargets) {
if (n.equals(clicked.getId())) {
quester.deliverItem(quest, hand);
delivery = true;
break;
}
}
break;
} else if (!hand.getType().equals(Material.AIR)) {
for (Integer n : quester.getCurrentStage(quest).itemDeliveryTargets) {
if (n.equals(clicked.getId())) {
String text = "";
if (hand.hasItemMeta()) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.ITALIC + (hand.getItemMeta().hasDisplayName() ? hand.getItemMeta().getDisplayName() + ChatColor.GRAY + " (" : "");
}
text += ChatColor.AQUA + Quester.prettyItemString(hand.getType().name()) + (hand.getDurability() != 0 ? (":" + ChatColor.BLUE + hand.getDurability()) : "") + ChatColor.GRAY;
if (hand.hasItemMeta()) {
text += (hand.getItemMeta().hasDisplayName() ? ")" : "");
}
text += " x " + ChatColor.DARK_AQUA + hand.getAmount() + ChatColor.GRAY;
evt.getClicker().sendMessage(Lang.get("questInvalidDeliveryItem").replaceAll("<item>", text));
break;
}
}
// break;
}
}
}
if (plugin.questNPCs.contains(evt.getNPC()) && delivery == false) {
if (plugin.checkQuester(player.getUniqueId()) == false) {
boolean hasObjective = false;
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "talkToNPC")) {
if (quester.getQuestData(quest) != null && quester.getQuestData(quest).citizensInteracted.containsKey(evt.getNPC().getId()) && quester.getQuestData(quest).citizensInteracted.get(evt.getNPC().getId()) == false) {
hasObjective = true;
}
quester.interactWithNPC(quest, evt.getNPC());
}
}
if (!hasObjective) {
LinkedList<Quest> npcQuests = new LinkedList<Quest>();
for (Quest q : plugin.getQuests()) {
if (quester.currentQuests.containsKey(q))
continue;
if (q.npcStart != null && q.npcStart.getId() == evt.getNPC().getId()) {
if (Quests.ignoreLockedQuests && (quester.completedQuests.contains(q.name) == false || q.redoDelay > -1)) {
if (q.testRequirements(quester)) {
npcQuests.add(q);
}
} else if (quester.completedQuests.contains(q.name) == false || q.redoDelay > -1) {
npcQuests.add(q);
}
}
}
if (npcQuests.isEmpty() == false && npcQuests.size() >= 1) {
if (plugin.questNPCGUIs.contains(evt.getNPC().getId())) {
quester.showGUIDisplay(evt.getNPC(), npcQuests);
return;
}
Conversation c = plugin.NPCConversationFactory.buildConversation(player);
c.getContext().setSessionData("quests", npcQuests);
c.getContext().setSessionData("npc", evt.getNPC().getName());
c.begin();
} else if (npcQuests.size() == 1) {
Quest q = npcQuests.get(0);
if (!quester.completedQuests.contains(q.name)) {
if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation(player).begin();
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
} else if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
if (quester.getDifference(q) > 0) {
String early = Lang.get("questTooEarly");
early = early.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
early = early.replaceAll("<time>", ChatColor.DARK_PURPLE + Quests.getTime(quester.getDifference(q)) + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + early);
} else if (q.redoDelay < 0) {
String completed = Lang.get("questAlreadyCompleted");
completed = completed.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + completed);
} else {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation(player).begin();
}
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
} else if (npcQuests.isEmpty()) {
evt.getClicker().sendMessage(ChatColor.YELLOW + Lang.get("noMoreQuest"));
}
}
}
}
}
}
@EventHandler
public void onNPCLeftClick(NPCLeftClickEvent evt) {
if (plugin.questFactory.selectingNPCs.contains(evt.getClicker())) {
evt.getClicker().sendMessage(ChatColor.GREEN + evt.getNPC().getName() + ": " + ChatColor.DARK_GREEN + Lang.get("id") + " " + evt.getNPC().getId());
}
}
@EventHandler
public void onNPCDeath(NPCDeathEvent evt) {
if (evt.getNPC().getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) evt.getNPC().getEntity().getLastDamageCause();
Entity damager = damageEvent.getDamager();
if (damager != null) {
if (damager instanceof Projectile) {
if (evt.getNPC().getEntity().getLastDamageCause().getEntity() instanceof Player) {
Player player = (Player) evt.getNPC().getEntity().getLastDamageCause().getEntity();
boolean okay = true;
if (plugin.citizens != null) {
if (CitizensAPI.getNPCRegistry().isNPC(player)) {
okay = false;
}
}
if (okay) {
Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "killNPC")) {
quester.killNPC(quest, evt.getNPC());
}
}
}
}
} else if (damager instanceof Player) {
boolean okay = true;
if (plugin.citizens != null) {
if (plugin.citizens.getNPCRegistry().isNPC(damager)) {
okay = false;
}
}
if (okay) {
Player player = (Player) damager;
Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : quester.currentQuests.keySet()) {
if (quester.hasObjective(quest, "killNPC")) {
quester.killNPC(quest, evt.getNPC());
}
}
}
}
}
}
}
private String extracted(final Quester quester) {
return MessageFormat.format("{0}- {1}{2}{3} -\n\n{4}{5}\n", ChatColor.GOLD, ChatColor.DARK_PURPLE, quester.questToTake, ChatColor.GOLD, ChatColor.RESET, plugin.getQuest(quester.questToTake).description);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,21 @@
package me.blackvein.quests;
import org.bukkit.entity.Player;
import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizencore.scripts.ScriptRegistry;
import net.aufdemrand.denizencore.scripts.containers.core.TaskScriptContainer;
import org.bukkit.entity.Player;
public class QuestTaskTrigger {
public boolean parseQuestTaskTrigger(String theScriptName, Player player) {
if (!ScriptRegistry.containsScript(theScriptName)) {
return false;
}
TaskScriptContainer task_script = ScriptRegistry.getScriptContainerAs(theScriptName, TaskScriptContainer.class);
BukkitScriptEntryData entryData = new BukkitScriptEntryData(dPlayer.mirrorBukkitPlayer(player), null);
task_script.runTaskScript(entryData, null);
return true;
}
public boolean parseQuestTaskTrigger(String theScriptName, Player player) {
if (!ScriptRegistry.containsScript(theScriptName)) {
return false;
}
TaskScriptContainer task_script = ScriptRegistry.getScriptContainerAs(theScriptName, TaskScriptContainer.class);
BukkitScriptEntryData entryData = new BukkitScriptEntryData(dPlayer.mirrorBukkitPlayer(player), null);
task_script.runTaskScript(entryData, null);
return true;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -16,371 +16,296 @@ import org.bukkit.inventory.ItemStack;
public class Stage {
LinkedList<ItemStack> blocksToDamage = new LinkedList<ItemStack>();
LinkedList<ItemStack> blocksToBreak = new LinkedList<ItemStack>();
LinkedList<ItemStack> blocksToPlace = new LinkedList<ItemStack>();
LinkedList<ItemStack> blocksToUse = new LinkedList<ItemStack>();
LinkedList<ItemStack> blocksToCut = new LinkedList<ItemStack>();
Integer fishToCatch;
Integer playersToKill;
Map<Map<Enchantment, Material>, Integer> itemsToEnchant = new HashMap<Map<Enchantment, Material>, Integer>();
LinkedList<EntityType> mobsToKill = new LinkedList<EntityType>();
LinkedList<Integer> mobNumToKill = new LinkedList<Integer>();
LinkedList<Location> locationsToKillWithin = new LinkedList<Location>();
LinkedList<Integer> radiiToKillWithin = new LinkedList<Integer>();
LinkedList<String> areaNames = new LinkedList<String>();
LinkedList<ItemStack> itemsToDeliver = new LinkedList<ItemStack>();
LinkedList<Integer> itemDeliveryTargets = new LinkedList<Integer>() {
LinkedList<ItemStack> blocksToBreak = new LinkedList<ItemStack>();
LinkedList<ItemStack> blocksToPlace = new LinkedList<ItemStack>();
LinkedList<ItemStack> blocksToUse = new LinkedList<ItemStack>();
LinkedList<ItemStack> blocksToCut = new LinkedList<ItemStack>();
Integer fishToCatch;
Integer playersToKill;
Map<Map<Enchantment, Material>, Integer> itemsToEnchant = new HashMap<Map<Enchantment, Material>, Integer>();
LinkedList<EntityType> mobsToKill = new LinkedList<EntityType>();
LinkedList<Integer> mobNumToKill = new LinkedList<Integer>();
LinkedList<Location> locationsToKillWithin = new LinkedList<Location>();
LinkedList<Integer> radiiToKillWithin = new LinkedList<Integer>();
LinkedList<String> areaNames = new LinkedList<String>();
LinkedList<ItemStack> itemsToDeliver = new LinkedList<ItemStack>();
LinkedList<Integer> itemDeliveryTargets = new LinkedList<Integer>() {
private static final long serialVersionUID = -2774443496142382127L;
@Override
public boolean equals(Object o) {
if (o instanceof LinkedList) {
@SuppressWarnings("unchecked")
public boolean equals(Object o) {
if (o instanceof LinkedList) {
@SuppressWarnings("unchecked")
LinkedList<Integer> otherList = (LinkedList<Integer>) o;
for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i));
if (!other.equals(i)) {
return false;
}
}
}
return true;
}
};
public LinkedList<String> deliverMessages = new LinkedList<String>();
public LinkedList<Integer> citizensToInteract = new LinkedList<Integer>() {
for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i));
if (!other.equals(i)) {
return false;
}
}
}
return true;
}
};
public LinkedList<String> deliverMessages = new LinkedList<String>();
public LinkedList<Integer> citizensToInteract = new LinkedList<Integer>() {
private static final long serialVersionUID = -4086855121042524435L;
@Override
public boolean equals(Object o) {
if (o instanceof LinkedList) {
@SuppressWarnings("unchecked")
public boolean equals(Object o) {
if (o instanceof LinkedList) {
@SuppressWarnings("unchecked")
LinkedList<Integer> otherList = (LinkedList<Integer>) o;
for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i));
if (!other.equals(i)) {
return false;
}
}
}
return true;
}
};
public LinkedList<Integer> citizensToKill = new LinkedList<Integer>() {
for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i));
if (!other.equals(i)) {
return false;
}
}
}
return true;
}
};
public LinkedList<Integer> citizensToKill = new LinkedList<Integer>() {
private static final long serialVersionUID = 7705964814014176415L;
@Override
public boolean equals(Object o) {
if (o instanceof LinkedList) {
@SuppressWarnings("unchecked")
public boolean equals(Object o) {
if (o instanceof LinkedList) {
@SuppressWarnings("unchecked")
LinkedList<Integer> otherList = (LinkedList<Integer>) o;
for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i));
if (!other.equals(i)) {
return false;
}
}
}
return true;
}
};
public LinkedList<Integer> citizenNumToKill = new LinkedList<Integer>();
public LinkedList<Location> locationsToReach = new LinkedList<Location>();
public LinkedList<Integer> radiiToReachWithin = new LinkedList<Integer>();
public LinkedList<World> worldsToReachWithin = new LinkedList<World>();
public LinkedList<String> locationNames = new LinkedList<String>();
public Map<EntityType, Integer> mobsToTame = new EnumMap<EntityType, Integer>(EntityType.class);
public Map<DyeColor, Integer> sheepToShear = new EnumMap<DyeColor, Integer>(DyeColor.class);
public Map<EnumMap<Material, Integer>, Boolean> itemsToCraft = new HashMap<EnumMap<Material, Integer>, Boolean>();
public LinkedList<CustomObjective> customObjectives = new LinkedList<CustomObjective>();
public LinkedList<Integer> customObjectiveCounts = new LinkedList<Integer>();
public LinkedList<String> customObjectiveDisplays = new LinkedList<String>();
public LinkedList<Map<String, Object>> customObjectiveData = new LinkedList<Map<String, Object>>();
public LinkedList<String> passwordDisplays = new LinkedList<String>();
public LinkedList<LinkedList<String>> passwordPhrases = new LinkedList<LinkedList<String>>();
public String script;
public Event startEvent = null;
public Event deathEvent = null;
public Map<String, Event> chatEvents = new HashMap<String, Event>();
public Event disconnectEvent = null;
public Event finishEvent = null;
public long delay = -1;
public String delayMessage = null;
public String completeMessage = null;
public String startMessage = null;
public String objectiveOverride = null;
for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i));
if (!other.equals(i)) {
return false;
}
}
}
return true;
}
};
public LinkedList<Integer> citizenNumToKill = new LinkedList<Integer>();
public LinkedList<Location> locationsToReach = new LinkedList<Location>();
public LinkedList<Integer> radiiToReachWithin = new LinkedList<Integer>();
public LinkedList<World> worldsToReachWithin = new LinkedList<World>();
public LinkedList<String> locationNames = new LinkedList<String>();
public Map<EntityType, Integer> mobsToTame = new EnumMap<EntityType, Integer>(EntityType.class);
public Map<DyeColor, Integer> sheepToShear = new EnumMap<DyeColor, Integer>(DyeColor.class);
public Map<EnumMap<Material, Integer>, Boolean> itemsToCraft = new HashMap<EnumMap<Material, Integer>, Boolean>();
public LinkedList<CustomObjective> customObjectives = new LinkedList<CustomObjective>();
public LinkedList<Integer> customObjectiveCounts = new LinkedList<Integer>();
public LinkedList<String> customObjectiveDisplays = new LinkedList<String>();
public LinkedList<Map<String, Object>> customObjectiveData = new LinkedList<Map<String, Object>>();
public LinkedList<String> passwordDisplays = new LinkedList<String>();
public LinkedList<LinkedList<String>> passwordPhrases = new LinkedList<LinkedList<String>>();
public String script;
public Event startEvent = null;
public Event deathEvent = null;
public Map<String, Event> chatEvents = new HashMap<String, Event>();
public Event disconnectEvent = null;
public Event finishEvent = null;
public long delay = -1;
public String delayMessage = null;
public String completeMessage = null;
public String startMessage = null;
public String objectiveOverride = null;
public int hashCode() {
assert false : "hashCode not designed";
return 42; // any arbitrary constant will do
}
@Override
public boolean equals(Object o) {
if (o instanceof Stage) {
Stage other = (Stage) o;
if (other.blocksToDamage.equals(blocksToDamage) == false) {
return false;
}
if (other.blocksToBreak.equals(blocksToBreak) == false) {
return false;
}
if (other.blocksToPlace.equals(blocksToPlace) == false) {
return false;
}
if (other.blocksToUse.equals(blocksToUse) == false) {
return false;
}
if (other.blocksToCut.equals(blocksToCut) == false) {
return false;
}
if (other.fishToCatch != null && fishToCatch != null) {
if (other.fishToCatch.equals(fishToCatch) == false) {
return false;
}
} else if (other.fishToCatch != null && fishToCatch == null) {
return false;
} else if (other.fishToCatch == null && fishToCatch != null) {
return false;
}
if (other.playersToKill != null && playersToKill != null) {
if (other.playersToKill.equals(playersToKill) == false) {
return false;
}
} else if (other.playersToKill != null && playersToKill == null) {
return false;
} else if (other.playersToKill == null && playersToKill != null) {
return false;
}
if (other.itemsToEnchant.equals(itemsToEnchant) == false) {
return false;
}
if (other.mobsToKill.equals(mobsToKill) == false) {
return false;
}
if (other.mobNumToKill.equals(mobNumToKill) == false) {
return false;
}
if (other.locationsToKillWithin.equals(locationsToKillWithin) == false) {
return false;
}
if (other.radiiToKillWithin.equals(radiiToKillWithin) == false) {
return false;
}
if (other.areaNames.equals(areaNames) == false) {
return false;
}
if (other.itemsToDeliver.equals(itemsToDeliver) == false) {
return false;
}
if (other.itemDeliveryTargets.equals(itemDeliveryTargets) == false) {
return false;
}
if (other.deliverMessages.equals(deliverMessages) == false) {
return false;
}
if (other.citizensToInteract.equals(citizensToInteract) == false) {
return false;
}
if (other.citizensToKill.equals(citizensToKill) == false) {
return false;
}
if (other.citizenNumToKill.equals(citizenNumToKill) == false) {
return false;
}
if (other.locationsToReach.equals(locationsToReach) == false) {
return false;
}
if (other.radiiToReachWithin.equals(radiiToReachWithin) == false) {
return false;
}
if (other.worldsToReachWithin.equals(worldsToReachWithin) == false) {
return false;
}
if (other.locationNames.equals(locationNames) == false) {
return false;
}
if (other.mobsToTame.equals(mobsToTame) == false) {
return false;
}
if (other.sheepToShear.equals(sheepToShear) == false) {
return false;
}
if (other.itemsToCraft.equals(itemsToCraft) == false) {
return false;
}
if (other.customObjectives.equals(customObjectives) == false) {
return false;
}
if (other.customObjectiveDisplays.equals(customObjectiveDisplays) == false) {
return false;
}
if (other.customObjectiveData.equals(customObjectiveData) == false) {
return false;
}
if (other.passwordDisplays.equals(passwordDisplays) == false) {
return false;
}
if (other.passwordPhrases.equals(passwordPhrases) == false) {
return false;
}
if (other.script != null && script != null) {
if (other.script.equals(script) == false) {
return false;
}
} else if (other.script != null && script == null) {
return false;
} else if (other.script == null && script != null) {
return false;
}
if (other.startEvent != null && startEvent != null) {
if (other.startEvent.equals(startEvent) == false) {
return false;
}
} else if (other.startEvent != null && startEvent == null) {
return false;
} else if (other.startEvent == null && startEvent != null) {
return false;
}
if (other.deathEvent != null && deathEvent != null) {
if (other.deathEvent.equals(deathEvent) == false) {
return false;
}
} else if (other.deathEvent != null && deathEvent == null) {
return false;
} else if (other.deathEvent == null && deathEvent != null) {
return false;
}
if (other.finishEvent != null && finishEvent != null) {
if (other.finishEvent.equals(finishEvent) == false) {
return false;
}
} else if (other.finishEvent != null && finishEvent == null) {
return false;
} else if (other.finishEvent == null && finishEvent != null) {
return false;
}
if (other.chatEvents.equals(chatEvents) == false) {
return false;
}
if (other.delay != delay) {
return false;
}
if (other.delayMessage != null && delayMessage != null) {
if (other.delayMessage.equals(delayMessage) == false) {
return false;
}
} else if (other.delayMessage != null && delayMessage == null) {
return false;
} else if (other.delayMessage == null && delayMessage != null) {
return false;
}
if (other.startMessage != null && startMessage != null) {
if (other.startMessage.equals(startMessage) == false) {
return false;
}
} else if (other.startMessage != null && startMessage == null) {
return false;
} else if (other.startMessage == null && startMessage != null) {
return false;
}
if (other.completeMessage != null && completeMessage != null) {
if (other.completeMessage.equals(completeMessage) == false) {
return false;
}
} else if (other.completeMessage != null && completeMessage == null) {
return false;
} else if (other.completeMessage == null && completeMessage != null) {
return false;
}
if (other.objectiveOverride != null && objectiveOverride != null) {
if (other.objectiveOverride.equals(objectiveOverride) == false) {
return false;
}
} else if (other.objectiveOverride != null && objectiveOverride == null) {
return false;
} else if (other.objectiveOverride == null && objectiveOverride != null) {
return false;
}
}
return true;
}
public int hashCode() {
assert false : "hashCode not designed";
return 42; // any arbitrary constant will do
}
@Override
public boolean equals(Object o) {
if (o instanceof Stage) {
Stage other = (Stage) o;
if (other.blocksToDamage.equals(blocksToDamage) == false) {
return false;
}
if (other.blocksToBreak.equals(blocksToBreak) == false) {
return false;
}
if (other.blocksToPlace.equals(blocksToPlace) == false) {
return false;
}
if (other.blocksToUse.equals(blocksToUse) == false) {
return false;
}
if (other.blocksToCut.equals(blocksToCut) == false) {
return false;
}
if (other.fishToCatch != null && fishToCatch != null) {
if (other.fishToCatch.equals(fishToCatch) == false) {
return false;
}
} else if (other.fishToCatch != null && fishToCatch == null) {
return false;
} else if (other.fishToCatch == null && fishToCatch != null) {
return false;
}
if (other.playersToKill != null && playersToKill != null) {
if (other.playersToKill.equals(playersToKill) == false) {
return false;
}
} else if (other.playersToKill != null && playersToKill == null) {
return false;
} else if (other.playersToKill == null && playersToKill != null) {
return false;
}
if (other.itemsToEnchant.equals(itemsToEnchant) == false) {
return false;
}
if (other.mobsToKill.equals(mobsToKill) == false) {
return false;
}
if (other.mobNumToKill.equals(mobNumToKill) == false) {
return false;
}
if (other.locationsToKillWithin.equals(locationsToKillWithin) == false) {
return false;
}
if (other.radiiToKillWithin.equals(radiiToKillWithin) == false) {
return false;
}
if (other.areaNames.equals(areaNames) == false) {
return false;
}
if (other.itemsToDeliver.equals(itemsToDeliver) == false) {
return false;
}
if (other.itemDeliveryTargets.equals(itemDeliveryTargets) == false) {
return false;
}
if (other.deliverMessages.equals(deliverMessages) == false) {
return false;
}
if (other.citizensToInteract.equals(citizensToInteract) == false) {
return false;
}
if (other.citizensToKill.equals(citizensToKill) == false) {
return false;
}
if (other.citizenNumToKill.equals(citizenNumToKill) == false) {
return false;
}
if (other.locationsToReach.equals(locationsToReach) == false) {
return false;
}
if (other.radiiToReachWithin.equals(radiiToReachWithin) == false) {
return false;
}
if (other.worldsToReachWithin.equals(worldsToReachWithin) == false) {
return false;
}
if (other.locationNames.equals(locationNames) == false) {
return false;
}
if (other.mobsToTame.equals(mobsToTame) == false) {
return false;
}
if (other.sheepToShear.equals(sheepToShear) == false) {
return false;
}
if (other.itemsToCraft.equals(itemsToCraft) == false) {
return false;
}
if (other.customObjectives.equals(customObjectives) == false) {
return false;
}
if (other.customObjectiveDisplays.equals(customObjectiveDisplays) == false) {
return false;
}
if (other.customObjectiveData.equals(customObjectiveData) == false) {
return false;
}
if (other.passwordDisplays.equals(passwordDisplays) == false) {
return false;
}
if (other.passwordPhrases.equals(passwordPhrases) == false) {
return false;
}
if (other.script != null && script != null) {
if (other.script.equals(script) == false) {
return false;
}
} else if (other.script != null && script == null) {
return false;
} else if (other.script == null && script != null) {
return false;
}
if (other.startEvent != null && startEvent != null) {
if (other.startEvent.equals(startEvent) == false) {
return false;
}
} else if (other.startEvent != null && startEvent == null) {
return false;
} else if (other.startEvent == null && startEvent != null) {
return false;
}
if (other.deathEvent != null && deathEvent != null) {
if (other.deathEvent.equals(deathEvent) == false) {
return false;
}
} else if (other.deathEvent != null && deathEvent == null) {
return false;
} else if (other.deathEvent == null && deathEvent != null) {
return false;
}
if (other.finishEvent != null && finishEvent != null) {
if (other.finishEvent.equals(finishEvent) == false) {
return false;
}
} else if (other.finishEvent != null && finishEvent == null) {
return false;
} else if (other.finishEvent == null && finishEvent != null) {
return false;
}
if (other.chatEvents.equals(chatEvents) == false) {
return false;
}
if (other.delay != delay) {
return false;
}
if (other.delayMessage != null && delayMessage != null) {
if (other.delayMessage.equals(delayMessage) == false) {
return false;
}
} else if (other.delayMessage != null && delayMessage == null) {
return false;
} else if (other.delayMessage == null && delayMessage != null) {
return false;
}
if (other.startMessage != null && startMessage != null) {
if (other.startMessage.equals(startMessage) == false) {
return false;
}
} else if (other.startMessage != null && startMessage == null) {
return false;
} else if (other.startMessage == null && startMessage != null) {
return false;
}
if (other.completeMessage != null && completeMessage != null) {
if (other.completeMessage.equals(completeMessage) == false) {
return false;
}
} else if (other.completeMessage != null && completeMessage == null) {
return false;
} else if (other.completeMessage == null && completeMessage != null) {
return false;
}
if (other.objectiveOverride != null && objectiveOverride != null) {
if (other.objectiveOverride.equals(objectiveOverride) == false) {
return false;
}
} else if (other.objectiveOverride != null && objectiveOverride == null) {
return false;
} else if (other.objectiveOverride == null && objectiveOverride != null) {
return false;
}
}
return true;
}
}

View File

@ -1,82 +1,62 @@
package me.blackvein.quests;
import me.blackvein.quests.util.Lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import me.blackvein.quests.util.Lang;
public class StageTimer implements Runnable {
Quester quester;
Quests plugin;
Quest quest;
Quester quester;
Quests plugin;
Quest quest;
public StageTimer(Quests quests, Quester q, Quest qu) {
quester = q;
quest = qu;
plugin = quests;
}
@Override
public void run() {
if (quester.getQuestData(quest).delayOver) {
Player player = quester.getPlayer();
if (quest.orderedStages.indexOf(quester.getCurrentStage(quest)) == (quest.orderedStages.size() - 1)) {
if (quester.getCurrentStage(quest).script != null) {
plugin.trigger.parseQuestTaskTrigger(quester.getCurrentStage(quest).script, player);
}
if (quester.getCurrentStage(quest).finishEvent != null) {
quester.getCurrentStage(quest).finishEvent.fire(quester, quest);
}
quest.completeQuest(quester);
} else {
Stage currentStage = quester.getCurrentStage(quest);
int stageNum = quester.currentQuests.get(quest) + 1;
quester.hardQuit(quest);
if (currentStage.script != null) {
plugin.trigger.parseQuestTaskTrigger(currentStage.script, player);
}
if (currentStage.finishEvent != null) {
currentStage.finishEvent.fire(quester, quest);
}
quester.hardStagePut(quest, stageNum);
quester.addEmpties(quest);
quester.getQuestData(quest).delayStartTime = 0;
quester.getQuestData(quest).delayTimeLeft = -1;
String msg = Lang.get("questObjectivesTitle");
msg = msg.replaceAll("<quest>", quest.name);
player.sendMessage(ChatColor.GOLD + msg);
player.sendMessage(ChatColor.GOLD + Lang.get("questObjectivesTitle"));
for (String s : quester.getObjectivesReal(quest)) {
player.sendMessage(s);
}
String stageStartMessage = quester.getCurrentStage(quest).startMessage;
if (stageStartMessage != null) {
quester.getPlayer().sendMessage(Quests.parseString(stageStartMessage, quest));
}
}
quester.getQuestData(quest).delayOver = true;
quester.updateJournal();
}
}
public StageTimer(Quests quests, Quester q, Quest qu) {
quester = q;
quest = qu;
plugin = quests;
}
@Override
public void run() {
if (quester.getQuestData(quest).delayOver) {
Player player = quester.getPlayer();
if (quest.orderedStages.indexOf(quester.getCurrentStage(quest)) == (quest.orderedStages.size() - 1)) {
if (quester.getCurrentStage(quest).script != null) {
plugin.trigger.parseQuestTaskTrigger(quester.getCurrentStage(quest).script, player);
}
if (quester.getCurrentStage(quest).finishEvent != null) {
quester.getCurrentStage(quest).finishEvent.fire(quester, quest);
}
quest.completeQuest(quester);
} else {
Stage currentStage = quester.getCurrentStage(quest);
int stageNum = quester.currentQuests.get(quest) + 1;
quester.hardQuit(quest);
if (currentStage.script != null) {
plugin.trigger.parseQuestTaskTrigger(currentStage.script, player);
}
if (currentStage.finishEvent != null) {
currentStage.finishEvent.fire(quester, quest);
}
quester.hardStagePut(quest, stageNum);
quester.addEmpties(quest);
quester.getQuestData(quest).delayStartTime = 0;
quester.getQuestData(quest).delayTimeLeft = -1;
String msg = Lang.get("questObjectivesTitle");
msg = msg.replaceAll("<quest>", quest.name);
player.sendMessage(ChatColor.GOLD + msg);
player.sendMessage(ChatColor.GOLD + Lang.get("questObjectivesTitle"));
for (String s : quester.getObjectivesReal(quest)) {
player.sendMessage(s);
}
String stageStartMessage = quester.getCurrentStage(quest).startMessage;
if (stageStartMessage != null) {
quester.getPlayer().sendMessage(Quests.parseString(stageStartMessage, quest));
}
}
quester.getQuestData(quest).delayOver = true;
quester.updateJournal();
}
}
}

View File

@ -4,26 +4,26 @@ import me.blackvein.quests.Quest;
public class InvalidStageException extends Exception {
private final Quest quest;
private final int stage;
private final Quest quest;
private final int stage;
public InvalidStageException(Quest quest, int stage) {
this.quest = quest;
this.stage = stage;
}
public InvalidStageException(Quest quest, int stage) {
this.quest = quest;
this.stage = stage;
}
public Quest getQuest() {
return quest;
}
public Quest getQuest() {
return quest;
}
public int getStage() {
return stage;
}
public int getStage() {
return stage;
}
private static final long serialVersionUID = 1778748295752972651L;
private static final long serialVersionUID = 1778748295752972651L;
@Override
public void printStackTrace() {
super.printStackTrace();
}
@Override
public void printStackTrace() {
super.printStackTrace();
}
}

View File

@ -25,564 +25,442 @@ import me.blackvein.quests.util.Lang;
public class ItemStackPrompt extends FixedSetPrompt {
//Stores itemstack in "tempStack" context data.
//Stores name in "tempName"
//Stores amount in "tempAmount"
//Stores data in "tempData"
//Stores enchantments in "tempEnchantments"
//Stores display name in "tempDisplay"
//Stores lore in "tempLore"
final Prompt oldPrompt;
// Stores itemstack in "tempStack" context data.
// Stores name in "tempName"
// Stores amount in "tempAmount"
// Stores data in "tempData"
// Stores enchantments in "tempEnchantments"
// Stores display name in "tempDisplay"
// Stores lore in "tempLore"
final Prompt oldPrompt;
public ItemStackPrompt(Prompt old) {
public ItemStackPrompt(Prompt old) {
super("0", "1", "2", "3", "4", "5", "6", "7", "8");
oldPrompt = old;
}
super("0", "1", "2", "3", "4", "5", "6", "7", "8");
oldPrompt = old;
}
@Override
public String getPromptText(ConversationContext cc) {
String menu = ChatColor.YELLOW + Lang.get("createItemTitle") + "\n";
if (cc.getSessionData("tempName") != null) {
String stackData = getItemData(cc);
if (stackData != null) {
menu += stackData;
}
} else {
menu += "\n";
}
menu += ChatColor.GOLD + "" + ChatColor.BOLD + "0. " + ChatColor.RESET + "" + ChatColor.YELLOW + Lang.get("itemCreateLoadHand") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "1. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetName") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "2. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetAmount") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "3. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetDurab") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "4. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetEnchs") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "5. " + ChatColor.RESET + "" + ChatColor.ITALIC + ChatColor.GOLD + Lang.get("itemCreateSetDisplay") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "6. " + ChatColor.RESET + "" + ChatColor.ITALIC + ChatColor.GOLD + Lang.get("itemCreateSetLore") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "7. " + ChatColor.RESET + "" + ChatColor.RED + Lang.get("cancel") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "8. " + ChatColor.RESET + "" + ChatColor.GREEN + Lang.get("done") + "\n";
return menu;
}
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext cc, String input) {
public String getPromptText(ConversationContext cc) {
String menu = ChatColor.YELLOW + Lang.get("createItemTitle") + "\n";
if (cc.getSessionData("tempName") != null) {
String stackData = getItemData(cc);
if (stackData != null) {
menu += stackData;
}
} else {
menu += "\n";
}
menu += ChatColor.GOLD + "" + ChatColor.BOLD + "0. " + ChatColor.RESET + "" + ChatColor.YELLOW + Lang.get("itemCreateLoadHand") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "1. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetName") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "2. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetAmount") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "3. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetDurab") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "4. " + ChatColor.RESET + "" + ChatColor.GOLD + Lang.get("itemCreateSetEnchs") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "5. " + ChatColor.RESET + "" + ChatColor.ITALIC + ChatColor.GOLD + Lang.get("itemCreateSetDisplay") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "6. " + ChatColor.RESET + "" + ChatColor.ITALIC + ChatColor.GOLD + Lang.get("itemCreateSetLore") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "7. " + ChatColor.RESET + "" + ChatColor.RED + Lang.get("cancel") + "\n";
menu += ChatColor.YELLOW + "" + ChatColor.BOLD + "8. " + ChatColor.RESET + "" + ChatColor.GREEN + Lang.get("done") + "\n";
return menu;
}
if (input.equalsIgnoreCase("0")) {
Player player = (Player) cc.getForWhom();
@SuppressWarnings("deprecation")
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase("0")) {
Player player = (Player) cc.getForWhom();
@SuppressWarnings("deprecation")
ItemStack is = player.getItemInHand();
if (is == null || is.getType().equals(Material.AIR)) {
player.sendMessage(ChatColor.RED + Lang.get("itemCreateNoItem"));
return new ItemStackPrompt(oldPrompt);
} else {
cc.setSessionData("tempName", is.getType().name());
cc.setSessionData("tempAmount", is.getAmount());
cc.setSessionData("tempData", null);
cc.setSessionData("tempEnchantments", null);
cc.setSessionData("tempDisplay", null);
cc.setSessionData("tempLore", null);
if (is.getDurability() != 0) {
cc.setSessionData("tempData", is.getDurability());
}
if (is.getEnchantments() != null && is.getEnchantments().isEmpty() == false) {
cc.setSessionData("tempEnchantments", new HashMap<Enchantment, Integer>(is.getEnchantments()));
}
if (is.hasItemMeta()) {
ItemMeta meta = is.getItemMeta();
if (meta.hasDisplayName()) {
String display = meta.getDisplayName().replace(ChatColor.COLOR_CHAR, '&');
cc.setSessionData("tempDisplay", display);
}
if (meta.hasLore()) {
LinkedList<String> lore = new LinkedList<String>();
lore.addAll(meta.getLore());
cc.setSessionData("tempLore", lore);
}
}
player.sendMessage(ChatColor.GREEN + Lang.get("itemCreateLoaded"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("1")) {
return new NamePrompt();
} else if (input.equalsIgnoreCase("2")) {
if (cc.getSessionData("tempName") != null) {
return new AmountPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoName"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("3")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new DataPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoIDAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("4")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new EnchantmentPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoIDAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("5")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new DisplayPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoNameAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("6")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new LorePrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoNameAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("7")) {
cc.setSessionData("tempStack", null);
cc.setSessionData("tempName", null);
cc.setSessionData("tempAmount", null);
cc.setSessionData("tempData", null);
cc.setSessionData("tempEnchantments", null);
cc.setSessionData("tempDisplay", null);
cc.setSessionData("tempLore", null);
} else if (input.equalsIgnoreCase("8")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
String name = (String) cc.getSessionData("tempName");
int amount = (Integer) cc.getSessionData("tempAmount");
short data = -1;
Map<Enchantment, Integer> enchs = null;
String display = null;
List<String> lore = null;
if (cc.getSessionData("tempData") != null) {
data = (Short) cc.getSessionData("tempData");
}
if (cc.getSessionData("tempEnchantments") != null) {
enchs = (Map<Enchantment, Integer>) cc.getSessionData("tempEnchantments");
}
if (cc.getSessionData("tempDisplay") != null) {
display = ChatColor.translateAlternateColorCodes('&', (String) cc.getSessionData("tempDisplay"));
}
if (cc.getSessionData("tempLore") != null) {
lore = new ArrayList<String>();
LinkedList<String> loadedLore = (LinkedList<String>) cc.getSessionData("tempLore");
for (String line : loadedLore)
{
lore.add(ChatColor.translateAlternateColorCodes('&', line));
}
}
ItemStack stack = new ItemStack(Material.matchMaterial(name), amount);
ItemMeta meta = stack.getItemMeta();
if (data != -1) {
stack.setDurability((short) data);
}
if (enchs != null) {
for (Entry<Enchantment, Integer> e : enchs.entrySet()) {
meta.addEnchant(e.getKey(), e.getValue(), true);
}
}
if (display != null) {
meta.setDisplayName(display);
}
if (lore != null) {
meta.setLore(lore);
}
stack.setItemMeta(meta);
cc.setSessionData("tempStack", stack);
cc.setSessionData("newItem", Boolean.TRUE);
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoNameAmount"));
return new ItemStackPrompt(oldPrompt);
}
}
try {
return oldPrompt;
} catch (Exception e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateCriticalError"));
return Prompt.END_OF_CONVERSATION;
}
}
private class NamePrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterName");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String dataString = null;
if (input.contains(":")) {
String[] splitInput = input.split(":");
input = splitInput[0];
if (splitInput.length > 1) {
dataString = splitInput[1];
}
}
Material mat = Material.matchMaterial(input.toUpperCase().replace(" ", "_"));
if (mat == null) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidName"));
return new NamePrompt();
} else {
cc.setSessionData("tempName", mat.name());
cc.setSessionData("tempAmount", 1);
if (dataString != null) {
try {
short data = Short.parseShort(dataString);
cc.setSessionData("tempData", data);
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidData"));
return new NamePrompt();
}
}
return new ItemStackPrompt(oldPrompt);
}
} else {
return new ItemStackPrompt(oldPrompt);
}
}
}
private class AmountPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterAmount");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
try {
int amt = Integer.parseInt(input);
if (amt < 1 || amt > 64) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidAmount"));
return new AmountPrompt();
} else {
cc.setSessionData("tempAmount", Integer.parseInt(input));
return new ItemStackPrompt(oldPrompt);
}
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new AmountPrompt();
}
} else {
return new ItemStackPrompt(oldPrompt);
}
}
}
private class DataPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterDurab");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
try {
int amt = Integer.parseInt(input);
if (amt < 1) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidDurab"));
return new DataPrompt();
} else {
cc.setSessionData("tempData", Short.parseShort(input));
return new ItemStackPrompt(oldPrompt);
}
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new DataPrompt();
}
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.setSessionData("tempData", null);
}
return new ItemStackPrompt(oldPrompt);
}
}
private class EnchantmentPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
String text = ChatColor.LIGHT_PURPLE + Lang.get("enchantmentsTitle") + "\n";
for (Enchantment e : Enchantment.values()) {
text += ChatColor.GREEN + Quester.prettyEnchantmentString(e) + ", ";
}
text = text.substring(0, text.length() - 1);
return text + "\n" + ChatColor.YELLOW + Lang.get("itemCreateEnterEnch");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdClear")) == false && input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
Enchantment e = Quests.getEnchantmentPretty(input);
if (e != null) {
cc.setSessionData("tempEnchant", e);
return new LevelPrompt(Quester.prettyEnchantmentString(e));
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidEnch"));
return new EnchantmentPrompt();
}
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.setSessionData("tempEnchantments", null);
}
return new ItemStackPrompt(oldPrompt);
}
protected class LevelPrompt extends StringPrompt {
final String enchantment;
protected LevelPrompt(String ench) {
enchantment = ench;
}
@Override
public String getPromptText(ConversationContext cc) {
String text = Lang.get("itemCreateEnterLevel");
text = text.replaceAll("<enchantment>", enchantment);
return ChatColor.AQUA + text;
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
try {
int num = Integer.parseInt(input);
if (num < 1) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidLevel"));
return new LevelPrompt(enchantment);
} else {
if (cc.getSessionData("tempEnchantments") != null) {
@SuppressWarnings("unchecked")
if (is == null || is.getType().equals(Material.AIR)) {
player.sendMessage(ChatColor.RED + Lang.get("itemCreateNoItem"));
return new ItemStackPrompt(oldPrompt);
} else {
cc.setSessionData("tempName", is.getType().name());
cc.setSessionData("tempAmount", is.getAmount());
cc.setSessionData("tempData", null);
cc.setSessionData("tempEnchantments", null);
cc.setSessionData("tempDisplay", null);
cc.setSessionData("tempLore", null);
if (is.getDurability() != 0) {
cc.setSessionData("tempData", is.getDurability());
}
if (is.getEnchantments() != null && is.getEnchantments().isEmpty() == false) {
cc.setSessionData("tempEnchantments", new HashMap<Enchantment, Integer>(is.getEnchantments()));
}
if (is.hasItemMeta()) {
ItemMeta meta = is.getItemMeta();
if (meta.hasDisplayName()) {
String display = meta.getDisplayName().replace(ChatColor.COLOR_CHAR, '&');
cc.setSessionData("tempDisplay", display);
}
if (meta.hasLore()) {
LinkedList<String> lore = new LinkedList<String>();
lore.addAll(meta.getLore());
cc.setSessionData("tempLore", lore);
}
}
player.sendMessage(ChatColor.GREEN + Lang.get("itemCreateLoaded"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("1")) {
return new NamePrompt();
} else if (input.equalsIgnoreCase("2")) {
if (cc.getSessionData("tempName") != null) {
return new AmountPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoName"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("3")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new DataPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoIDAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("4")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new EnchantmentPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoIDAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("5")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new DisplayPrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoNameAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("6")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
return new LorePrompt();
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoNameAmount"));
return new ItemStackPrompt(oldPrompt);
}
} else if (input.equalsIgnoreCase("7")) {
cc.setSessionData("tempStack", null);
cc.setSessionData("tempName", null);
cc.setSessionData("tempAmount", null);
cc.setSessionData("tempData", null);
cc.setSessionData("tempEnchantments", null);
cc.setSessionData("tempDisplay", null);
cc.setSessionData("tempLore", null);
} else if (input.equalsIgnoreCase("8")) {
if (cc.getSessionData("tempName") != null && cc.getSessionData("tempAmount") != null) {
String name = (String) cc.getSessionData("tempName");
int amount = (Integer) cc.getSessionData("tempAmount");
short data = -1;
Map<Enchantment, Integer> enchs = null;
String display = null;
List<String> lore = null;
if (cc.getSessionData("tempData") != null) {
data = (Short) cc.getSessionData("tempData");
}
if (cc.getSessionData("tempEnchantments") != null) {
enchs = (Map<Enchantment, Integer>) cc.getSessionData("tempEnchantments");
}
if (cc.getSessionData("tempDisplay") != null) {
display = ChatColor.translateAlternateColorCodes('&', (String) cc.getSessionData("tempDisplay"));
}
if (cc.getSessionData("tempLore") != null) {
lore = new ArrayList<String>();
LinkedList<String> loadedLore = (LinkedList<String>) cc.getSessionData("tempLore");
for (String line : loadedLore) {
lore.add(ChatColor.translateAlternateColorCodes('&', line));
}
}
ItemStack stack = new ItemStack(Material.matchMaterial(name), amount);
ItemMeta meta = stack.getItemMeta();
if (data != -1) {
stack.setDurability((short) data);
}
if (enchs != null) {
for (Entry<Enchantment, Integer> e : enchs.entrySet()) {
meta.addEnchant(e.getKey(), e.getValue(), true);
}
}
if (display != null) {
meta.setDisplayName(display);
}
if (lore != null) {
meta.setLore(lore);
}
stack.setItemMeta(meta);
cc.setSessionData("tempStack", stack);
cc.setSessionData("newItem", Boolean.TRUE);
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNoNameAmount"));
return new ItemStackPrompt(oldPrompt);
}
}
try {
return oldPrompt;
} catch (Exception e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateCriticalError"));
return Prompt.END_OF_CONVERSATION;
}
}
private class NamePrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterName");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String dataString = null;
if (input.contains(":")) {
String[] splitInput = input.split(":");
input = splitInput[0];
if (splitInput.length > 1) {
dataString = splitInput[1];
}
}
Material mat = Material.matchMaterial(input.toUpperCase().replace(" ", "_"));
if (mat == null) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidName"));
return new NamePrompt();
} else {
cc.setSessionData("tempName", mat.name());
cc.setSessionData("tempAmount", 1);
if (dataString != null) {
try {
short data = Short.parseShort(dataString);
cc.setSessionData("tempData", data);
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidData"));
return new NamePrompt();
}
}
return new ItemStackPrompt(oldPrompt);
}
} else {
return new ItemStackPrompt(oldPrompt);
}
}
}
private class AmountPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterAmount");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
try {
int amt = Integer.parseInt(input);
if (amt < 1 || amt > 64) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidAmount"));
return new AmountPrompt();
} else {
cc.setSessionData("tempAmount", Integer.parseInt(input));
return new ItemStackPrompt(oldPrompt);
}
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new AmountPrompt();
}
} else {
return new ItemStackPrompt(oldPrompt);
}
}
}
private class DataPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterDurab");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
try {
int amt = Integer.parseInt(input);
if (amt < 1) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidDurab"));
return new DataPrompt();
} else {
cc.setSessionData("tempData", Short.parseShort(input));
return new ItemStackPrompt(oldPrompt);
}
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new DataPrompt();
}
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.setSessionData("tempData", null);
}
return new ItemStackPrompt(oldPrompt);
}
}
private class EnchantmentPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
String text = ChatColor.LIGHT_PURPLE + Lang.get("enchantmentsTitle") + "\n";
for (Enchantment e : Enchantment.values()) {
text += ChatColor.GREEN + Quester.prettyEnchantmentString(e) + ", ";
}
text = text.substring(0, text.length() - 1);
return text + "\n" + ChatColor.YELLOW + Lang.get("itemCreateEnterEnch");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdClear")) == false && input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
Enchantment e = Quests.getEnchantmentPretty(input);
if (e != null) {
cc.setSessionData("tempEnchant", e);
return new LevelPrompt(Quester.prettyEnchantmentString(e));
} else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidEnch"));
return new EnchantmentPrompt();
}
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.setSessionData("tempEnchantments", null);
}
return new ItemStackPrompt(oldPrompt);
}
protected class LevelPrompt extends StringPrompt {
final String enchantment;
protected LevelPrompt(String ench) {
enchantment = ench;
}
@Override
public String getPromptText(ConversationContext cc) {
String text = Lang.get("itemCreateEnterLevel");
text = text.replaceAll("<enchantment>", enchantment);
return ChatColor.AQUA + text;
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
try {
int num = Integer.parseInt(input);
if (num < 1) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidLevel"));
return new LevelPrompt(enchantment);
} else {
if (cc.getSessionData("tempEnchantments") != null) {
@SuppressWarnings("unchecked")
Map<Enchantment, Integer> enchs = (Map<Enchantment, Integer>) cc.getSessionData("tempEnchantments");
enchs.put((Enchantment) cc.getSessionData("tempEnchant"), num);
cc.setSessionData("tempEnchantments", enchs);
enchs.put((Enchantment) cc.getSessionData("tempEnchant"), num);
cc.setSessionData("tempEnchantments", enchs);
} else {
Map<Enchantment, Integer> enchs = new HashMap<Enchantment, Integer>();
enchs.put((Enchantment) cc.getSessionData("tempEnchant"), num);
cc.setSessionData("tempEnchantments", enchs);
}
return new ItemStackPrompt(oldPrompt);
}
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNotNumber"));
return new LevelPrompt(enchantment);
}
}
}
}
} else {
private class DisplayPrompt extends StringPrompt {
Map<Enchantment, Integer> enchs = new HashMap<Enchantment, Integer>();
enchs.put((Enchantment) cc.getSessionData("tempEnchant"), num);
cc.setSessionData("tempEnchantments", enchs);
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterName");
}
}
return new ItemStackPrompt(oldPrompt);
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
input = Quests.parseString(input);
cc.setSessionData("tempDisplay", input);
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.setSessionData("tempDisplay", null);
}
return new ItemStackPrompt(oldPrompt);
}
}
} catch (NumberFormatException e) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateNotNumber"));
return new LevelPrompt(enchantment);
}
private class LorePrompt extends StringPrompt {
}
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterLore");
}
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
input = Quests.parseString(input);
LinkedList<String> lore = new LinkedList<String>();
lore.addAll(Arrays.asList(input.split(";")));
cc.setSessionData("tempLore", lore);
} else if (input.equalsIgnoreCase("clear")) {
cc.setSessionData("tempLore", null);
}
return new ItemStackPrompt(oldPrompt);
}
}
}
private class DisplayPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterName");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
input = Quests.parseString(input);
cc.setSessionData("tempDisplay", input);
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.setSessionData("tempDisplay", null);
}
return new ItemStackPrompt(oldPrompt);
}
}
private class LorePrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext cc) {
return ChatColor.YELLOW + Lang.get("itemCreateEnterLore");
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
input = Quests.parseString(input);
LinkedList<String> lore = new LinkedList<String>();
lore.addAll(Arrays.asList(input.split(";")));
cc.setSessionData("tempLore", lore);
} else if (input.equalsIgnoreCase("clear")) {
cc.setSessionData("tempLore", null);
}
return new ItemStackPrompt(oldPrompt);
}
}
private String getItemData(ConversationContext cc) {
if (cc.getSessionData("tempName") != null) {
String item;
if (cc.getSessionData("tempDisplay") == null) {
String name = (String) cc.getSessionData("tempName");
item = ChatColor.AQUA + Quester.prettyItemString(name);
if (cc.getSessionData("tempData") != null) {
item += ":" + ChatColor.BLUE + (Short) cc.getSessionData("tempData");
}
} else {
item = ChatColor.LIGHT_PURPLE + "" + ChatColor.ITALIC + (String) cc.getSessionData("tempDisplay") + ChatColor.RESET + "" + ChatColor.GRAY + " (";
String name = (String) cc.getSessionData("tempName");
item += ChatColor.AQUA + Quester.prettyItemString(name);
if (cc.getSessionData("tempData") != null) {
item += ":" + ChatColor.BLUE + (Short) cc.getSessionData("tempData");
}
item += ChatColor.GRAY + ")";
}
if (cc.getSessionData("tempAmount") != null) {
item += ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + (Integer) cc.getSessionData("tempAmount");
} else {
item += ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + "1";
}
item += "\n";
if (cc.getSessionData("tempEnchantments") != null) {
@SuppressWarnings("unchecked")
private String getItemData(ConversationContext cc) {
if (cc.getSessionData("tempName") != null) {
String item;
if (cc.getSessionData("tempDisplay") == null) {
String name = (String) cc.getSessionData("tempName");
item = ChatColor.AQUA + Quester.prettyItemString(name);
if (cc.getSessionData("tempData") != null) {
item += ":" + ChatColor.BLUE + (Short) cc.getSessionData("tempData");
}
} else {
item = ChatColor.LIGHT_PURPLE + "" + ChatColor.ITALIC + (String) cc.getSessionData("tempDisplay") + ChatColor.RESET + "" + ChatColor.GRAY + " (";
String name = (String) cc.getSessionData("tempName");
item += ChatColor.AQUA + Quester.prettyItemString(name);
if (cc.getSessionData("tempData") != null) {
item += ":" + ChatColor.BLUE + (Short) cc.getSessionData("tempData");
}
item += ChatColor.GRAY + ")";
}
if (cc.getSessionData("tempAmount") != null) {
item += ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + (Integer) cc.getSessionData("tempAmount");
} else {
item += ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + "1";
}
item += "\n";
if (cc.getSessionData("tempEnchantments") != null) {
@SuppressWarnings("unchecked")
Map<Enchantment, Integer> enchantments = (Map<Enchantment, Integer>) cc.getSessionData("tempEnchantments");
for (Entry<Enchantment, Integer> e : enchantments.entrySet()) {
item += ChatColor.GRAY + " - " + ChatColor.RED + Quester.prettyEnchantmentString(e.getKey()) + " " + Quests.getNumeral(e.getValue()) + "\n";
}
}
if (cc.getSessionData("tempLore") != null) {
@SuppressWarnings("unchecked")
for (Entry<Enchantment, Integer> e : enchantments.entrySet()) {
item += ChatColor.GRAY + " - " + ChatColor.RED + Quester.prettyEnchantmentString(e.getKey()) + " " + Quests.getNumeral(e.getValue()) + "\n";
}
}
if (cc.getSessionData("tempLore") != null) {
@SuppressWarnings("unchecked")
List<String> lore = (List<String>) cc.getSessionData("tempLore");
item += ChatColor.DARK_GREEN + "(Lore)\n\"";
for (String s : lore) {
if (lore.indexOf(s) != (lore.size() - 1)) {
item += ChatColor.DARK_GREEN + "" + ChatColor.ITALIC + s + "\n";
} else {
item += ChatColor.DARK_GREEN + "" + ChatColor.ITALIC + s + "\"\n";
}
}
}
item += "\n";
return item;
} else {
return null;
}
}
item += ChatColor.DARK_GREEN + "(Lore)\n\"";
for (String s : lore) {
if (lore.indexOf(s) != (lore.size() - 1)) {
item += ChatColor.DARK_GREEN + "" + ChatColor.ITALIC + s + "\n";
} else {
item += ChatColor.DARK_GREEN + "" + ChatColor.ITALIC + s + "\"\n";
}
}
}
item += "\n";
return item;
} else {
return null;
}
}
}

View File

@ -18,173 +18,124 @@ import me.blackvein.quests.util.Lang;
public class QuestAcceptPrompt extends StringPrompt {
final Quests plugin;
Quester quester;
LinkedList<Quest> quests;
final Quests plugin;
Quester quester;
LinkedList<Quest> quests;
public QuestAcceptPrompt(Quests plugin) {
this.plugin = plugin;
}
public QuestAcceptPrompt(Quests plugin) {
this.plugin = plugin;
}
@SuppressWarnings("unchecked")
@SuppressWarnings("unchecked")
@Override
public String getPromptText(ConversationContext cc) {
public String getPromptText(ConversationContext cc) {
quests = (LinkedList<Quest>) cc.getSessionData("quests");
quester = plugin.getQuester(((Player) cc.getForWhom()).getUniqueId());
String npc = (String) cc.getSessionData("npc");
String text = Lang.get("questNPCListTitle");
text = text.replaceAll("<npc>", npc);
String menu = text + "\n";
for (int i = 1; i <= quests.size(); i++) {
Quest quest = quests.get(i - 1);
if (quester.completedQuests.contains(quest.getName())) {
menu += ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "" + i + ". " + ChatColor.RESET + "" + ChatColor.GREEN + "" + ChatColor.ITALIC + quest.getName() + ChatColor.RESET + "" + ChatColor.GREEN + " (" + Lang.get("completed") + ")\n";
} else {
menu += ChatColor.GOLD + "" + ChatColor.BOLD + "" + i + ". " + ChatColor.RESET + "" + ChatColor.YELLOW + "" + ChatColor.ITALIC + quest.getName() + "\n";
}
}
menu += ChatColor.GOLD + "" + ChatColor.BOLD + "" + (quests.size() + 1) + ". " + ChatColor.RESET + "" + ChatColor.GRAY + Lang.get("cancel") + "\n";
menu += ChatColor.WHITE + Lang.get("enterAnOption");
return menu;
}
quests = (LinkedList<Quest>) cc.getSessionData("quests");
quester = plugin.getQuester(((Player) cc.getForWhom()).getUniqueId());
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
int numInput = -1;
try {
numInput = Integer.parseInt(input);
} catch (NumberFormatException e) {
// Continue
}
if (input.equalsIgnoreCase(Lang.get("cancel")) || numInput == (quests.size() + 1)) {
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("cancelled"));
return Prompt.END_OF_CONVERSATION;
} else {
Quest q = null;
for (Quest quest : quests) {
if (quest.getName().equalsIgnoreCase(input)) {
q = quest;
break;
}
}
if (q == null) {
for (Quest quest : quests) {
if (numInput == (quests.indexOf(quest) + 1)) {
q = quest;
break;
}
}
}
if (q == null) {
for (Quest quest : quests) {
if (StringUtils.containsIgnoreCase(quest.getName(), input)) {
q = quest;
break;
}
}
}
if (q == null) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidSelection"));
return new QuestAcceptPrompt(plugin);
} else {
Player player = quester.getPlayer();
if (!quester.completedQuests.contains(q.name)) {
if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
if (q.testRequirements(quester)) {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation((Conversable) player).begin();
} else {
player.sendMessage(q.failRequirements);
}
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
} else if (quester.completedQuests.contains(q.name)) {
if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
if (quester.getDifference(q) > 0) {
String early = Lang.get("questTooEarly");
early = early.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
early = early.replaceAll("<time>", ChatColor.DARK_PURPLE + Quests.getTime(quester.getDifference(q)) + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + early);
} else if (q.redoDelay < 0) {
String completed = Lang.get("questAlreadyCompleted");
completed = completed.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + completed);
} else {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation((Conversable) player).begin();
}
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
}
return Prompt.END_OF_CONVERSATION;
}
}
}
String npc = (String) cc.getSessionData("npc");
String text = Lang.get("questNPCListTitle");
text = text.replaceAll("<npc>", npc);
String menu = text + "\n";
for (int i = 1; i <= quests.size(); i++) {
Quest quest = quests.get(i - 1);
if (quester.completedQuests.contains(quest.getName())) {
menu += ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "" + i + ". " + ChatColor.RESET + "" + ChatColor.GREEN + "" + ChatColor.ITALIC + quest.getName() + ChatColor.RESET + "" + ChatColor.GREEN + " (" + Lang.get("completed") + ")\n";
} else {
menu += ChatColor.GOLD + "" + ChatColor.BOLD + "" + i + ". " + ChatColor.RESET + "" + ChatColor.YELLOW + "" + ChatColor.ITALIC + quest.getName() + "\n";
}
}
menu += ChatColor.GOLD + "" + ChatColor.BOLD + "" + (quests.size() + 1) + ". " + ChatColor.RESET + "" + ChatColor.GRAY + Lang.get("cancel") + "\n";
menu += ChatColor.WHITE + Lang.get("enterAnOption");
return menu;
}
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
int numInput = -1;
try {
numInput = Integer.parseInt(input);
} catch (NumberFormatException e) {
//Continue
}
if (input.equalsIgnoreCase(Lang.get("cancel")) || numInput == (quests.size() + 1)) {
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("cancelled"));
return Prompt.END_OF_CONVERSATION;
} else {
Quest q = null;
for (Quest quest : quests) {
if (quest.getName().equalsIgnoreCase(input)) {
q = quest;
break;
}
}
if (q == null) {
for (Quest quest : quests) {
if (numInput == (quests.indexOf(quest) + 1)) {
q = quest;
break;
}
}
}
if (q == null) {
for (Quest quest : quests) {
if (StringUtils.containsIgnoreCase(quest.getName(), input)) {
q = quest;
break;
}
}
}
if (q == null) {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidSelection"));
return new QuestAcceptPrompt(plugin);
} else {
Player player = quester.getPlayer();
if (!quester.completedQuests.contains(q.name)) {
if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
if (q.testRequirements(quester)) {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation((Conversable) player).begin();
} else {
player.sendMessage(q.failRequirements);
}
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
} else if (quester.completedQuests.contains(q.name)) {
if (quester.currentQuests.size() < Quests.maxQuests || Quests.maxQuests < 1) {
if (quester.getDifference(q) > 0) {
String early = Lang.get("questTooEarly");
early = early.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
early = early.replaceAll("<time>", ChatColor.DARK_PURPLE + Quests.getTime(quester.getDifference(q)) + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + early);
} else if (q.redoDelay < 0) {
String completed = Lang.get("questAlreadyCompleted");
completed = completed.replaceAll("<quest>", ChatColor.AQUA + q.name + ChatColor.YELLOW);
player.sendMessage(ChatColor.YELLOW + completed);
} else {
quester.questToTake = q.name;
String s = extracted(quester);
for (String msg : s.split("<br>")) {
player.sendMessage(msg);
}
plugin.conversationFactory.buildConversation((Conversable) player).begin();
}
} else if (quester.currentQuests.containsKey(q) == false) {
String msg = Lang.get("questMaxAllowed");
msg = msg.replaceAll("<number>", String.valueOf(Quests.maxQuests));
player.sendMessage(ChatColor.YELLOW + msg);
}
}
return Prompt.END_OF_CONVERSATION;
}
}
}
private String extracted(final Quester quester) {
return MessageFormat.format("{0}- {1}{2}{3} -\n\n{4}{5}\n",
ChatColor.GOLD,
ChatColor.DARK_PURPLE,
quester.questToTake,
ChatColor.GOLD,
ChatColor.RESET, plugin.getQuest(quester.questToTake).description);
}
private String extracted(final Quester quester) {
return MessageFormat.format("{0}- {1}{2}{3} -\n\n{4}{5}\n", ChatColor.GOLD, ChatColor.DARK_PURPLE, quester.questToTake, ChatColor.GOLD, ChatColor.RESET, plugin.getQuest(quester.questToTake).description);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -11,279 +11,200 @@ import me.blackvein.quests.util.Lang;
public class StagesPrompt extends StringPrompt {
private final QuestFactory questFactory;
public StagesPrompt(QuestFactory qf) {
questFactory = qf;
}
@Override
public String getPromptText(ConversationContext cc) {
String text = ChatColor.LIGHT_PURPLE + "- " + ChatColor.DARK_PURPLE + Lang.get("stageEditorStages") + ChatColor.LIGHT_PURPLE + " -\n";
int stages = getStages(cc);
for (int i = 1; i <= stages; i++) {
text += ChatColor.BOLD + "" + ChatColor.GREEN + i + ". " + ChatColor.RESET + ChatColor.GOLD + Lang.get("stageEditorEditStage") + " " + i + "\n";
}
stages++;
text += "\n" + ChatColor.BOLD + "" + ChatColor.GREEN + stages + ". " + ChatColor.RESET + ChatColor.YELLOW + Lang.get("stageEditorNewStage");
stages++;
text += "\n" + ChatColor.BOLD + "" + ChatColor.BLUE + stages + ". " + ChatColor.RESET + ChatColor.YELLOW + Lang.get("done");
return text;
}
@Override
public Prompt acceptInput(ConversationContext cc, String string) {
int i;
try {
i = Integer.parseInt(string);
} catch (NumberFormatException e) {
return new StagesPrompt(questFactory);
}
int stages = getStages(cc);
if (i < 0) {
return new StagesPrompt(questFactory);
} else if (i < (stages + 1) && i > 0) {
return new CreateStagePrompt((i), questFactory, questFactory.quests.citizens);
} else if (i == (stages + 1)) {
return new CreateStagePrompt((stages + 1), questFactory, questFactory.quests.citizens);
} else if (i == (stages + 2)) {
return questFactory.returnToMenu();
} else {
return new StagesPrompt(questFactory);
}
}
public static int getStages(ConversationContext cc) {
int num = 1;
while (true) {
if (cc.getSessionData("stage" + num) != null) {
num++;
} else {
break;
}
}
return (num - 1);
}
public static void deleteStage(ConversationContext cc, int stageNum) {
int stages = getStages(cc);
int current = stageNum;
String pref = "stage" + current;
String newPref;
boolean last = false;
if (stageNum == stages) {
last = true;
}
while (true) {
if (!last) {
current++;
if (current > stages) {
break;
}
pref = "stage" + current;
newPref = "stage" + (current - 1);
cc.setSessionData(newPref + CK.S_BREAK_NAMES, cc.getSessionData(pref + CK.S_BREAK_NAMES));
cc.setSessionData(newPref + CK.S_BREAK_AMOUNTS, cc.getSessionData(pref + CK.S_BREAK_AMOUNTS));
cc.setSessionData(newPref + CK.S_BREAK_DURABILITY, cc.getSessionData(pref + CK.S_BREAK_DURABILITY));
cc.setSessionData(newPref + CK.S_DAMAGE_NAMES, cc.getSessionData(pref + CK.S_DAMAGE_NAMES));
cc.setSessionData(newPref + CK.S_DAMAGE_AMOUNTS, cc.getSessionData(pref + CK.S_DAMAGE_AMOUNTS));
cc.setSessionData(newPref + CK.S_DAMAGE_DURABILITY, cc.getSessionData(pref + CK.S_DAMAGE_DURABILITY));
cc.setSessionData(newPref + CK.S_PLACE_NAMES, cc.getSessionData(pref + CK.S_PLACE_NAMES));
cc.setSessionData(newPref + CK.S_PLACE_NAMES, cc.getSessionData(pref + CK.S_PLACE_AMOUNTS));
cc.setSessionData(newPref + CK.S_PLACE_DURABILITY, cc.getSessionData(pref + CK.S_PLACE_DURABILITY));
cc.setSessionData(newPref + CK.S_USE_NAMES, cc.getSessionData(pref + CK.S_USE_NAMES));
cc.setSessionData(newPref + CK.S_USE_AMOUNTS, cc.getSessionData(pref + CK.S_USE_AMOUNTS));
cc.setSessionData(newPref + CK.S_USE_DURABILITY, cc.getSessionData(pref + CK.S_USE_DURABILITY));
cc.setSessionData(newPref + CK.S_CUT_NAMES, cc.getSessionData(pref + CK.S_CUT_NAMES));
cc.setSessionData(newPref + CK.S_CUT_AMOUNTS, cc.getSessionData(pref + CK.S_CUT_AMOUNTS));
cc.setSessionData(newPref + CK.S_CUT_DURABILITY, cc.getSessionData(pref + CK.S_CUT_DURABILITY));
cc.setSessionData(newPref + CK.S_FISH, cc.getSessionData(pref + CK.S_FISH));
cc.setSessionData(newPref + CK.S_PLAYER_KILL, cc.getSessionData(pref + CK.S_PLAYER_KILL));
cc.setSessionData(newPref + CK.S_ENCHANT_TYPES, cc.getSessionData(pref + CK.S_ENCHANT_TYPES));
cc.setSessionData(newPref + CK.S_ENCHANT_NAMES, cc.getSessionData(pref + CK.S_ENCHANT_NAMES));
cc.setSessionData(newPref + CK.S_ENCHANT_AMOUNTS, cc.getSessionData(pref + CK.S_ENCHANT_AMOUNTS));
cc.setSessionData(newPref + CK.S_DELIVERY_ITEMS, cc.getSessionData(pref + CK.S_DELIVERY_ITEMS));
cc.setSessionData(newPref + CK.S_DELIVERY_NPCS, cc.getSessionData(pref + CK.S_DELIVERY_NPCS));
cc.setSessionData(newPref + CK.S_DELIVERY_MESSAGES, cc.getSessionData(pref + CK.S_DELIVERY_MESSAGES));
cc.setSessionData(newPref + CK.S_NPCS_TO_TALK_TO, cc.getSessionData(pref + CK.S_NPCS_TO_TALK_TO));
cc.setSessionData(newPref + CK.S_NPCS_TO_KILL, cc.getSessionData(pref + CK.S_NPCS_TO_KILL));
cc.setSessionData(newPref + CK.S_NPCS_TO_KILL_AMOUNTS, cc.getSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS));
cc.setSessionData(newPref + CK.S_MOB_TYPES, cc.getSessionData(pref + CK.S_MOB_TYPES));
cc.setSessionData(newPref + CK.S_MOB_AMOUNTS, cc.getSessionData(pref + CK.S_MOB_AMOUNTS));
cc.setSessionData(newPref + CK.S_MOB_KILL_LOCATIONS, cc.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS));
cc.setSessionData(newPref + CK.S_MOB_KILL_LOCATIONS_RADIUS, cc.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS));
cc.setSessionData(newPref + CK.S_MOB_KILL_LOCATIONS_NAMES, cc.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES));
cc.setSessionData(newPref + CK.S_REACH_LOCATIONS, cc.getSessionData(pref + CK.S_REACH_LOCATIONS));
cc.setSessionData(newPref + CK.S_REACH_LOCATIONS_RADIUS, cc.getSessionData(pref + CK.S_REACH_LOCATIONS_RADIUS));
cc.setSessionData(newPref + CK.S_REACH_LOCATIONS_NAMES, cc.getSessionData(pref + CK.S_REACH_LOCATIONS_NAMES));
cc.setSessionData(newPref + CK.S_TAME_TYPES, cc.getSessionData(pref + CK.S_TAME_TYPES));
cc.setSessionData(newPref + CK.S_TAME_AMOUNTS, cc.getSessionData(pref + CK.S_TAME_AMOUNTS));
cc.setSessionData(newPref + CK.S_SHEAR_COLORS, cc.getSessionData(pref + CK.S_SHEAR_COLORS));
cc.setSessionData(newPref + CK.S_SHEAR_AMOUNTS, cc.getSessionData(pref + CK.S_SHEAR_AMOUNTS));
cc.setSessionData(newPref + CK.S_START_EVENT, cc.getSessionData(pref + CK.S_START_EVENT));
cc.setSessionData(newPref + CK.S_DISCONNECT_EVENT, cc.getSessionData(pref + CK.S_DISCONNECT_EVENT));
cc.setSessionData(newPref + CK.S_DEATH_EVENT, cc.getSessionData(pref + CK.S_DEATH_EVENT));
cc.setSessionData(newPref + CK.S_CHAT_EVENTS, cc.getSessionData(pref + CK.S_CHAT_EVENTS));
cc.setSessionData(newPref + CK.S_CHAT_EVENT_TRIGGERS, cc.getSessionData(pref + CK.S_CHAT_EVENT_TRIGGERS));
cc.setSessionData(newPref + CK.S_FINISH_EVENT, cc.getSessionData(pref + CK.S_FINISH_EVENT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_COUNT, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP));
cc.setSessionData(newPref + CK.S_PASSWORD_DISPLAYS, cc.getSessionData(pref + CK.S_PASSWORD_DISPLAYS));
cc.setSessionData(newPref + CK.S_PASSWORD_PHRASES, cc.getSessionData(pref + CK.S_PASSWORD_PHRASES));
cc.setSessionData(newPref + CK.S_OVERRIDE_DISPLAY, cc.getSessionData(pref + CK.S_OVERRIDE_DISPLAY));
cc.setSessionData(newPref + CK.S_DELAY, cc.getSessionData(pref + CK.S_DELAY));
cc.setSessionData(newPref + CK.S_DELAY_MESSAGE, cc.getSessionData(pref + CK.S_DELAY_MESSAGE));
cc.setSessionData(newPref + CK.S_DENIZEN, cc.getSessionData(pref + CK.S_DENIZEN));
cc.setSessionData(newPref + CK.S_COMPLETE_MESSAGE, cc.getSessionData(pref + CK.S_COMPLETE_MESSAGE));
cc.setSessionData(newPref + CK.S_START_MESSAGE, cc.getSessionData(pref + CK.S_START_MESSAGE));
}
cc.setSessionData(pref + CK.S_BREAK_NAMES, null);
cc.setSessionData(pref + CK.S_BREAK_AMOUNTS, null);
cc.setSessionData(pref + CK.S_BREAK_DURABILITY, null);
cc.setSessionData(pref + CK.S_DAMAGE_NAMES, null);
cc.setSessionData(pref + CK.S_DAMAGE_AMOUNTS, null);
cc.setSessionData(pref + CK.S_DAMAGE_DURABILITY, null);
cc.setSessionData(pref + CK.S_PLACE_NAMES, null);
cc.setSessionData(pref + CK.S_PLACE_AMOUNTS, null);
cc.setSessionData(pref + CK.S_PLACE_DURABILITY, null);
cc.setSessionData(pref + CK.S_USE_NAMES, null);
cc.setSessionData(pref + CK.S_USE_AMOUNTS, null);
cc.setSessionData(pref + CK.S_USE_DURABILITY, null);
cc.setSessionData(pref + CK.S_CUT_NAMES, null);
cc.setSessionData(pref + CK.S_CUT_AMOUNTS, null);
cc.setSessionData(pref + CK.S_CUT_DURABILITY, null);
cc.setSessionData(pref + CK.S_FISH, null);
cc.setSessionData(pref + CK.S_PLAYER_KILL, null);
cc.setSessionData(pref + CK.S_ENCHANT_TYPES, null);
cc.setSessionData(pref + CK.S_ENCHANT_NAMES, null);
cc.setSessionData(pref + CK.S_ENCHANT_AMOUNTS, null);
cc.setSessionData(pref + CK.S_DELIVERY_ITEMS, null);
cc.setSessionData(pref + CK.S_DELIVERY_NPCS, null);
cc.setSessionData(pref + CK.S_DELIVERY_MESSAGES, null);
cc.setSessionData(pref + CK.S_NPCS_TO_TALK_TO, null);
cc.setSessionData(pref + CK.S_NPCS_TO_KILL, null);
cc.setSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS, null);
cc.setSessionData(pref + CK.S_MOB_TYPES, null);
cc.setSessionData(pref + CK.S_MOB_AMOUNTS, null);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS, null);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS, null);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES, null);
cc.setSessionData(pref + CK.S_REACH_LOCATIONS, null);
cc.setSessionData(pref + CK.S_REACH_LOCATIONS_RADIUS, null);
cc.setSessionData(pref + CK.S_REACH_LOCATIONS_NAMES, null);
cc.setSessionData(pref + CK.S_TAME_TYPES, null);
cc.setSessionData(pref + CK.S_TAME_AMOUNTS, null);
cc.setSessionData(pref + CK.S_SHEAR_COLORS, null);
cc.setSessionData(pref + CK.S_SHEAR_AMOUNTS, null);
cc.setSessionData(pref + CK.S_FINISH_EVENT, null);
cc.setSessionData(pref + CK.S_START_EVENT, null);
cc.setSessionData(pref + CK.S_DEATH_EVENT, null);
cc.setSessionData(pref + CK.S_CHAT_EVENTS, null);
cc.setSessionData(pref + CK.S_CHAT_EVENT_TRIGGERS, null);
cc.setSessionData(pref + CK.S_DISCONNECT_EVENT, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP, null);
cc.setSessionData(pref + CK.S_PASSWORD_DISPLAYS, null);
cc.setSessionData(pref + CK.S_PASSWORD_PHRASES, null);
cc.setSessionData(pref + CK.S_OVERRIDE_DISPLAY, null);
cc.setSessionData(pref + CK.S_DELAY, null);
cc.setSessionData(pref + CK.S_DELAY_MESSAGE, null);
cc.setSessionData(pref + CK.S_DENIZEN, null);
cc.setSessionData(pref + CK.S_COMPLETE_MESSAGE, null);
cc.setSessionData(pref + CK.S_START_MESSAGE, null);
if (last) {
break;
}
}
if (!last) {
cc.setSessionData("stage" + (current - 1), null);
} else {
cc.setSessionData("stage" + (current), null);
}
}
private final QuestFactory questFactory;
public StagesPrompt(QuestFactory qf) {
questFactory = qf;
}
@Override
public String getPromptText(ConversationContext cc) {
String text = ChatColor.LIGHT_PURPLE + "- " + ChatColor.DARK_PURPLE + Lang.get("stageEditorStages") + ChatColor.LIGHT_PURPLE + " -\n";
int stages = getStages(cc);
for (int i = 1; i <= stages; i++) {
text += ChatColor.BOLD + "" + ChatColor.GREEN + i + ". " + ChatColor.RESET + ChatColor.GOLD + Lang.get("stageEditorEditStage") + " " + i + "\n";
}
stages++;
text += "\n" + ChatColor.BOLD + "" + ChatColor.GREEN + stages + ". " + ChatColor.RESET + ChatColor.YELLOW + Lang.get("stageEditorNewStage");
stages++;
text += "\n" + ChatColor.BOLD + "" + ChatColor.BLUE + stages + ". " + ChatColor.RESET + ChatColor.YELLOW + Lang.get("done");
return text;
}
@Override
public Prompt acceptInput(ConversationContext cc, String string) {
int i;
try {
i = Integer.parseInt(string);
} catch (NumberFormatException e) {
return new StagesPrompt(questFactory);
}
int stages = getStages(cc);
if (i < 0) {
return new StagesPrompt(questFactory);
} else if (i < (stages + 1) && i > 0) {
return new CreateStagePrompt((i), questFactory, questFactory.quests.citizens);
} else if (i == (stages + 1)) {
return new CreateStagePrompt((stages + 1), questFactory, questFactory.quests.citizens);
} else if (i == (stages + 2)) {
return questFactory.returnToMenu();
} else {
return new StagesPrompt(questFactory);
}
}
public static int getStages(ConversationContext cc) {
int num = 1;
while (true) {
if (cc.getSessionData("stage" + num) != null) {
num++;
} else {
break;
}
}
return (num - 1);
}
public static void deleteStage(ConversationContext cc, int stageNum) {
int stages = getStages(cc);
int current = stageNum;
String pref = "stage" + current;
String newPref;
boolean last = false;
if (stageNum == stages) {
last = true;
}
while (true) {
if (!last) {
current++;
if (current > stages) {
break;
}
pref = "stage" + current;
newPref = "stage" + (current - 1);
cc.setSessionData(newPref + CK.S_BREAK_NAMES, cc.getSessionData(pref + CK.S_BREAK_NAMES));
cc.setSessionData(newPref + CK.S_BREAK_AMOUNTS, cc.getSessionData(pref + CK.S_BREAK_AMOUNTS));
cc.setSessionData(newPref + CK.S_BREAK_DURABILITY, cc.getSessionData(pref + CK.S_BREAK_DURABILITY));
cc.setSessionData(newPref + CK.S_DAMAGE_NAMES, cc.getSessionData(pref + CK.S_DAMAGE_NAMES));
cc.setSessionData(newPref + CK.S_DAMAGE_AMOUNTS, cc.getSessionData(pref + CK.S_DAMAGE_AMOUNTS));
cc.setSessionData(newPref + CK.S_DAMAGE_DURABILITY, cc.getSessionData(pref + CK.S_DAMAGE_DURABILITY));
cc.setSessionData(newPref + CK.S_PLACE_NAMES, cc.getSessionData(pref + CK.S_PLACE_NAMES));
cc.setSessionData(newPref + CK.S_PLACE_NAMES, cc.getSessionData(pref + CK.S_PLACE_AMOUNTS));
cc.setSessionData(newPref + CK.S_PLACE_DURABILITY, cc.getSessionData(pref + CK.S_PLACE_DURABILITY));
cc.setSessionData(newPref + CK.S_USE_NAMES, cc.getSessionData(pref + CK.S_USE_NAMES));
cc.setSessionData(newPref + CK.S_USE_AMOUNTS, cc.getSessionData(pref + CK.S_USE_AMOUNTS));
cc.setSessionData(newPref + CK.S_USE_DURABILITY, cc.getSessionData(pref + CK.S_USE_DURABILITY));
cc.setSessionData(newPref + CK.S_CUT_NAMES, cc.getSessionData(pref + CK.S_CUT_NAMES));
cc.setSessionData(newPref + CK.S_CUT_AMOUNTS, cc.getSessionData(pref + CK.S_CUT_AMOUNTS));
cc.setSessionData(newPref + CK.S_CUT_DURABILITY, cc.getSessionData(pref + CK.S_CUT_DURABILITY));
cc.setSessionData(newPref + CK.S_FISH, cc.getSessionData(pref + CK.S_FISH));
cc.setSessionData(newPref + CK.S_PLAYER_KILL, cc.getSessionData(pref + CK.S_PLAYER_KILL));
cc.setSessionData(newPref + CK.S_ENCHANT_TYPES, cc.getSessionData(pref + CK.S_ENCHANT_TYPES));
cc.setSessionData(newPref + CK.S_ENCHANT_NAMES, cc.getSessionData(pref + CK.S_ENCHANT_NAMES));
cc.setSessionData(newPref + CK.S_ENCHANT_AMOUNTS, cc.getSessionData(pref + CK.S_ENCHANT_AMOUNTS));
cc.setSessionData(newPref + CK.S_DELIVERY_ITEMS, cc.getSessionData(pref + CK.S_DELIVERY_ITEMS));
cc.setSessionData(newPref + CK.S_DELIVERY_NPCS, cc.getSessionData(pref + CK.S_DELIVERY_NPCS));
cc.setSessionData(newPref + CK.S_DELIVERY_MESSAGES, cc.getSessionData(pref + CK.S_DELIVERY_MESSAGES));
cc.setSessionData(newPref + CK.S_NPCS_TO_TALK_TO, cc.getSessionData(pref + CK.S_NPCS_TO_TALK_TO));
cc.setSessionData(newPref + CK.S_NPCS_TO_KILL, cc.getSessionData(pref + CK.S_NPCS_TO_KILL));
cc.setSessionData(newPref + CK.S_NPCS_TO_KILL_AMOUNTS, cc.getSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS));
cc.setSessionData(newPref + CK.S_MOB_TYPES, cc.getSessionData(pref + CK.S_MOB_TYPES));
cc.setSessionData(newPref + CK.S_MOB_AMOUNTS, cc.getSessionData(pref + CK.S_MOB_AMOUNTS));
cc.setSessionData(newPref + CK.S_MOB_KILL_LOCATIONS, cc.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS));
cc.setSessionData(newPref + CK.S_MOB_KILL_LOCATIONS_RADIUS, cc.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS));
cc.setSessionData(newPref + CK.S_MOB_KILL_LOCATIONS_NAMES, cc.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES));
cc.setSessionData(newPref + CK.S_REACH_LOCATIONS, cc.getSessionData(pref + CK.S_REACH_LOCATIONS));
cc.setSessionData(newPref + CK.S_REACH_LOCATIONS_RADIUS, cc.getSessionData(pref + CK.S_REACH_LOCATIONS_RADIUS));
cc.setSessionData(newPref + CK.S_REACH_LOCATIONS_NAMES, cc.getSessionData(pref + CK.S_REACH_LOCATIONS_NAMES));
cc.setSessionData(newPref + CK.S_TAME_TYPES, cc.getSessionData(pref + CK.S_TAME_TYPES));
cc.setSessionData(newPref + CK.S_TAME_AMOUNTS, cc.getSessionData(pref + CK.S_TAME_AMOUNTS));
cc.setSessionData(newPref + CK.S_SHEAR_COLORS, cc.getSessionData(pref + CK.S_SHEAR_COLORS));
cc.setSessionData(newPref + CK.S_SHEAR_AMOUNTS, cc.getSessionData(pref + CK.S_SHEAR_AMOUNTS));
cc.setSessionData(newPref + CK.S_START_EVENT, cc.getSessionData(pref + CK.S_START_EVENT));
cc.setSessionData(newPref + CK.S_DISCONNECT_EVENT, cc.getSessionData(pref + CK.S_DISCONNECT_EVENT));
cc.setSessionData(newPref + CK.S_DEATH_EVENT, cc.getSessionData(pref + CK.S_DEATH_EVENT));
cc.setSessionData(newPref + CK.S_CHAT_EVENTS, cc.getSessionData(pref + CK.S_CHAT_EVENTS));
cc.setSessionData(newPref + CK.S_CHAT_EVENT_TRIGGERS, cc.getSessionData(pref + CK.S_CHAT_EVENT_TRIGGERS));
cc.setSessionData(newPref + CK.S_FINISH_EVENT, cc.getSessionData(pref + CK.S_FINISH_EVENT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_COUNT, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP));
cc.setSessionData(newPref + CK.S_PASSWORD_DISPLAYS, cc.getSessionData(pref + CK.S_PASSWORD_DISPLAYS));
cc.setSessionData(newPref + CK.S_PASSWORD_PHRASES, cc.getSessionData(pref + CK.S_PASSWORD_PHRASES));
cc.setSessionData(newPref + CK.S_OVERRIDE_DISPLAY, cc.getSessionData(pref + CK.S_OVERRIDE_DISPLAY));
cc.setSessionData(newPref + CK.S_DELAY, cc.getSessionData(pref + CK.S_DELAY));
cc.setSessionData(newPref + CK.S_DELAY_MESSAGE, cc.getSessionData(pref + CK.S_DELAY_MESSAGE));
cc.setSessionData(newPref + CK.S_DENIZEN, cc.getSessionData(pref + CK.S_DENIZEN));
cc.setSessionData(newPref + CK.S_COMPLETE_MESSAGE, cc.getSessionData(pref + CK.S_COMPLETE_MESSAGE));
cc.setSessionData(newPref + CK.S_START_MESSAGE, cc.getSessionData(pref + CK.S_START_MESSAGE));
}
cc.setSessionData(pref + CK.S_BREAK_NAMES, null);
cc.setSessionData(pref + CK.S_BREAK_AMOUNTS, null);
cc.setSessionData(pref + CK.S_BREAK_DURABILITY, null);
cc.setSessionData(pref + CK.S_DAMAGE_NAMES, null);
cc.setSessionData(pref + CK.S_DAMAGE_AMOUNTS, null);
cc.setSessionData(pref + CK.S_DAMAGE_DURABILITY, null);
cc.setSessionData(pref + CK.S_PLACE_NAMES, null);
cc.setSessionData(pref + CK.S_PLACE_AMOUNTS, null);
cc.setSessionData(pref + CK.S_PLACE_DURABILITY, null);
cc.setSessionData(pref + CK.S_USE_NAMES, null);
cc.setSessionData(pref + CK.S_USE_AMOUNTS, null);
cc.setSessionData(pref + CK.S_USE_DURABILITY, null);
cc.setSessionData(pref + CK.S_CUT_NAMES, null);
cc.setSessionData(pref + CK.S_CUT_AMOUNTS, null);
cc.setSessionData(pref + CK.S_CUT_DURABILITY, null);
cc.setSessionData(pref + CK.S_FISH, null);
cc.setSessionData(pref + CK.S_PLAYER_KILL, null);
cc.setSessionData(pref + CK.S_ENCHANT_TYPES, null);
cc.setSessionData(pref + CK.S_ENCHANT_NAMES, null);
cc.setSessionData(pref + CK.S_ENCHANT_AMOUNTS, null);
cc.setSessionData(pref + CK.S_DELIVERY_ITEMS, null);
cc.setSessionData(pref + CK.S_DELIVERY_NPCS, null);
cc.setSessionData(pref + CK.S_DELIVERY_MESSAGES, null);
cc.setSessionData(pref + CK.S_NPCS_TO_TALK_TO, null);
cc.setSessionData(pref + CK.S_NPCS_TO_KILL, null);
cc.setSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS, null);
cc.setSessionData(pref + CK.S_MOB_TYPES, null);
cc.setSessionData(pref + CK.S_MOB_AMOUNTS, null);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS, null);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS, null);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES, null);
cc.setSessionData(pref + CK.S_REACH_LOCATIONS, null);
cc.setSessionData(pref + CK.S_REACH_LOCATIONS_RADIUS, null);
cc.setSessionData(pref + CK.S_REACH_LOCATIONS_NAMES, null);
cc.setSessionData(pref + CK.S_TAME_TYPES, null);
cc.setSessionData(pref + CK.S_TAME_AMOUNTS, null);
cc.setSessionData(pref + CK.S_SHEAR_COLORS, null);
cc.setSessionData(pref + CK.S_SHEAR_AMOUNTS, null);
cc.setSessionData(pref + CK.S_FINISH_EVENT, null);
cc.setSessionData(pref + CK.S_START_EVENT, null);
cc.setSessionData(pref + CK.S_DEATH_EVENT, null);
cc.setSessionData(pref + CK.S_CHAT_EVENTS, null);
cc.setSessionData(pref + CK.S_CHAT_EVENT_TRIGGERS, null);
cc.setSessionData(pref + CK.S_DISCONNECT_EVENT, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS, null);
cc.setSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP, null);
cc.setSessionData(pref + CK.S_PASSWORD_DISPLAYS, null);
cc.setSessionData(pref + CK.S_PASSWORD_PHRASES, null);
cc.setSessionData(pref + CK.S_OVERRIDE_DISPLAY, null);
cc.setSessionData(pref + CK.S_DELAY, null);
cc.setSessionData(pref + CK.S_DELAY_MESSAGE, null);
cc.setSessionData(pref + CK.S_DENIZEN, null);
cc.setSessionData(pref + CK.S_COMPLETE_MESSAGE, null);
cc.setSessionData(pref + CK.S_START_MESSAGE, null);
if (last) {
break;
}
}
if (!last) {
cc.setSessionData("stage" + (current - 1), null);
} else {
cc.setSessionData("stage" + (current), null);
}
}
}

View File

@ -2,142 +2,136 @@ package me.blackvein.quests.util;
public class CK {
public static final String ED_QUEST_EDIT = "edit";
public static final String ED_QUEST_DELETE = "delQuest";
public static final String ED_EVENT_DELETE = "delEvent";
//Quests
public static final String Q_NAME = "questName";
public static final String Q_ASK_MESSAGE = "askMessage";
public static final String Q_FINISH_MESSAGE = "finishMessage";
public static final String Q_REDO_DELAY = "redoDelay";
public static final String Q_START_NPC = "npcStart";
public static final String Q_START_BLOCK = "blockStart";
public static final String Q_FAIL_MESSAGE = "failMessage";
public static final String Q_INITIAL_EVENT = "initialEvent";
public static final String Q_REGION = "region";
public static final String Q_GUIDISPLAY = "guiDisplay";
//Requirements
public static final String REQ_MONEY = "moneyReq";
public static final String REQ_QUEST_POINTS = "questPointsReq";
public static final String REQ_ITEMS = "itemReqs";
public static final String REQ_ITEMS_REMOVE = "removeItemReqs";
public static final String REQ_PERMISSION = "permissionReqs";
public static final String REQ_MCMMO_SKILLS = "mcMMOSkillReqs";
public static final String REQ_MCMMO_SKILL_AMOUNTS = "mcMMOSkillAmountReqs";
public static final String REQ_HEROES_PRIMARY_CLASS = "heroesPrimaryClassReq";
public static final String REQ_HEROES_SECONDARY_CLASS = "heroesSecondaryClassReq";
public static final String REQ_QUEST = "questReqs";
public static final String REQ_QUEST_BLOCK = "questBlocks";
public static final String REQ_CUSTOM = "customReqs";
public static final String REQ_CUSTOM_DATA = "customReqData";
public static final String REQ_CUSTOM_DATA_DESCRIPTIONS = "customReqDataDesc";
public static final String REQ_CUSTOM_DATA_TEMP = "customReqDataTemp";
//Rewards
public static final String REW_MONEY = "moneyRew";
public static final String REW_QUEST_POINTS = "questPointsRew";
public static final String REW_ITEMS = "itemRews";
public static final String REW_EXP = "expRew";
public static final String REW_COMMAND = "commandRews";
public static final String REW_PERMISSION = "permissionRews";
public static final String REW_MCMMO_SKILLS = "mcMMOSkillRews";
public static final String REW_MCMMO_AMOUNTS = "mcMMOSkillAmounts";
public static final String REW_HEROES_CLASSES = "heroesClassRews";
public static final String REW_HEROES_AMOUNTS = "heroesAmountRews";
public static final String REW_PHAT_LOOTS = "phatLootRews";
public static final String REW_CUSTOM = "customRews";
public static final String REW_CUSTOM_DATA = "customRewData";
public static final String REW_CUSTOM_DATA_DESCRIPTIONS = "customRewDataDesc";
public static final String REW_CUSTOM_DATA_TEMP = "customRewDataTemp";
//Stages
public static final String S_BREAK_NAMES = "breakNames";
public static final String S_BREAK_AMOUNTS = "breakAmounts";
public static final String S_BREAK_DURABILITY = "breakDurability";
public static final String S_DAMAGE_NAMES = "damageNames";
public static final String S_DAMAGE_AMOUNTS = "damageAmounts";
public static final String S_DAMAGE_DURABILITY = "damageDurability";
public static final String S_PLACE_NAMES = "placeNames";
public static final String S_PLACE_AMOUNTS = "placeAmounts";
public static final String S_PLACE_DURABILITY = "placeDurability";
public static final String S_USE_NAMES = "useNames";
public static final String S_USE_AMOUNTS = "useAmounts";
public static final String S_USE_DURABILITY = "useDurability";
public static final String S_CUT_NAMES = "cutNames";
public static final String S_CUT_AMOUNTS = "cutAmounts";
public static final String S_CUT_DURABILITY = "cutDurability";
public static final String S_FISH = "fish";
public static final String S_PLAYER_KILL = "playerKill";
public static final String S_ENCHANT_TYPES = "enchantTypes";
public static final String S_ENCHANT_NAMES = "enchantNames";
public static final String S_ENCHANT_AMOUNTS = "enchantAmounts";
public static final String S_DELIVERY_ITEMS = "deliveryItems";
public static final String S_DELIVERY_NPCS = "deliveryNPCs";
public static final String S_DELIVERY_MESSAGES = "deliveryMessages";
public static final String S_NPCS_TO_TALK_TO = "npcIdsToTalkTo";
public static final String S_NPCS_TO_KILL = "npcIdsToKill";
public static final String S_NPCS_TO_KILL_AMOUNTS = "npcAmountsToKill";
public static final String S_MOB_TYPES = "mobTypes";
public static final String S_MOB_AMOUNTS = "mobAmounts";
public static final String S_MOB_KILL_LOCATIONS = "killLocations";
public static final String S_MOB_KILL_LOCATIONS_RADIUS = "killLocationRadii";
public static final String S_MOB_KILL_LOCATIONS_NAMES = "killLocationNames";
public static final String S_REACH_LOCATIONS = "reachLocations";
public static final String S_REACH_LOCATIONS_RADIUS = "reachLocationRadii";
public static final String S_REACH_LOCATIONS_NAMES = "reachLocationNames";
public static final String S_TAME_TYPES = "tameTypes";
public static final String S_TAME_AMOUNTS = "tameAmounts";
public static final String S_SHEAR_COLORS = "shearColors";
public static final String S_SHEAR_AMOUNTS = "shearAmounts";
public static final String S_START_EVENT = "startEvent";
public static final String S_FINISH_EVENT = "finishEvent";
public static final String S_CHAT_EVENTS = "chatEvents";
public static final String S_CHAT_EVENT_TRIGGERS = "chatEventTriggers";
public static final String S_CHAT_TEMP_EVENT = "chatTempEvent";
public static final String S_DEATH_EVENT = "deathEvent";
public static final String S_DISCONNECT_EVENT = "disconnectEvent";
public static final String S_DELAY = "delay";
public static final String S_DELAY_MESSAGE = "delayMessage";
public static final String S_DENIZEN = "denizen";
public static final String S_COMPLETE_MESSAGE = "completeMessage";
public static final String S_START_MESSAGE = "startMessage";
public static final String S_OVERRIDE_DISPLAY = "overrideDisplay";
public static final String S_PASSWORD_DISPLAYS = "passwordDisplays";
public static final String S_PASSWORD_PHRASES = "passwordPhrases";
public static final String S_CUSTOM_OBJECTIVES = "customObjectives";
public static final String S_CUSTOM_OBJECTIVES_COUNT = "customObjectiveCounts";
public static final String S_CUSTOM_OBJECTIVES_DATA = "customObjectiveData";
public static final String S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS = "customObjectiveDataDescriptions";
public static final String S_CUSTOM_OBJECTIVES_DATA_TEMP = "customObjectiveDataTemp";
//Events
public static final String E_OLD_EVENT = "oldEvent";
public static final String E_NAME = "evtName";
public static final String E_MESSAGE = "evtMessage";
public static final String E_CLEAR_INVENTORY = "evtClearInv";
public static final String E_FAIL_QUEST = "evtFailQuest";
public static final String E_ITEMS = "evtItems";
public static final String E_ITEMS_AMOUNTS = "evtItemAmounts";
public static final String E_EXPLOSIONS = "evtExplosions";
public static final String E_EFFECTS = "evtEffects";
public static final String E_EFFECTS_LOCATIONS = "evtEffectLocations";
public static final String E_WORLD_STORM = "evtStormWorld";
public static final String E_WORLD_STORM_DURATION = "evtStormDuration";
public static final String E_WORLD_THUNDER = "evtThunderWorld";
public static final String E_WORLD_THUNDER_DURATION = "evtThunderDuration";
public static final String E_MOB_TYPES = "evtMobTypes";
public static final String E_LIGHTNING = "evtLightningStrikes";
public static final String E_POTION_TYPES = "evtPotionTypes";
public static final String E_POTION_DURATIONS = "evtPotionDurations";
public static final String E_POTION_STRENGHT = "evtPotionMagnitudes";
public static final String E_HUNGER = "evtHunger";
public static final String E_SATURATION = "evtSaturation";
public static final String E_HEALTH = "evtHealth";
public static final String E_TELEPORT = "evtTeleportLocation";
public static final String E_COMMANDS = "evtCommands";
//Party
public static final String P_INVITER = "inviter";
public static final String ED_QUEST_EDIT = "edit";
public static final String ED_QUEST_DELETE = "delQuest";
public static final String ED_EVENT_DELETE = "delEvent";
// Quests
public static final String Q_NAME = "questName";
public static final String Q_ASK_MESSAGE = "askMessage";
public static final String Q_FINISH_MESSAGE = "finishMessage";
public static final String Q_REDO_DELAY = "redoDelay";
public static final String Q_START_NPC = "npcStart";
public static final String Q_START_BLOCK = "blockStart";
public static final String Q_FAIL_MESSAGE = "failMessage";
public static final String Q_INITIAL_EVENT = "initialEvent";
public static final String Q_REGION = "region";
public static final String Q_GUIDISPLAY = "guiDisplay";
// Requirements
public static final String REQ_MONEY = "moneyReq";
public static final String REQ_QUEST_POINTS = "questPointsReq";
public static final String REQ_ITEMS = "itemReqs";
public static final String REQ_ITEMS_REMOVE = "removeItemReqs";
public static final String REQ_PERMISSION = "permissionReqs";
public static final String REQ_MCMMO_SKILLS = "mcMMOSkillReqs";
public static final String REQ_MCMMO_SKILL_AMOUNTS = "mcMMOSkillAmountReqs";
public static final String REQ_HEROES_PRIMARY_CLASS = "heroesPrimaryClassReq";
public static final String REQ_HEROES_SECONDARY_CLASS = "heroesSecondaryClassReq";
public static final String REQ_QUEST = "questReqs";
public static final String REQ_QUEST_BLOCK = "questBlocks";
public static final String REQ_CUSTOM = "customReqs";
public static final String REQ_CUSTOM_DATA = "customReqData";
public static final String REQ_CUSTOM_DATA_DESCRIPTIONS = "customReqDataDesc";
public static final String REQ_CUSTOM_DATA_TEMP = "customReqDataTemp";
// Rewards
public static final String REW_MONEY = "moneyRew";
public static final String REW_QUEST_POINTS = "questPointsRew";
public static final String REW_ITEMS = "itemRews";
public static final String REW_EXP = "expRew";
public static final String REW_COMMAND = "commandRews";
public static final String REW_PERMISSION = "permissionRews";
public static final String REW_MCMMO_SKILLS = "mcMMOSkillRews";
public static final String REW_MCMMO_AMOUNTS = "mcMMOSkillAmounts";
public static final String REW_HEROES_CLASSES = "heroesClassRews";
public static final String REW_HEROES_AMOUNTS = "heroesAmountRews";
public static final String REW_PHAT_LOOTS = "phatLootRews";
public static final String REW_CUSTOM = "customRews";
public static final String REW_CUSTOM_DATA = "customRewData";
public static final String REW_CUSTOM_DATA_DESCRIPTIONS = "customRewDataDesc";
public static final String REW_CUSTOM_DATA_TEMP = "customRewDataTemp";
// Stages
public static final String S_BREAK_NAMES = "breakNames";
public static final String S_BREAK_AMOUNTS = "breakAmounts";
public static final String S_BREAK_DURABILITY = "breakDurability";
public static final String S_DAMAGE_NAMES = "damageNames";
public static final String S_DAMAGE_AMOUNTS = "damageAmounts";
public static final String S_DAMAGE_DURABILITY = "damageDurability";
public static final String S_PLACE_NAMES = "placeNames";
public static final String S_PLACE_AMOUNTS = "placeAmounts";
public static final String S_PLACE_DURABILITY = "placeDurability";
public static final String S_USE_NAMES = "useNames";
public static final String S_USE_AMOUNTS = "useAmounts";
public static final String S_USE_DURABILITY = "useDurability";
public static final String S_CUT_NAMES = "cutNames";
public static final String S_CUT_AMOUNTS = "cutAmounts";
public static final String S_CUT_DURABILITY = "cutDurability";
public static final String S_FISH = "fish";
public static final String S_PLAYER_KILL = "playerKill";
public static final String S_ENCHANT_TYPES = "enchantTypes";
public static final String S_ENCHANT_NAMES = "enchantNames";
public static final String S_ENCHANT_AMOUNTS = "enchantAmounts";
public static final String S_DELIVERY_ITEMS = "deliveryItems";
public static final String S_DELIVERY_NPCS = "deliveryNPCs";
public static final String S_DELIVERY_MESSAGES = "deliveryMessages";
public static final String S_NPCS_TO_TALK_TO = "npcIdsToTalkTo";
public static final String S_NPCS_TO_KILL = "npcIdsToKill";
public static final String S_NPCS_TO_KILL_AMOUNTS = "npcAmountsToKill";
public static final String S_MOB_TYPES = "mobTypes";
public static final String S_MOB_AMOUNTS = "mobAmounts";
public static final String S_MOB_KILL_LOCATIONS = "killLocations";
public static final String S_MOB_KILL_LOCATIONS_RADIUS = "killLocationRadii";
public static final String S_MOB_KILL_LOCATIONS_NAMES = "killLocationNames";
public static final String S_REACH_LOCATIONS = "reachLocations";
public static final String S_REACH_LOCATIONS_RADIUS = "reachLocationRadii";
public static final String S_REACH_LOCATIONS_NAMES = "reachLocationNames";
public static final String S_TAME_TYPES = "tameTypes";
public static final String S_TAME_AMOUNTS = "tameAmounts";
public static final String S_SHEAR_COLORS = "shearColors";
public static final String S_SHEAR_AMOUNTS = "shearAmounts";
public static final String S_START_EVENT = "startEvent";
public static final String S_FINISH_EVENT = "finishEvent";
public static final String S_CHAT_EVENTS = "chatEvents";
public static final String S_CHAT_EVENT_TRIGGERS = "chatEventTriggers";
public static final String S_CHAT_TEMP_EVENT = "chatTempEvent";
public static final String S_DEATH_EVENT = "deathEvent";
public static final String S_DISCONNECT_EVENT = "disconnectEvent";
public static final String S_DELAY = "delay";
public static final String S_DELAY_MESSAGE = "delayMessage";
public static final String S_DENIZEN = "denizen";
public static final String S_COMPLETE_MESSAGE = "completeMessage";
public static final String S_START_MESSAGE = "startMessage";
public static final String S_OVERRIDE_DISPLAY = "overrideDisplay";
public static final String S_PASSWORD_DISPLAYS = "passwordDisplays";
public static final String S_PASSWORD_PHRASES = "passwordPhrases";
public static final String S_CUSTOM_OBJECTIVES = "customObjectives";
public static final String S_CUSTOM_OBJECTIVES_COUNT = "customObjectiveCounts";
public static final String S_CUSTOM_OBJECTIVES_DATA = "customObjectiveData";
public static final String S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS = "customObjectiveDataDescriptions";
public static final String S_CUSTOM_OBJECTIVES_DATA_TEMP = "customObjectiveDataTemp";
// Events
public static final String E_OLD_EVENT = "oldEvent";
public static final String E_NAME = "evtName";
public static final String E_MESSAGE = "evtMessage";
public static final String E_CLEAR_INVENTORY = "evtClearInv";
public static final String E_FAIL_QUEST = "evtFailQuest";
public static final String E_ITEMS = "evtItems";
public static final String E_ITEMS_AMOUNTS = "evtItemAmounts";
public static final String E_EXPLOSIONS = "evtExplosions";
public static final String E_EFFECTS = "evtEffects";
public static final String E_EFFECTS_LOCATIONS = "evtEffectLocations";
public static final String E_WORLD_STORM = "evtStormWorld";
public static final String E_WORLD_STORM_DURATION = "evtStormDuration";
public static final String E_WORLD_THUNDER = "evtThunderWorld";
public static final String E_WORLD_THUNDER_DURATION = "evtThunderDuration";
public static final String E_MOB_TYPES = "evtMobTypes";
public static final String E_LIGHTNING = "evtLightningStrikes";
public static final String E_POTION_TYPES = "evtPotionTypes";
public static final String E_POTION_DURATIONS = "evtPotionDurations";
public static final String E_POTION_STRENGHT = "evtPotionMagnitudes";
public static final String E_HUNGER = "evtHunger";
public static final String E_SATURATION = "evtSaturation";
public static final String E_HEALTH = "evtHealth";
public static final String E_TELEPORT = "evtTeleportLocation";
public static final String E_COMMANDS = "evtCommands";
// Party
public static final String P_INVITER = "inviter";
}

View File

@ -3,10 +3,6 @@ package me.blackvein.quests.util;
import java.util.LinkedList;
import java.util.Map.Entry;
import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import net.milkbowl.vault.item.Items;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@ -14,247 +10,204 @@ import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import net.milkbowl.vault.item.Items;
public class ItemUtil {
static Quests plugin;
/**
* Will compare stacks by name, amount, data, display name/lore and enchantments
*
*
* @param one ItemStack to compare
* @param two ItemStack to compare to
* @return 0 if stacks are equal, or the first inequality from the following
* values:<br>
* @return -1&nbsp;-> stack names are unequal<br>
* @return -2&nbsp;-> stack amounts are unequal<br>
* @return -3&nbsp;-> stack data is unequal<br>
* @return -4&nbsp;-> stack display name/lore is unequal<br>
* @return -5&nbsp;-> stack enchantments are unequal<br>
*/
public static int compareItems(ItemStack one, ItemStack two, boolean ignoreAmount) {
if (one == null && two != null || one != null && two == null) {
return 0;
}
/**
* Will compare stacks by name, amount, data, display name/lore and enchantments
*
*
* @param one
* ItemStack to compare
* @param two
* ItemStack to compare to
* @return 0 if stacks are equal, or the first inequality from the following values:<br>
* @return -1&nbsp;-> stack names are unequal<br>
* @return -2&nbsp;-> stack amounts are unequal<br>
* @return -3&nbsp;-> stack data is unequal<br>
* @return -4&nbsp;-> stack display name/lore is unequal<br>
* @return -5&nbsp;-> stack enchantments are unequal<br>
*/
public static int compareItems(ItemStack one, ItemStack two, boolean ignoreAmount) {
if (one == null && two != null || one != null && two == null) {
return 0;
}
if (one == null && two == null) {
return 0;
}
if (one.getType().name() != two.getType().name()) {
return -1;
} else if ((one.getAmount() != two.getAmount()) && ignoreAmount == false) {
return -2;
} else if (one.getData().equals(two.getData()) == false) {
return -3;
}
if (one.hasItemMeta() || two.hasItemMeta()) {
if (one.hasItemMeta() && two.hasItemMeta() == false) {
return -4;
} else if (one.hasItemMeta() == false && two.hasItemMeta()) {
return -4;
} else if (one.getItemMeta().hasDisplayName() && two.getItemMeta().hasDisplayName() == false) {
return -4;
} else if (one.getItemMeta().hasDisplayName() == false && two.getItemMeta().hasDisplayName()) {
return -4;
} else if (one.getItemMeta().hasLore() && two.getItemMeta().hasLore() == false) {
return -4;
} else if (one.getItemMeta().hasLore() == false && two.getItemMeta().hasLore()) {
return -4;
} else if (one.getItemMeta().hasDisplayName() && two.getItemMeta().hasDisplayName() && ChatColor.stripColor(one.getItemMeta().getDisplayName()).equals(ChatColor.stripColor(two.getItemMeta().getDisplayName())) == false) {
return -4;
} else if (one.getItemMeta().hasLore() && two.getItemMeta().hasLore() && one.getItemMeta().getLore().equals(two.getItemMeta().getLore()) == false) {
return -4;
}
}
if (one.getEnchantments().equals(two.getEnchantments()) == false) {
return -5;
} else {
return 0;
}
}
if (one == null && two == null) {
return 0;
}
// Formats -> name-name:amount-amount:data-data:enchantment-enchantment level:displayname-displayname:lore-lore:
// Returns null if invalid format
public static ItemStack readItemStack(String data) {
if (data == null) {
return null;
}
ItemStack stack = null;
String[] args = data.split(":");
ItemMeta meta = null;
LinkedList<String> lore = new LinkedList<String>();
for (String arg : args) {
if (arg.startsWith("name-")) {
// Attempt to match item name. Returns null if invalid format
try {
stack = new ItemStack(Material.matchMaterial(arg.substring(5)));
} catch (NullPointerException npe) {
return null;
}
meta = stack.getItemMeta();
} else if (arg.startsWith("amount-")) {
stack.setAmount(Integer.parseInt(arg.substring(7)));
} else if (arg.startsWith("data-")) {
stack.setDurability(Short.parseShort(arg.substring(5)));
} else if (arg.startsWith("enchantment-")) {
String[] enchs = arg.substring(12).split(" ");
Enchantment e = Quests.getEnchantment(enchs[0]);
meta.addEnchant(e, Integer.parseInt(enchs[1]), true);
} else if (arg.startsWith("displayname-")) {
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', arg.substring(12)));
} else if (arg.startsWith("lore-")) {
lore.add(ChatColor.translateAlternateColorCodes('&', arg.substring(5)));
} else {
return null;
}
}
if (lore.isEmpty() == false) {
meta.setLore(lore);
}
stack.setItemMeta(meta);
return stack;
}
if (one.getType().name() != two.getType().name()) {
return -1;
} else if ((one.getAmount() != two.getAmount()) && ignoreAmount == false) {
return -2;
} else if (one.getData().equals(two.getData()) == false) {
return -3;
}
public static String serialize(ItemStack is) {
String serial;
if (is == null) {
return null;
}
serial = "name-" + is.getType().name();
serial += ":amount-" + is.getAmount();
if (is.getDurability() != 0) {
serial += ":data-" + is.getDurability();
}
if (is.getEnchantments().isEmpty() == false) {
for (Entry<Enchantment, Integer> e : is.getEnchantments().entrySet()) {
serial += ":enchantment-" + Quester.enchantmentString(e.getKey()) + " " + e.getValue();
}
}
if (is.hasItemMeta()) {
ItemMeta meta = is.getItemMeta();
if (meta.hasDisplayName()) {
serial += ":displayname-" + meta.getDisplayName();
}
if (meta.hasLore()) {
for (String s : meta.getLore()) {
serial += ":lore-" + s;
}
}
}
return serial;
}
if (one.hasItemMeta() || two.hasItemMeta()) {
public static String getDisplayString(ItemStack is) {
String text;
if (is == null) {
return null;
}
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) {
text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName() + ChatColor.RESET + ChatColor.AQUA + " x " + is.getAmount();
} else {
text = ChatColor.AQUA + Quester.prettyItemString(is.getType().name());
if (is.getDurability() != 0) {
text += ChatColor.AQUA + ":" + is.getDurability();
}
text += ChatColor.AQUA + " x " + is.getAmount();
if (is.getEnchantments().isEmpty() == false) {
text += " " + ChatColor.DARK_PURPLE + Lang.get("enchantedItem");
}
}
return text;
}
if (one.hasItemMeta() && two.hasItemMeta() == false) {
return -4;
} else if (one.hasItemMeta() == false && two.hasItemMeta()) {
return -4;
} else if (one.getItemMeta().hasDisplayName() && two.getItemMeta().hasDisplayName() == false) {
return -4;
} else if (one.getItemMeta().hasDisplayName() == false && two.getItemMeta().hasDisplayName()) {
return -4;
} else if (one.getItemMeta().hasLore() && two.getItemMeta().hasLore() == false) {
return -4;
} else if (one.getItemMeta().hasLore() == false && two.getItemMeta().hasLore()) {
return -4;
} else if (one.getItemMeta().hasDisplayName() && two.getItemMeta().hasDisplayName() && ChatColor.stripColor(one.getItemMeta().getDisplayName()).equals(ChatColor.stripColor(two.getItemMeta().getDisplayName())) == false) {
return -4;
} else if (one.getItemMeta().hasLore() && two.getItemMeta().hasLore() && one.getItemMeta().getLore().equals(two.getItemMeta().getLore()) == false) {
return -4;
}
public static String getString(ItemStack is) {
String text;
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) {
text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName() + ChatColor.RESET + ChatColor.AQUA + " x " + is.getAmount();
} else {
text = ChatColor.AQUA + Quester.prettyItemString(is.getType().name());
if (is.getDurability() != 0) {
text += ChatColor.AQUA + ":" + is.getDurability();
}
text += ChatColor.AQUA + " x " + is.getAmount();
}
return text;
}
}
public static String getName(ItemStack is) {
String text = "";
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) {
text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName();
} else {
try {
text = ChatColor.AQUA + Items.itemByStack(is).getName();
} catch (NullPointerException ne) {
Bukkit.getLogger().severe("This error is caused by an incompatible version of Vault. Please update!");
ne.printStackTrace();
}
}
return text;
}
if (one.getEnchantments().equals(two.getEnchantments()) == false) {
return -5;
} else {
return 0;
}
}
//Formats -> name-name:amount-amount:data-data:enchantment-enchantment level:displayname-displayname:lore-lore:
//Returns null if invalid format
public static ItemStack readItemStack(String data) {
if (data == null) {
return null;
}
ItemStack stack = null;
String[] args = data.split(":");
ItemMeta meta = null;
LinkedList<String> lore = new LinkedList<String>();
for (String arg : args) {
if (arg.startsWith("name-")) {
//Attempt to match item name. Returns null if invalid format
try {
stack = new ItemStack(Material.matchMaterial(arg.substring(5)));
} catch (NullPointerException npe) {
return null;
}
meta = stack.getItemMeta();
} else if (arg.startsWith("amount-")) {
stack.setAmount(Integer.parseInt(arg.substring(7)));
} else if (arg.startsWith("data-")) {
stack.setDurability(Short.parseShort(arg.substring(5)));
} else if (arg.startsWith("enchantment-")) {
String[] enchs = arg.substring(12).split(" ");
Enchantment e = Quests.getEnchantment(enchs[0]);
meta.addEnchant(e, Integer.parseInt(enchs[1]), true);
} else if (arg.startsWith("displayname-")) {
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', arg.substring(12)));
} else if (arg.startsWith("lore-")) {
lore.add(ChatColor.translateAlternateColorCodes('&', arg.substring(5)));
} else {
return null;
}
}
if (lore.isEmpty() == false) {
meta.setLore(lore);
}
stack.setItemMeta(meta);
return stack;
}
public static String serialize(ItemStack is) {
String serial;
if (is == null) {
return null;
}
serial = "name-" + is.getType().name();
serial += ":amount-" + is.getAmount();
if (is.getDurability() != 0) {
serial += ":data-" + is.getDurability();
}
if (is.getEnchantments().isEmpty() == false) {
for (Entry<Enchantment, Integer> e : is.getEnchantments().entrySet()) {
serial += ":enchantment-" + Quester.enchantmentString(e.getKey()) + " " + e.getValue();
}
}
if (is.hasItemMeta()) {
ItemMeta meta = is.getItemMeta();
if (meta.hasDisplayName()) {
serial += ":displayname-" + meta.getDisplayName();
}
if (meta.hasLore()) {
for (String s : meta.getLore()) {
serial += ":lore-" + s;
}
}
}
return serial;
}
public static String getDisplayString(ItemStack is) {
String text;
if (is == null) {
return null;
}
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) {
text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName() + ChatColor.RESET + ChatColor.AQUA + " x " + is.getAmount();
} else {
text = ChatColor.AQUA + Quester.prettyItemString(is.getType().name());
if (is.getDurability() != 0) {
text += ChatColor.AQUA + ":" + is.getDurability();
}
text += ChatColor.AQUA + " x " + is.getAmount();
if (is.getEnchantments().isEmpty() == false) {
text += " " + ChatColor.DARK_PURPLE + Lang.get("enchantedItem");
}
}
return text;
}
public static String getString(ItemStack is) {
String text;
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) {
text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName() + ChatColor.RESET + ChatColor.AQUA + " x " + is.getAmount();
} else {
text = ChatColor.AQUA + Quester.prettyItemString(is.getType().name());
if (is.getDurability() != 0) {
text += ChatColor.AQUA + ":" + is.getDurability();
}
text += ChatColor.AQUA + " x " + is.getAmount();
}
return text;
}
public static String getName(ItemStack is) {
String text = "";
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) {
text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName();
} else {
try {
text = ChatColor.AQUA + Items.itemByStack(is).getName();
} catch (NullPointerException ne) {
Bukkit.getLogger().severe("This error is caused by an incompatible version of Vault. Please update!");
ne.printStackTrace();
}
}
return text;
}
public static boolean isItem(ItemStack is) {
if(is == null)
return false;
if(is.getType().equals(Material.AIR))
return false;
return true;
}
public static boolean isJournal(ItemStack is) {
if(is == null)
return false;
if(is.hasItemMeta() == false)
return false;
if(is.getItemMeta().hasDisplayName() == false)
return false;
return is.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE + Lang.get("journalTitle"));
}
public static boolean isItem(ItemStack is) {
if (is == null)
return false;
if (is.getType().equals(Material.AIR))
return false;
return true;
}
public static boolean isJournal(ItemStack is) {
if (is == null)
return false;
if (is.hasItemMeta() == false)
return false;
if (is.getItemMeta().hasDisplayName() == false)
return false;
return is.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE + Lang.get("journalTitle"));
}
}

File diff suppressed because it is too large Load Diff

View File

@ -7,142 +7,106 @@ import org.bukkit.entity.EntityType;
public class MiscUtil {
public static String getCapitalized(String s) {
public static String getCapitalized(String s) {
if (s.isEmpty()) {
return s;
}
s = s.toLowerCase();
String s2 = s.substring(0, 1);
s2 = s2.toUpperCase();
s = s.substring(1, s.length());
return s2 + s;
}
if (s.isEmpty()) {
return s;
}
// Time: 7d 24h 5m 10s 20ms
public static long getTimeFromString(String string) {
// if it returns -1 then the string is incorrect.
long timeMilliSeconds = -1;
// replace 2 or more spaces with one space.
string = string.replaceAll("[ ]{2,}", " ");
String[] dates = string.split(" ");
for (String date : dates) {
String num = date.split("[a-zA-Z]+")[0];
String type = date.split("[0-9]+")[1];
int t = 0;
try {
t = Math.abs(Integer.parseInt(num));
} catch (NumberFormatException e) {
}
if (type.equals("d")) {
timeMilliSeconds += t * 86400000L;
} else if (type.equals("h")) {
timeMilliSeconds += t * 3600000;
} else if (type.equals("m")) {
timeMilliSeconds += t * 60000;
} else if (type.equals("s")) {
timeMilliSeconds += t * 1000;
} else if (type.equals("ms")) {
timeMilliSeconds += t;
}
}
// To balance the -1 at the beginning.
if (timeMilliSeconds > -1) {
timeMilliSeconds++;
}
return timeMilliSeconds;
}
s = s.toLowerCase();
String s2 = s.substring(0, 1);
s2 = s2.toUpperCase();
public static String getProperMobName(EntityType type) {
String name = type.name().toLowerCase();
name = Character.toUpperCase(name.charAt(0)) + name.substring(1);
while (fixUnderscore(name) != null) {
name = fixUnderscore(name);
}
return name;
}
s = s.substring(1, s.length());
public static EntityType getProperMobType(String properName) {
properName = properName.replaceAll("_", "").toUpperCase();
for (EntityType et : EntityType.values()) {
if (et.isAlive() && et.name().replaceAll("_", "").equalsIgnoreCase(properName)) {
return et;
}
}
return null;
}
return s2 + s;
private static String fixUnderscore(String s) {
int index = s.indexOf('_');
if (index == -1) {
return null;
}
s = s.substring(0, (index + 1)) + Character.toUpperCase(s.charAt(index + 1)) + s.substring(index + 2);
s = s.replaceFirst("_", "");
return s;
}
}
//Time: 7d 24h 5m 10s 20ms
public static long getTimeFromString(String string) {
//if it returns -1 then the string is incorrect.
long timeMilliSeconds = -1;
//replace 2 or more spaces with one space.
string = string.replaceAll("[ ]{2,}", " ");
String[] dates = string.split(" ");
for (String date : dates) {
String num = date.split("[a-zA-Z]+")[0];
String type = date.split("[0-9]+")[1];
int t = 0;
try {
t = Math.abs(Integer.parseInt(num));
} catch (NumberFormatException e) {
}
if (type.equals("d")) {
timeMilliSeconds += t * 86400000L;
} else if (type.equals("h")) {
timeMilliSeconds += t * 3600000;
} else if (type.equals("m")) {
timeMilliSeconds += t * 60000;
} else if (type.equals("s")) {
timeMilliSeconds += t * 1000;
} else if (type.equals("ms")) {
timeMilliSeconds += t;
}
}
//To balance the -1 at the beginning.
if (timeMilliSeconds > -1) {
timeMilliSeconds++;
}
return timeMilliSeconds;
}
public static String getProperMobName(EntityType type) {
String name = type.name().toLowerCase();
name = Character.toUpperCase(name.charAt(0)) + name.substring(1);
while (fixUnderscore(name) != null) {
name = fixUnderscore(name);
}
return name;
}
public static EntityType getProperMobType(String properName) {
properName = properName.replaceAll("_", "").toUpperCase();
for (EntityType et : EntityType.values()) {
if (et.isAlive() && et.name().replaceAll("_", "").equalsIgnoreCase(properName)) {
return et;
}
}
return null;
}
private static String fixUnderscore(String s) {
int index = s.indexOf('_');
if (index == -1) {
return null;
}
s = s.substring(0, (index + 1)) + Character.toUpperCase(s.charAt(index + 1)) + s.substring(index + 2);
s = s.replaceFirst("_", "");
return s;
}
public static String concatArgArray(String[] args, int startingIndex, int endingIndex, char delimiter) {
String s = "";
for (int i = startingIndex; i <= endingIndex; i++) {
s += args[i] + delimiter;
}
s = s.substring(0, s.length());
return s.trim().equals("") ? null : s.trim();
}
public static LinkedList<String> makeLines(String s, String wordDelimiter, int lineLength, ChatColor lineColor) {
LinkedList<String> toReturn = new LinkedList<String>();
String[] split = s.split(wordDelimiter);
String line = "";
int currentLength = 0;
for (String piece : split) {
if ((currentLength + piece.length()) > (lineLength + 1)) {
toReturn.add(lineColor + line.replaceAll("^" + wordDelimiter, ""));
line = piece + wordDelimiter;
currentLength = piece.length() + 1;
} else {
line += piece + wordDelimiter;
currentLength += piece.length() + 1;
}
}
if(line.equals("") == false)
toReturn.add(lineColor + line);
return toReturn;
}
public static String concatArgArray(String[] args, int startingIndex, int endingIndex, char delimiter) {
String s = "";
for (int i = startingIndex; i <= endingIndex; i++) {
s += args[i] + delimiter;
}
s = s.substring(0, s.length());
return s.trim().equals("") ? null : s.trim();
}
public static LinkedList<String> makeLines(String s, String wordDelimiter, int lineLength, ChatColor lineColor) {
LinkedList<String> toReturn = new LinkedList<String>();
String[] split = s.split(wordDelimiter);
String line = "";
int currentLength = 0;
for (String piece : split) {
if ((currentLength + piece.length()) > (lineLength + 1)) {
toReturn.add(lineColor + line.replaceAll("^" + wordDelimiter, ""));
line = piece + wordDelimiter;
currentLength = piece.length() + 1;
} else {
line += piece + wordDelimiter;
currentLength += piece.length() + 1;
}
}
if (line.equals("") == false)
toReturn.add(lineColor + line);
return toReturn;
}
}

View File

@ -1,5 +1,4 @@
package me.blackvein.quests.util;
import me.blackvein.quests.Quests;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -9,267 +8,242 @@ import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.ItemStack;
import me.blackvein.quests.Quests;
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];
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(EntityType entityType, Location spawnLocation, int spawnAmounts) {
this.entityType = entityType;
this.spawnLocation = spawnLocation;
this.spawnAmounts = spawnAmounts;
}
public QuestMob() {
public QuestMob() {
}
}
public void setSpawnLocation(Location spawnLocation) {
this.spawnLocation = spawnLocation;
}
public void setSpawnLocation(Location spawnLocation) {
this.spawnLocation = spawnLocation;
}
public Location getSpawnLocation() {
return spawnLocation;
}
public Location getSpawnLocation() {
return spawnLocation;
}
public void setType(EntityType entityType) {
this.entityType = entityType;
}
public void setType(EntityType entityType) {
this.entityType = entityType;
}
public EntityType getType() {
return entityType;
}
public EntityType getType() {
return entityType;
}
public void setSpawnAmounts(int spawnAmounts) {
this.spawnAmounts = spawnAmounts;
}
public void setSpawnAmounts(int spawnAmounts) {
this.spawnAmounts = spawnAmounts;
}
public Integer getSpawnAmounts() {
return spawnAmounts;
}
public Integer getSpawnAmounts() {
return spawnAmounts;
}
public void setName(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getName() {
return name;
}
public void setHelmet(ItemStack helmet, float dropChance) {
inventory[4] = helmet;
dropChances[4] = dropChance;
}
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 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 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 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 setHeldItem(ItemStack heldItem, float dropChance) {
inventory[0] = heldItem;
dropChances[0] = dropChance;
}
@SuppressWarnings("deprecation")
public void spawn() {
World world = spawnLocation.getWorld();
for (int i = 0; i < spawnAmounts; i++) {
LivingEntity entity = (LivingEntity) world.spawnEntity(spawnLocation, entityType);
if (name != null) {
entity.setCustomName(name);
entity.setCustomNameVisible(true);
}
EntityEquipment eq = entity.getEquipment();
try {
eq.setItemInHand(inventory[0]);
eq.setBoots(inventory[1]);
eq.setLeggings(inventory[2]);
eq.setChestplate(inventory[3]);
eq.setHelmet(inventory[4]);
} catch (Exception e) {
Bukkit.getLogger().severe("Entity NMS is invalid for this version of CraftBukkit. Please notify the developer");
e.printStackTrace();
}
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]);
}
}
}
World world = spawnLocation.getWorld();
public String serialize() {
String string = "";
string += "type-" + entityType.name();
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;
}
for (int i = 0; i < spawnAmounts; i++) {
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;
}
LivingEntity entity = (LivingEntity) world.spawnEntity(spawnLocation, entityType);
public int hashCode() {
assert false : "hashCode not designed";
return 42; // any arbitrary constant will do
}
if (name != null) {
entity.setCustomName(name);
entity.setCustomNameVisible(true);
}
EntityEquipment eq = entity.getEquipment();
try{
eq.setItemInHand(inventory[0]);
eq.setBoots(inventory[1]);
eq.setLeggings(inventory[2]);
eq.setChestplate(inventory[3]);
eq.setHelmet(inventory[4]);
} catch (Exception e) {
Bukkit.getLogger().severe("Entity NMS is invalid for this version of CraftBukkit. Please notify the developer");
e.printStackTrace();
}
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.name();
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;
}
public int hashCode() {
assert false : "hashCode not designed";
return 42; // any arbitrary constant will do
}
@Override
public boolean equals(Object o) {
if ((o instanceof QuestMob) == false) {
return false;
}
QuestMob other = (QuestMob) o;
if (name != null && other.name != null) {
if (name.equalsIgnoreCase(other.name) == false) {
return false;
}
} else if (name == null && other.name == null) {
} else {
return false;
}
if (!entityType.equals(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.equals(other.spawnAmounts)) {
return false;
}
if (!spawnLocation.equals(other.spawnLocation)) {
return false;
}
return true;
}
@Override
public boolean equals(Object o) {
if ((o instanceof QuestMob) == false) {
return false;
}
QuestMob other = (QuestMob) o;
if (name != null && other.name != null) {
if (name.equalsIgnoreCase(other.name) == false) {
return false;
}
} else if (name == null && other.name == null) {
} else {
return false;
}
if (!entityType.equals(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.equals(other.spawnAmounts)) {
return false;
}
if (!spawnLocation.equals(other.spawnLocation)) {
return false;
}
return true;
}
}