diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml index 5e65d8bae..07ff689c8 100644 --- a/Plugins/BuildFiles/common.xml +++ b/Plugins/BuildFiles/common.xml @@ -73,6 +73,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plugins/Core/src/me/chiss/Core/Module/AModule.java b/Plugins/Core/src/me/chiss/Core/Module/AModule.java index 1573f1f40..4565f763d 100644 --- a/Plugins/Core/src/me/chiss/Core/Module/AModule.java +++ b/Plugins/Core/src/me/chiss/Core/Module/AModule.java @@ -17,6 +17,7 @@ import me.chiss.Core.Plugin.IRelation; import me.chiss.Core.Server.Server; import mineplex.core.account.CoreClientManager; import mineplex.core.blockrestore.BlockRestore; +import mineplex.minecraft.core.condition.ConditionManager; import mineplex.core.creature.Creature; import mineplex.core.energy.Energy; import mineplex.core.explosion.Explosion; @@ -25,7 +26,6 @@ import mineplex.core.recharge.Recharge; import mineplex.core.server.IRepository; import mineplex.core.spawn.Spawn; import mineplex.core.teleport.Teleport; -import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.minecraft.game.core.fire.Fire; import mineplex.minecraft.game.core.mechanics.Weapon; diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java index 684ac1b42..0a36b9ddb 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java @@ -35,11 +35,29 @@ public enum Rank } public boolean Has(Player player, Rank rank, boolean inform) + { + return Has(player, rank, null, inform); + } + + public boolean Has(Player player, Rank rank, Rank[] specific, boolean inform) { if (player != null) if (player.getName().equals("Chiss")) return true; + //Specific Rank + if (specific != null) + { + for (Rank curRank : specific) + { + if (compareTo(curRank) == 0) + { + return true; + } + } + } + + // if (compareTo(rank) <= 0) return true; diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/jsonchat/ChildJsonMessage.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/jsonchat/ChildJsonMessage.java new file mode 100644 index 000000000..3d5e818a1 --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/jsonchat/ChildJsonMessage.java @@ -0,0 +1,67 @@ +package mineplex.core.common.jsonchat; + +public class ChildJsonMessage extends JsonMessage +{ + private JsonMessage _parent; + + public ChildJsonMessage(String text) + { + this(new StringBuilder(), text); + } + + public ChildJsonMessage(StringBuilder builder, String text) + { + this(null, builder, text); + } + + public ChildJsonMessage(JsonMessage parent, StringBuilder builder, String text) + { + super(builder, text); + + _parent = parent; + } + + public ChildJsonMessage add(String text) + { + Builder.append("}, "); + return new ChildJsonMessage(_parent, Builder, text); + } + + @Override + public ChildJsonMessage color(String color) + { + super.color(color); + + return this; + } + + @Override + public ChildJsonMessage click(String action, String value) + { + super.click(action, value); + + return this; + } + + @Override + public ChildJsonMessage hover(String action, String value) + { + super.hover(action, value); + + return this; + } + + @Override + public String toString() + { + Builder.append("}"); + + if (_parent != null) + { + Builder.append("]"); + return _parent instanceof ChildJsonMessage ? ((ChildJsonMessage)_parent).toString() : _parent.toString(); + } + else + return Builder.toString(); + } +} diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/jsonchat/JsonMessage.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/jsonchat/JsonMessage.java new file mode 100644 index 000000000..a37c9185f --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/jsonchat/JsonMessage.java @@ -0,0 +1,59 @@ +package mineplex.core.common.jsonchat; + +import org.bukkit.entity.Player; + +import mineplex.core.common.util.UtilServer; + +public class JsonMessage +{ + protected StringBuilder Builder; + + public JsonMessage(String text) + { + this(new StringBuilder(), text); + } + + public JsonMessage(StringBuilder builder, String text) + { + Builder = builder; + Builder.append("{\"text\":\"" + text + "\""); + } + + public JsonMessage color(String color) + { + Builder.append(", color:" + color); + return this; + } + + public ChildJsonMessage extra(String text) + { + Builder.append(", \"extra\":["); + return new ChildJsonMessage(this, Builder, text); + } + + public JsonMessage click(String action, String value) + { + Builder.append(", \"clickEvent\":{\"action\":\"" + action + "\",\"value\":\"" + value + "\"}"); + + return this; + } + + public JsonMessage hover(String action, String value) + { + Builder.append(", \"hoverEvent\":{\"action\":\"" + action + "\",\"value\":\"" + value + "\"}"); + + return this; + } + + public String toString() + { + Builder.append("}"); + + return Builder.toString(); + } + + public void sendToPlayer(Player player) + { + UtilServer.getServer().dispatchCommand(UtilServer.getServer().getConsoleSender(), "tellraw " + player.getName() + " " + toString()); + } +} diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UUIDFetcher.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UUIDFetcher.java new file mode 100644 index 000000000..001a71d19 --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UUIDFetcher.java @@ -0,0 +1,103 @@ +package mineplex.core.common.util; + +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.*; + +public class UUIDFetcher +{ + private static UUIDFetcher _instance = new UUIDFetcher(); + + private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft"; + + private final JSONParser _jsonParser = new JSONParser(); + + public UUID getPlayerUUID(String name) + { + UUID uuid = null; + List nameList = new ArrayList(); + nameList.add(name); + + try + { + HttpURLConnection connection = createConnection(); + String body = JSONArray.toJSONString(nameList.subList(0, Math.min(100, 1))); + 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"); + uuid = UUIDFetcher.getUUID(id); + } + } + catch (Exception exception) + { + exception.printStackTrace(); + } + + return uuid; + } + + 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 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 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) + { + if (_instance == null) + _instance = new UUIDFetcher(); + + return _instance.getPlayerUUID(name); + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilMath.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilMath.java index 03e187824..2ba63686b 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilMath.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilMath.java @@ -73,5 +73,13 @@ public class UtilMath { return a.distanceSquared(b); } + + public static double rr(double d, boolean bidirectional) + { + if (bidirectional) + return Math.random() * (2 * d) - d; + + return Math.random() * d; + } } diff --git a/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch b/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch index c531d22bb..e7208b92f 100644 --- a/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch +++ b/Plugins/Mineplex.Core/.externalToolBuilders/asdf.launch @@ -1,8 +1,8 @@ - - - + + + diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java index f55c95510..fffa1202c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java @@ -18,6 +18,7 @@ import mineplex.core.account.repository.token.ClientToken; import mineplex.core.common.Rank; import mineplex.core.common.util.Callback; import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UUIDFetcher; import mineplex.core.common.util.UtilPlayer; import mineplex.core.logger.Logger; import mineplex.core.timing.TimingManager; @@ -37,8 +38,6 @@ import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; -import com.google.common.base.Charsets; - public class CoreClientManager extends MiniPlugin { private JavaPlugin _plugin; @@ -154,13 +153,24 @@ public class CoreClientManager extends MiniPlugin public void loadClientByName(final String playerName, final Runnable runnable) { final CoreClient client = Add(playerName); - final UUID uuid = UUID.nameUUIDFromBytes((playerName).getBytes(Charsets.UTF_8)); + final UUID uuid = UUIDFetcher.getUUIDOf(playerName); Bukkit.getServer().getScheduler().runTaskAsynchronously(GetPlugin(), new Runnable() { public void run() { - LoadClient(client, uuid, "null"); + ClientToken token = null; + Gson gson = new Gson(); + + String response = _repository.getClientByUUID(uuid); + token = gson.fromJson(response, ClientToken.class); + + client.SetAccountId(token.AccountId); + client.SetRank(Rank.valueOf(token.Rank)); + + // JSON sql response + Bukkit.getServer().getPluginManager().callEvent(new ClientWebResponseEvent(response)); + Bukkit.getServer().getScheduler().runTask(GetPlugin(), new Runnable() { public void run() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java b/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java index 68db3569f..476dc8ae9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java @@ -118,7 +118,7 @@ public class BlockRestore extends MiniPlugin return; //No Snow on Ice - if (block.getRelative(BlockFace.DOWN).getTypeId() == 79) + if (block.getRelative(BlockFace.DOWN).getTypeId() == 79 || block.getRelative(BlockFace.DOWN).getTypeId() == 174) return; //No Snow on Slabs @@ -130,8 +130,8 @@ public class BlockRestore extends MiniPlugin return; //No Snow on Fence or Walls - if (block.getRelative(BlockFace.DOWN).getTypeId() == 85 || - block.getRelative(BlockFace.DOWN).getTypeId() == 139) + if (block.getRelative(BlockFace.DOWN).getType().name().toLowerCase().contains("fence") || + block.getRelative(BlockFace.DOWN).getType().name().toLowerCase().contains("wall")) return; //Not Buildable diff --git a/Plugins/Mineplex.Core/src/mineplex/core/command/CommandBase.java b/Plugins/Mineplex.Core/src/mineplex/core/command/CommandBase.java index 0bf928b03..7361db14c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/command/CommandBase.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/command/CommandBase.java @@ -4,12 +4,17 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; +import org.bukkit.entity.Player; + import mineplex.core.MiniPlugin; import mineplex.core.common.Rank; +import mineplex.core.recharge.Recharge; public abstract class CommandBase implements ICommand { private Rank _requiredRank; + private Rank[] _specificRank; + private List _aliases; protected PluginType Plugin; @@ -23,6 +28,15 @@ public abstract class CommandBase implements ICom _aliases = Arrays.asList(aliases); } + public CommandBase(PluginType plugin, Rank requiredRank, Rank[] specificRank, String...aliases) + { + Plugin = plugin; + _requiredRank = requiredRank; + _specificRank = specificRank; + + _aliases = Arrays.asList(aliases); + } + public Collection Aliases() { return _aliases; @@ -38,8 +52,18 @@ public abstract class CommandBase implements ICom return _requiredRank; } + public Rank[] GetSpecificRanks() + { + return _specificRank; + } + public void SetCommandCenter(CommandCenter commandCenter) { CommandCenter = commandCenter; } + + protected void resetCommandCharge(Player caller) + { + Recharge.Instance.recharge(caller, "Command"); + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java b/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java index dd3d19ed6..3713ca453 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java @@ -55,7 +55,7 @@ public class CommandCenter implements Listener ICommand command = Commands.get(commandName.toLowerCase()); - if (command != null && ClientManager.Get(event.getPlayer()).GetRank().Has(event.getPlayer(), command.GetRequiredRank(), true)) + if (command != null && ClientManager.Get(event.getPlayer()).GetRank().Has(event.getPlayer(), command.GetRequiredRank(), command.GetSpecificRanks(), true)) { if (!Recharge.Instance.use(event.getPlayer(), "Command", 500, false, false)) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/command/ICommand.java b/Plugins/Mineplex.Core/src/mineplex/core/command/ICommand.java index 48ebe363e..22c109459 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/command/ICommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/command/ICommand.java @@ -16,4 +16,5 @@ public interface ICommand void SetAliasUsed(String name); Rank GetRequiredRank(); + Rank[] GetSpecificRanks(); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java b/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java index 48736d577..e035964f6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java @@ -17,6 +17,13 @@ public abstract class MultiCommandBase extends Co Commands = new NautHashMap(); } + public MultiCommandBase(PluginType plugin, Rank rank, Rank[] specificRanks, String...aliases) + { + super(plugin, rank, specificRanks, aliases); + + Commands = new NautHashMap(); + } + public void AddCommand(ICommand command) { for (String commandRoot : command.Aliases()) @@ -48,7 +55,7 @@ public abstract class MultiCommandBase extends Co ICommand command = Commands.get(commandName); - if (command != null && CommandCenter.ClientManager.Get(caller).GetRank().Has(caller, command.GetRequiredRank(), true)) + if (command != null && CommandCenter.ClientManager.Get(caller).GetRank().Has(caller, command.GetRequiredRank(), command.GetSpecificRanks(), true)) { command.SetAliasUsed(commandName); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/Donor.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/Donor.java index 6678de58e..50e9954cc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/donation/Donor.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/Donor.java @@ -4,7 +4,9 @@ import java.util.ArrayList; import java.util.List; import mineplex.core.common.CurrencyType; +import mineplex.core.donation.repository.token.CoinTransactionToken; import mineplex.core.donation.repository.token.DonorToken; +import mineplex.core.donation.repository.token.TransactionToken; public class Donor { @@ -13,6 +15,8 @@ public class Donor private boolean _donated; private List _salesPackagesOwned; private List _unknownSalesPackagesOwned; + private List _transactions; + private List _coinTransactions; private boolean _update = true; @@ -24,6 +28,9 @@ public class Donor _salesPackagesOwned = token.SalesPackages; _unknownSalesPackagesOwned = token.UnknownSalesPackages; + _transactions = token.Transactions; + _coinTransactions = token.CoinRewards; + if (_salesPackagesOwned == null) { @@ -34,6 +41,11 @@ public class Donor { _unknownSalesPackagesOwned = new ArrayList(); } + + if (_unknownSalesPackagesOwned == null) + { + _transactions = new ArrayList(); + } } public int GetGems() @@ -117,6 +129,11 @@ public class Donor { _unknownSalesPackagesOwned.add(packageName); } + + public List getTransactions() + { + return _transactions; + } public boolean OwnsUltraPackage() { @@ -138,4 +155,9 @@ public class Donor { _coins += amount; } + + public List getCoinTransactions() + { + return _coinTransactions; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/token/CoinTransactionToken.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/token/CoinTransactionToken.java new file mode 100644 index 000000000..30a1b3b74 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/token/CoinTransactionToken.java @@ -0,0 +1,8 @@ +package mineplex.core.donation.repository.token; + +public class CoinTransactionToken +{ + public long Date; + public String Source; + public int Amount; +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/token/DonorToken.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/token/DonorToken.java index 8eec45471..918d1f18c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/token/DonorToken.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/repository/token/DonorToken.java @@ -9,5 +9,6 @@ public class DonorToken public List SalesPackages; public List UnknownSalesPackages; public List Transactions; + public List CoinRewards; public int Coins; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/event/StackerEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/event/StackerEvent.java new file mode 100644 index 000000000..508c9415a --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/event/StackerEvent.java @@ -0,0 +1,46 @@ +package mineplex.core.event; + + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class StackerEvent extends Event +{ + private static final HandlerList handlers = new HandlerList(); + + private Entity _entity; + + private boolean _cancelled = false; + + public StackerEvent(Entity entity) + { + _entity = entity; + } + + public HandlerList getHandlers() + { + return handlers; + } + + public static HandlerList getHandlerList() + { + return handlers; + } + + public Entity getEntity() + { + return _entity; + } + + public void setCancelled(boolean cancel) + { + _cancelled = cancel; + } + + public boolean isCancelled() + { + return _cancelled; + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 552a04bfd..b89da031b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -29,11 +29,13 @@ import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.gadget.types.MorphGadget; import mineplex.core.gadget.types.MorphGadget.ArmorSlot; +import mineplex.core.gadget.types.MusicGadget; import mineplex.core.gadget.types.ParticleGadget; import mineplex.core.inventory.InventoryManager; import mineplex.core.mount.MountManager; import mineplex.core.pet.PetManager; import mineplex.core.preferences.PreferencesManager; +import mineplex.core.projectile.ProjectileManager; public class GadgetManager extends MiniPlugin { @@ -44,6 +46,7 @@ public class GadgetManager extends MiniPlugin private PreferencesManager _preferencesManager; private DisguiseManager _disguiseManager; private BlockRestore _blockRestore; + private ProjectileManager _projectileManager; private NautHashMap> _gadgets; @@ -55,7 +58,7 @@ public class GadgetManager extends MiniPlugin public GadgetManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, MountManager mountManager, PetManager petManager, PreferencesManager preferencesManager, - DisguiseManager disguiseManager, BlockRestore blockRestore) + DisguiseManager disguiseManager, BlockRestore blockRestore, ProjectileManager projectileManager) { super("Gadget Manager", plugin); @@ -66,6 +69,7 @@ public class GadgetManager extends MiniPlugin _preferencesManager = preferencesManager; _disguiseManager = disguiseManager; _blockRestore = blockRestore; + _projectileManager = projectileManager; CreateGadgets(); } @@ -81,6 +85,8 @@ public class GadgetManager extends MiniPlugin addGadget(new ItemCoinBomb(this)); addGadget(new ItemFirework(this)); addGadget(new ItemTNT(this)); + addGadget(new ItemFleshHook(this)); + addGadget(new ItemMelonLauncher(this)); // Morphs addGadget(new MorphBlaze(this)); @@ -88,7 +94,10 @@ public class GadgetManager extends MiniPlugin addGadget(new MorphCreeper(this)); addGadget(new MorphChicken(this)); addGadget(new MorphPig(this)); - + addGadget(new MorphBat(this)); + addGadget(new MorphBlock(this)); + addGadget(new MorphVillager(this)); + // Particles addGadget(new ParticleGreen(this)); addGadget(new ParticleFoot(this)); @@ -96,6 +105,20 @@ public class GadgetManager extends MiniPlugin addGadget(new ParticleFireRings(this)); addGadget(new ParticleRain(this)); addGadget(new ParticleHelix(this)); + + // Music + addGadget(new MusicGadget(this, "13 Disc", new String[] {""}, 5000, 2256, 178000)); + addGadget(new MusicGadget(this, "Cat Disc", new String[] {""}, 5000, 2257, 185000)); + addGadget(new MusicGadget(this, "Blocks Disc", new String[] {""}, 5000, 2258, 345000)); + addGadget(new MusicGadget(this, "Chirp Disc", new String[] {""}, 5000, 2259, 185000)); + addGadget(new MusicGadget(this, "Far Disc", new String[] {""}, 5000, 2260, 174000)); + addGadget(new MusicGadget(this, "Mall Disc", new String[] {""}, 5000, 2261, 197000)); + addGadget(new MusicGadget(this, "Mellohi Disc", new String[] {""}, 5000, 2262, 96000)); + addGadget(new MusicGadget(this, "Stal Disc", new String[] {""}, 5000, 2263, 150000)); + addGadget(new MusicGadget(this, "Strad Disc", new String[] {""}, 5000, 2264, 188000)); + addGadget(new MusicGadget(this, "Ward Disc", new String[] {""}, 5000, 2265, 251000)); + addGadget(new MusicGadget(this, "11 Disc", new String[] {""}, 5000, 2266, 71000)); + addGadget(new MusicGadget(this, "Wait Disc", new String[] {""}, 5000, 2267, 238000)); } private void addGadget(Gadget gadget) @@ -242,6 +265,11 @@ public class GadgetManager extends MiniPlugin { return _preferencesManager; } + + public ProjectileManager getProjectileManager() + { + return _projectileManager; + } public DisguiseManager getDisguiseManager() { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/BlockForm.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/BlockForm.java new file mode 100644 index 000000000..40c53b9e3 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/BlockForm.java @@ -0,0 +1,246 @@ +package mineplex.core.gadget.gadgets; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.MapUtil; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.disguise.disguises.DisguiseCat; +import mineplex.core.disguise.disguises.DisguiseChicken; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.recharge.Recharge; + +import org.bukkit.Effect; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFallingSand; +import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +public class BlockForm +{ + public MorphBlock Host; + + public Player Player; + + private Material _mat; + + private Block _block; + + private Location _loc; + + public BlockForm(MorphBlock host, Player player, Material mat) + { + Host = host; + Player = player; + + _mat = mat; + _loc = player.getLocation(); + + Apply(); + } + + public void Apply() + { + //Remove Old + if (Player.getPassenger() != null) + { + Recharge.Instance.useForce(Player, "PassengerChange", 100); + + Player.getPassenger().remove(); + Player.eject(); + } + + ((CraftEntity)Player).getHandle().getDataWatcher().watch(0, Byte.valueOf((byte) 32)); + + //Player > Chicken + DisguiseChicken disguise = new DisguiseChicken(Player); + disguise.setBaby(); + disguise.setSoundDisguise(new DisguiseCat(Player)); + Host.Manager.getDisguiseManager().disguise(disguise); + + //Apply Falling Block + FallingBlockCheck(); + + //Inform + String blockName = F.elem(ItemStackFactory.Instance.GetName(_mat, (byte)0, false)); + if (!blockName.contains("Block")) + UtilPlayer.message(Player, F.main("Game", C.cWhite + "You are now a " + F.elem(ItemStackFactory.Instance.GetName(_mat, (byte)0, false) + " Block") + "!")); + else + UtilPlayer.message(Player, F.main("Game", C.cWhite + "You are now a " + F.elem(ItemStackFactory.Instance.GetName(_mat, (byte)0, false)) + "!")); + + //Sound + Player.playSound(Player.getLocation(), Sound.ZOMBIE_UNFECT, 2f, 2f); + } + + public void Remove() + { + SolidifyRemove(); + + Host.Manager.getDisguiseManager().undisguise(Player); + + //Remove FB + if (Player.getPassenger() != null) + { + Recharge.Instance.useForce(Player, "PassengerChange", 100); + + Player.getPassenger().remove(); + Player.eject(); + } + + ((CraftEntity)Player).getHandle().getDataWatcher().watch(0, Byte.valueOf((byte) 0)); + } + + public void SolidifyUpdate() + { + if (!Player.isSprinting()) + ((CraftEntity)Player).getHandle().getDataWatcher().watch(0, Byte.valueOf((byte) 32)); + + //Not a Block + if (_block == null) + { + //Moved + if (!_loc.getBlock().equals(Player.getLocation().getBlock())) + { + Player.setExp(0); + _loc = Player.getLocation(); + } + //Unmoved + else + { + double hideBoost = 0.025; + + Player.setExp((float) Math.min(0.999f, Player.getExp() + hideBoost)); + + //Set Block + if (Player.getExp() >= 0.999f) + { + Block block = Player.getLocation().getBlock(); + + //Not Able + if (block.getType() != Material.AIR || !UtilBlock.solid(block.getRelative(BlockFace.DOWN))) + { + UtilPlayer.message(Player, F.main("Game", "You cannot become a Solid Block here.")); + Player.setExp(0f); + return; + } + + //Set Block + _block = block; + + //Effect + Player.playEffect(Player.getLocation(), Effect.STEP_SOUND, _mat); + //block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, _mat); + + //Display + SolidifyVisual(); + + //Invisible + //Host.Manager.GetCondition().Factory().Cloak("Disguised as Block", Player, Player, 60000, false, false); + + //Sound + Player.playSound(Player.getLocation(), Sound.NOTE_PLING, 1f, 2f); + } + } + } + //Is a Block + else + { + //Moved + if (!_loc.getBlock().equals(Player.getLocation().getBlock())) + { + SolidifyRemove(); + } + //Send Packets + else + { + SolidifyVisual(); + } + } + } + + public void SolidifyRemove() + { + if (_block != null) + { + MapUtil.QuickChangeBlockAt(_block.getLocation(), 0, (byte)0); + _block = null; + } + + Player.setExp(0f); + + //Host.Manager.GetCondition().EndCondition(Player, null, "Disguised as Block"); + + //Inform + Player.playSound(Player.getLocation(), Sound.NOTE_PLING, 1f, 0.5f); + + FallingBlockCheck(); + } + + @SuppressWarnings("deprecation") + public void SolidifyVisual() + { + if (_block == null) + return; + + //Remove Old + if (Player.getPassenger() != null) + { + Recharge.Instance.useForce(Player, "PassengerChange", 100); + + Player.getPassenger().remove(); + Player.eject(); + } + + //Others + for (Player other : UtilServer.getPlayers()) + other.sendBlockChange(Player.getLocation(), _mat, (byte)0); + + //Self + Player.sendBlockChange(Player.getLocation(), 36, (byte)0); + + FallingBlockCheck(); + } + + public void FallingBlockCheck() + { + //Block Form (Hide Falling) + if (_block != null) + return; + + //Recreate Falling + if (Player.getPassenger() == null || !Player.getPassenger().isValid()) + { + if (!Recharge.Instance.use(Player, "PassengerChange", 100, false, false)) + return; + + //Falling Block + FallingBlock block = Player.getWorld().spawnFallingBlock(Player.getEyeLocation(), _mat, (byte)0); + + //No Arrow Collision + ((CraftFallingSand)block).getHandle().spectating = true; + + Player.setPassenger(block); + } + + //Ensure Falling doesnt Despawn + else + { + ((CraftFallingSand)Player.getPassenger()).getHandle().ticksLived = 1; + Player.getPassenger().setTicksLived(1); + } + + } + + public Block GetBlock() + { + return _block; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFleshHook.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFleshHook.java new file mode 100644 index 000000000..77b5a824c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFleshHook.java @@ -0,0 +1,94 @@ +package mineplex.core.gadget.gadgets; + +import org.bukkit.EntityEffect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.entity.Item; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.projectile.IThrown; +import mineplex.core.projectile.ProjectileUser; +import mineplex.core.updater.UpdateType; + +public class ItemFleshHook extends ItemGadget implements IThrown +{ + public ItemFleshHook(GadgetManager manager) + { + super(manager, "Flesh Hook", new String[] + { + C.cWhite + "Make new friends by throwing a hook", + C.cWhite + "into their face and pulling them", + C.cWhite + "towards you!", + }, + -1, + Material.getMaterial(131), (byte)0, + 2000, new Ammo("Flesh Hook", "50 Flesh Hooks", Material.getMaterial(131), (byte)0, new String[] { C.cWhite + "50 Flesh Hooks for you to use!" }, 1000, 50)); + } + + @Override + public void ActivateCustom(Player player) + { + //Action + Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(131)); + UtilAction.velocity(item, player.getLocation().getDirection(), + 1.6, false, 0, 0.2, 10, false); + + Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true, + Sound.FIRE_IGNITE, 1.4f, 0.8f, ParticleType.CRIT, null, 0, UpdateType.TICK, 2d); + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); + + //Effect + item.getWorld().playSound(item.getLocation(), Sound.IRONGOLEM_THROW, 2f, 0.8f); + } + + @Override + public void Collide(LivingEntity target, Block block, ProjectileUser data) + { + data.GetThrown().remove(); + + if (!(data.GetThrower() instanceof Player)) + return; + + Player player = (Player)data.GetThrower(); + + if (target == null) + return; + + //Pull + UtilAction.velocity(target, + UtilAlg.getTrajectory(target.getLocation(), player.getLocation()), + 3, false, 0, 0.8, 1.5, true); + + //Effect + target.playEffect(EntityEffect.HURT); + + //Inform + UtilPlayer.message(target, F.main("Skill", F.name(player.getName()) + " hit you with " + F.skill(GetName()) + ".")); + } + + @Override + public void Idle(ProjectileUser data) + { + data.GetThrown().remove(); + } + + @Override + public void Expire(ProjectileUser data) + { + data.GetThrown().remove(); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemMelonLauncher.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemMelonLauncher.java new file mode 100644 index 000000000..c96088332 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemMelonLauncher.java @@ -0,0 +1,149 @@ +package mineplex.core.gadget.gadgets; + +import java.util.HashSet; +import java.util.Iterator; + +import org.bukkit.Effect; +import org.bukkit.EntityEffect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Item; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.projectile.IThrown; +import mineplex.core.projectile.ProjectileUser; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class ItemMelonLauncher extends ItemGadget implements IThrown +{ + private HashSet _melon = new HashSet(); + + public ItemMelonLauncher(GadgetManager manager) + { + super(manager, "Melon Launcher", new String[] + { + C.cWhite + "Deliciously fun!", + C.cWhite + "Eat the melon slices for a", + C.cWhite + "temporary speed boost!", + }, + -1, + Material.MELON_BLOCK, (byte)0, + 1000, new Ammo("Melon Launcher", "100 Melons", Material.MELON_BLOCK, (byte)0, new String[] { C.cWhite + "100 Melons for you to launch!" }, 500, 100)); + } + + @Override + public void ActivateCustom(Player player) + { + //Action + Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(Material.MELON_BLOCK)); + UtilAction.velocity(item, player.getLocation().getDirection(), + 1, false, 0, 0.2, 10, false); + + Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true, + null, 1f, 1f, null, null, 0, UpdateType.TICK, 2d); + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); + + //Effect + item.getWorld().playSound(item.getLocation(), Sound.EXPLODE, 0.5f, 0.5f); + } + + @Override + public void Collide(LivingEntity target, Block block, ProjectileUser data) + { + if (target != null) + { + //Push + UtilAction.velocity(target, + UtilAlg.getTrajectory2d(data.GetThrown().getLocation(), target.getLocation()), + 1.4, false, 0, 0.8, 1.5, true); + + //Effect + target.playEffect(EntityEffect.HURT); + } + + smash(data.GetThrown()); + } + + @Override + public void Idle(ProjectileUser data) + { + smash(data.GetThrown()); + } + + @Override + public void Expire(ProjectileUser data) + { + smash(data.GetThrown()); + } + + public void smash(Entity ent) + { + //Effect + ent.getWorld().playEffect(ent.getLocation(), Effect.STEP_SOUND, Material.MELON_BLOCK); + + for (int i=0 ; i<10 ; i++) + { + Item item = ent.getWorld().dropItem(ent.getLocation(), ItemStackFactory.Instance.CreateStack(Material.MELON)); + item.setVelocity(new Vector(UtilMath.rr(0.5, true), UtilMath.rr(0.5, false), UtilMath.rr(0.5, true))); + item.setPickupDelay(30); + + _melon.add(item); + } + + //Remove + ent.remove(); + } + + @EventHandler + public void pickupMelon(PlayerPickupItemEvent event) + { + if (!_melon.remove(event.getItem())) + return; + + event.getItem().remove(); + + event.setCancelled(true); + + event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.EAT, 1f, 1f); + + event.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 80, 1), true); + } + + @EventHandler + public void cleanupMelon(UpdateEvent event) + { + if (event.getType() != UpdateType.SLOW) + return; + + for (Iterator melonIterator = _melon.iterator(); melonIterator.hasNext();) + { + Item melon = melonIterator.next(); + + if (melon.isDead() || !melon.isValid() || melon.getTicksLived() > 400) + { + melonIterator.remove(); + melon.remove(); + } + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBat.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBat.java new file mode 100644 index 000000000..aa632df5e --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBat.java @@ -0,0 +1,205 @@ +package mineplex.core.gadget.gadgets; + +import org.bukkit.EntityEffect; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Item; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerToggleFlightEvent; +import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.disguise.disguises.DisguiseBat; +import mineplex.core.projectile.IThrown; +import mineplex.core.projectile.ProjectileUser; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.MorphGadget; +import mineplex.core.itemstack.ItemStackFactory; + +public class MorphBat extends MorphGadget implements IThrown +{ + public MorphBat(GadgetManager manager) + { + super(manager, "Bat Morph", new String[] + { + C.cWhite + "Flap around and annoy people by", + C.cWhite + "screeching loudly into their ears!", + " ", + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Screech", + C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", + C.cYellow + "Tap Sneak" + C.cGray + " to use " + C.cGreen + "Poop", + }, + 40000, + ArmorSlot.Helmet, Material.SKULL_ITEM, (byte)1); + } + + @Override + public void EnableCustom(final Player player) + { + this.ApplyArmor(player); + + DisguiseBat disguise = new DisguiseBat(player); + disguise.SetName(player.getName(), Manager.getClientManager().Get(player).GetRank()); + disguise.SetCustomNameVisible(true); + Manager.getDisguiseManager().disguise(disguise); + } + + @Override + public void DisableCustom(Player player) + { + this.RemoveArmor(player); + Manager.getDisguiseManager().undisguise(player); + + player.setAllowFlight(false); + player.setFlying(false); + } + + @EventHandler + public void Screech(PlayerInteractEvent event) + { + Player player = event.getPlayer(); + + if (!IsActive(player)) + return; + + if (!UtilEvent.isAction(event, ActionType.L)) + return; + + if (!Recharge.Instance.use(player, GetName(), 100, false, false)) + return; + + //Effect + player.getWorld().playSound(player.getLocation(), Sound.BAT_HURT, 1f, 1f); + } + + @EventHandler + public void Poop(PlayerToggleSneakEvent event) + { + Player player = event.getPlayer(); + + if (player.isSneaking()) + return; + + if (player.getGameMode() == GameMode.CREATIVE) + return; + + if (!IsActive(player)) + return; + + if (!Recharge.Instance.use(player, "Poop", 4000, true, false)) + return; + + //Action + Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(Material.MELON_SEEDS)); + UtilAction.velocity(item, player.getLocation().getDirection(), + 0.01, true, -0.3, 0, 10, false); + + Manager.getProjectileManager().AddThrow(item, player, this, -1, true, true, true, + null, 1f, 1f, null, null, 0, UpdateType.TICK, 3d); + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill("Poop") + ".")); + + player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1f, 0.1f); + } + + @Override + public void Collide(LivingEntity target, Block block, ProjectileUser data) + { + if (target != null) + { + //Effect + target.playEffect(EntityEffect.HURT); + + target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 80, 1), true); + + //Inform + UtilPlayer.message(target, F.main("Skill", F.name(UtilEnt.getName(data.GetThrower())) + " hit you with " + F.skill("Bat Poop") + ".")); + + UtilPlayer.message(data.GetThrower(), F.main("Skill", "You hit " + F.name(UtilEnt.getName(target)) + " with " + F.skill("Bat Poop") + ".")); + } + + data.GetThrown().remove(); + } + + @Override + public void Idle(ProjectileUser data) + { + data.GetThrown().remove(); + } + + @Override + public void Expire(ProjectileUser data) + { + data.GetThrown().remove(); + } + + @EventHandler + public void Flap(PlayerToggleFlightEvent event) + { + Player player = event.getPlayer(); + + if (player.getGameMode() == GameMode.CREATIVE) + return; + + if (!IsActive(player)) + return; + + event.setCancelled(true); + player.setFlying(false); + + //Disable Flight + player.setAllowFlight(false); + + //Velocity + UtilAction.velocity(player, player.getLocation().getDirection(), 0.8, false, 0, 0.5, 0.8, true); + + //Sound + player.getWorld().playSound(player.getLocation(), Sound.BAT_TAKEOFF, (float)(0.3 + player.getExp()), (float)(Math.random()/2+0.5)); + + //Set Recharge + Recharge.Instance.use(player, GetName(), 40, false, false); + } + + @EventHandler + public void FlapUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player player : GetActive()) + { + if (player.getGameMode() == GameMode.CREATIVE) + continue; + + if (UtilEnt.isGrounded(player) || UtilBlock.solid(player.getLocation().getBlock().getRelative(BlockFace.DOWN))) + { + player.setAllowFlight(true); + } + else if (Recharge.Instance.usable(player, GetName())) + { + player.setAllowFlight(true); + } + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlock.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlock.java new file mode 100644 index 000000000..37cd056e2 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlock.java @@ -0,0 +1,103 @@ +package mineplex.core.gadget.gadgets; + + +import java.util.HashMap; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.disguise.disguises.DisguiseBlock; +import mineplex.core.event.StackerEvent; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.MorphGadget; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class MorphBlock extends MorphGadget +{ + private HashMap _active = new HashMap(); + + public MorphBlock(GadgetManager manager) + { + super(manager, "Block Morph", new String[] + { + C.cWhite + "The blockiest block that ever blocked.", + " ", + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Change Block", + C.cYellow + "Stay Still" + C.cGray + " to use " + C.cGreen + "Solidify", + }, + 40000, + ArmorSlot.Helmet, Material.EMERALD_BLOCK, (byte)0); + } + + @Override + public void EnableCustom(final Player player) + { + this.ApplyArmor(player); + + _active.put(player, new BlockForm(this, player, Material.EMERALD_BLOCK)); + } + + @Override + public void DisableCustom(Player player) + { + this.RemoveArmor(player); + + + BlockForm form = _active.remove(player); + if (form != null) + { + form.Remove(); + } + } + + @EventHandler + public void formUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (BlockForm form : _active.values()) + { + form.SolidifyUpdate(); + form.FallingBlockCheck(); + } + + } + + @EventHandler + public void stacker(PlayerInteractEvent event) + { + if (event.getClickedBlock() == null) + return; + + if (UtilEvent.isAction(event, ActionType.L_BLOCK) || UtilEvent.isAction(event, ActionType.R_BLOCK)) + return; + + if (!Recharge.Instance.use(event.getPlayer(), GetName(), 500, false, false)) + return; + + BlockForm form = _active.get(event.getPlayer()); + + if (form == null) + return; + + form.Remove(); + + _active.put(event.getPlayer(), new BlockForm(this, event.getPlayer(), event.getClickedBlock().getType())); + } + + @EventHandler + public void stacker(StackerEvent event) + { + if (_active.containsKey(event.getEntity())) + event.setCancelled(true); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphChicken.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphChicken.java index de9fe2b09..b93c759cd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphChicken.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphChicken.java @@ -151,7 +151,6 @@ public class MorphChicken extends MorphGadget { if (event.getDamager() instanceof Egg) { - event.getEntity().playEffect(EntityEffect.HURT); event.getEntity().setVelocity(new Vector(0,0,0)); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java index 60cabaf12..1d48e478a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java @@ -73,7 +73,7 @@ public class MorphPig extends MorphGadget if (!UtilEvent.isAction(event, ActionType.L)) return; - if (!Recharge.Instance.use(player, GetName(), 100, false, false)) + if (!Recharge.Instance.use(player, GetName(), 400, false, false)) return; player.getWorld().playSound(player.getLocation(), Sound.PIG_IDLE, 1f, (float)(0.75 + Math.random() * 0.5)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphVillager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphVillager.java new file mode 100644 index 000000000..19b57e254 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphVillager.java @@ -0,0 +1,68 @@ +package mineplex.core.gadget.gadgets; + +import java.util.HashSet; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.*; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.disguise.disguises.DisguiseVillager; +import mineplex.core.recharge.Recharge; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.MorphGadget; + +public class MorphVillager extends MorphGadget +{ + public MorphVillager(GadgetManager manager) + { + super(manager, "Villager Morph", new String[] + { + C.cWhite + "HURRRR! MURR HURRR!", + " ", + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "HURRR", + }, + 20000, + ArmorSlot.Helmet, Material.EMERALD, (byte)0); + } + + @Override + public void EnableCustom(final Player player) + { + this.ApplyArmor(player); + + DisguiseVillager disguise = new DisguiseVillager(player); + disguise.SetName(player.getName(), Manager.getClientManager().Get(player).GetRank()); + disguise.SetCustomNameVisible(true); + Manager.getDisguiseManager().disguise(disguise); + } + + @Override + public void DisableCustom(Player player) + { + this.RemoveArmor(player); + Manager.getDisguiseManager().undisguise(player); + } + + @EventHandler + public void Audio(PlayerInteractEvent event) + { + Player player = event.getPlayer(); + + if (!IsActive(player)) + return; + + if (!UtilEvent.isAction(event, ActionType.L)) + return; + + if (!Recharge.Instance.use(player, GetName(), 1500, false, false)) + return; + + player.getWorld().playSound(player.getLocation(), Sound.VILLAGER_IDLE, 1f, 1f); + + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/SongData.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/SongData.java new file mode 100644 index 000000000..44017a98a --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/SongData.java @@ -0,0 +1,34 @@ +package mineplex.core.gadget.gadgets; + +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; + +import org.bukkit.Material; +import org.bukkit.block.Block; + +public class SongData +{ + public Block Block; + public long EndTime; + + public SongData(Block block, long duration) + { + Block = block; + EndTime = System.currentTimeMillis() + duration; + + Block.setType(Material.JUKEBOX); + } + + public boolean update() + { + if (System.currentTimeMillis() > EndTime) + { + Block.setType(Material.AIR); + return true; + } + + UtilParticle.PlayParticle(ParticleType.NOTE, Block.getLocation().add(0.5, 1, 0.5), 0.5f, 0.5f, 0.5f, 0f, 2); + + return false; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java index c1a26aaf9..d04ac9293 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java @@ -5,4 +5,5 @@ public enum GadgetType Item, Morph, Particle, + MusicDisc, } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MusicGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MusicGadget.java new file mode 100644 index 000000000..9912e6800 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MusicGadget.java @@ -0,0 +1,85 @@ +package mineplex.core.gadget.types; + +import java.util.ArrayList; +import java.util.Iterator; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.gadgets.SongData; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +public class MusicGadget extends Gadget +{ + private int _id; + private long _duration; + + private ArrayList _songs = new ArrayList(); + + public MusicGadget(GadgetManager manager, String name, String[] desc, int cost, int id, long duration) + { + super(manager, GadgetType.MusicDisc, name, desc, cost, Material.getMaterial(id), (byte)0); + + _id = id; + _duration = duration; + } + + @Override + public void Enable(Player player) + { + GadgetActivateEvent gadgetEvent = new GadgetActivateEvent(player, this); + Bukkit.getServer().getPluginManager().callEvent(gadgetEvent); + + if (gadgetEvent.isCancelled()) + { + UtilPlayer.message(player, F.main("Inventory", "You cannot use Inventory Items.")); + return; + } + + if (!Recharge.Instance.use(player, "Play Disc", _duration, true, false)) + return; + + player.getWorld().playEffect(player.getLocation(), Effect.RECORD_PLAY, _id); + + _songs.add(new SongData(player.getLocation().getBlock(), _duration)); + } + + @Override + public void EnableCustom(Player player) + { + + } + + @Override + public void DisableCustom(Player player) + { + + } + + @EventHandler + public void Update(UpdateEvent event) + { + if (event.getType() != UpdateType.FASTER) + return; + + Iterator songIterator = _songs.iterator(); + + while (songIterator.hasNext()) + { + SongData song = songIterator.next(); + + if (song.update()) + songIterator.remove(); + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java index baee2cb42..09d37e81b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java @@ -63,16 +63,19 @@ public class InventoryManager extends MiniClientPlugin } } } - - public void addItemToInventory(final Player player, final String category, final String item, final int count) + + public void addItemToInventory(Player player, String category, String item, int count) { - final String uuidString = player.getUniqueId().toString(); - if (_items.containsKey(item)) { Get(player).addItem(new ClientItem(_items.get(item), count)); } + + addItemToInventoryForOffline(player.getUniqueId().toString(), category, item, count); + } + public void addItemToInventoryForOffline(final String uuidString, final String category, final String item, final int count) + { Bukkit.getServer().getScheduler().runTaskAsynchronously(GetPlugin(), new Runnable() { public void run() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/DragonMount.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/DragonMount.java index 809e61ba9..cfd8ac308 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/DragonMount.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/DragonMount.java @@ -13,8 +13,6 @@ public class DragonMount extends Mount super (manager, name, displayMaterial, displayData, desc, cost); KnownPackage = false; - - Manager.GetPlugin().getServer().getPluginManager().registerEvents(this, Manager.GetPlugin()); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/HorseMount.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/HorseMount.java index 30f592634..d23c8f393 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/HorseMount.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/HorseMount.java @@ -24,11 +24,11 @@ import org.bukkit.inventory.ItemStack; public class HorseMount extends Mount { - private Color _color; - private Style _style; - private Variant _variant; - private double _jump; - private Material _armor; + protected Color _color; + protected Style _style; + protected Variant _variant; + protected double _jump; + protected Material _armor; public HorseMount(MountManager manager, String name, String[] desc, Material displayMaterial, byte displayData, int cost, Color color, Style style, Variant variant, double jump, Material armor) { @@ -40,8 +40,6 @@ public class HorseMount extends Mount _variant = variant; _jump = jump; _armor = armor; - - Manager.GetPlugin().getServer().getPluginManager().registerEvents(this, Manager.GetPlugin()); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/Mount.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/Mount.java index 7a8b7b468..cdc1761c8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/Mount.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/Mount.java @@ -30,6 +30,8 @@ public abstract class Mount extends SalesPackageBase implements Listener super(name, material, displayData, description, coins); Manager = manager; + + Manager.GetPlugin().getServer().getPluginManager().registerEvents(this, Manager.GetPlugin()); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java index d201b3e2d..80e90982a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java @@ -19,6 +19,7 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; import mineplex.core.mount.types.*; @@ -27,17 +28,19 @@ public class MountManager extends MiniPlugin private CoreClientManager _clientManager; private DonationManager _donationManager; private BlockRestore _blockRestore; + private DisguiseManager _disguiseManager; private List> _types; private NautHashMap> _playerActiveMountMap = new NautHashMap>(); - public MountManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, BlockRestore blockRestore) + public MountManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, BlockRestore blockRestore, DisguiseManager disguiseManager) { super("Mount Manager", plugin); _clientManager = clientManager; _donationManager = donationManager; _blockRestore = blockRestore; + _disguiseManager = disguiseManager; CreateGadgets(); } @@ -46,10 +49,13 @@ public class MountManager extends MiniPlugin { _types = new ArrayList>(); - _types.add(new Undead(this)); - _types.add(new Frost(this)); - _types.add(new Mule(this)); - _types.add(new Dragon(this)); + _types.add(new MountUndead(this)); + _types.add(new MountFrost(this)); + _types.add(new MountMule(this)); + _types.add(new MountDragon(this)); + _types.add(new MountSlime(this)); + _types.add(new MountCart(this)); + _types.add(new MountSheep(this)); } public List> getMounts() @@ -136,4 +142,9 @@ public class MountManager extends MiniPlugin { return _blockRestore; } + + public DisguiseManager getDisguiseManager() + { + return _disguiseManager; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java new file mode 100644 index 000000000..1892b4cc9 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java @@ -0,0 +1,173 @@ +package mineplex.core.mount.types; + +import org.bukkit.ChatColor; +import org.bukkit.EntityEffect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Minecart; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.mount.Mount; +import mineplex.core.mount.MountManager; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class MountCart extends Mount +{ + public MountCart(MountManager manager) + { + super(manager, "Minecart", Material.MINECART, (byte)0, new String[] + { + ChatColor.RESET + "Cruise around town in your", + ChatColor.RESET + "new Minecart VX Turbo!", + }, + 15000); + + KnownPackage = false; + } + + public void EnableCustom(Player player) + { + player.leaveVehicle(); + player.eject(); + + //Remove other mounts + Manager.DeregisterAll(player); + + Minecart mount = player.getWorld().spawn(player.getLocation().add(0, 2, 0), Minecart.class); + + //Inform + UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + ".")); + + //Store + _active.put(player, mount); + } + + public void Disable(Player player) + { + Minecart mount = _active.remove(player); + if (mount != null) + { + mount.remove(); + + //Inform + UtilPlayer.message(player, F.main("Mount", "You despawned " + F.elem(GetName()) + ".")); + + Manager.removeActive(player); + } + } + + @EventHandler + public void interactMount(PlayerInteractEntityEvent event) + { + if (event.getRightClicked() == null) + return; + + if (!GetActive().containsKey(event.getPlayer())) + return; + + if (!GetActive().get(event.getPlayer()).equals(event.getRightClicked())) + { + UtilPlayer.message(event.getPlayer(), F.main("Mount", "This is not your Mount!")); + return; + } + + event.getPlayer().leaveVehicle(); + event.getPlayer().eject(); + + event.getRightClicked().setPassenger(event.getPlayer()); + } + + @EventHandler + public void target(EntityTargetEvent event) + { + if (!GetActive().containsKey(event.getTarget())) + return; + + if (!GetActive().get(event.getTarget()).equals(event.getEntity())) + event.setCancelled(true); + } + + @EventHandler + public void updateBounce(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + //Bounce + for (Minecart cart : GetActive().values()) + { + if (cart.getPassenger() == null) + continue; + + if (!UtilEnt.isGrounded(cart)) + continue; + + if (!(cart.getPassenger() instanceof Player)) + continue; + + UtilAction.velocity(cart, cart.getPassenger().getLocation().getDirection(), 1.4, true, 0, 0, 1, false); + + if (Math.random() > 0.8) + cart.getWorld().playSound(cart.getLocation(), Sound.MINECART_BASE, 0.05f, 2f); + } + + //Collide + for (Minecart cart : GetActive().values()) + { + if (cart.getPassenger() == null) + continue; + + if (!(cart.getPassenger() instanceof Player)) + continue; + + Player player = (Player)cart.getPassenger(); + + if (!Recharge.Instance.usable(player, GetName() + " Collide")) + continue; + + for (Minecart other : GetActive().values()) + { + if (other.equals(cart)) + continue; + + if (other.getPassenger() == null) + continue; + + if (!(other.getPassenger() instanceof Player)) + continue; + + Player otherPlayer = (Player)other.getPassenger(); + + if (!Recharge.Instance.usable(otherPlayer, GetName() + " Collide")) + continue; + + //Collide + if (UtilMath.offset(cart, other) > 2) + continue; + + Recharge.Instance.useForce(player, GetName() + " Collide", 500); + Recharge.Instance.useForce(otherPlayer, GetName() + " Collide", 500); + + UtilAction.velocity(cart, UtilAlg.getTrajectory(other, cart), 1.2, false, 0, 0.8, 10, true); + UtilAction.velocity(other, UtilAlg.getTrajectory(cart, other), 1.2, false, 0, 0.8, 10, true); + + cart.getWorld().playSound(cart.getLocation(), Sound.IRONGOLEM_HIT, 1f, 0.5f); + other.getWorld().playSound(other.getLocation(), Sound.IRONGOLEM_HIT, 1f, 0.5f); + + //player.playEffect(EntityEffect.HURT); + //otherPlayer.playEffect(EntityEffect.HURT); + } + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Dragon.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/mount/types/Dragon.java rename to Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java index ac66521c5..67d89abed 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Dragon.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java @@ -19,9 +19,9 @@ import mineplex.core.mount.MountManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -public class Dragon extends DragonMount +public class MountDragon extends DragonMount { - public Dragon(MountManager manager) + public MountDragon(MountManager manager) { super(manager, "Ethereal Dragon", new String[] { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Frost.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java similarity index 96% rename from Plugins/Mineplex.Core/src/mineplex/core/mount/types/Frost.java rename to Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java index e205f6884..b02a30198 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Frost.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java @@ -21,9 +21,9 @@ import mineplex.core.mount.MountManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -public class Frost extends HorseMount +public class MountFrost extends HorseMount { - public Frost(MountManager manager) + public MountFrost(MountManager manager) { super(manager, "Glacial Steed", new String[] { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Mule.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java similarity index 85% rename from Plugins/Mineplex.Core/src/mineplex/core/mount/types/Mule.java rename to Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java index ce9a4de3f..be87f0fd1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Mule.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java @@ -9,9 +9,9 @@ import org.bukkit.entity.Horse.Variant; import mineplex.core.mount.HorseMount; import mineplex.core.mount.MountManager; -public class Mule extends HorseMount +public class MountMule extends HorseMount { - public Mule(MountManager manager) + public MountMule(MountManager manager) { super(manager, "Mount Mule", new String[] { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java new file mode 100644 index 000000000..540d31007 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java @@ -0,0 +1,69 @@ +package mineplex.core.mount.types; + +import org.bukkit.ChatColor; +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.entity.Horse; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Player; +import org.bukkit.entity.Horse.Style; +import org.bukkit.entity.Horse.Variant; +import org.bukkit.inventory.ItemStack; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.disguise.disguises.DisguisePig; +import mineplex.core.disguise.disguises.DisguiseSheep; +import mineplex.core.mount.HorseMount; +import mineplex.core.mount.MountManager; + +public class MountSheep extends HorseMount +{ + public MountSheep(MountManager manager) + { + super(manager, "Techno Sheep", new String[] + { + ChatColor.RESET + "Muley muley!" + }, + Material.WOOL, + (byte)14, + 3000, + Color.BLACK, Style.BLACK_DOTS, Variant.MULE, 1.0, null); + } + + @Override + public void EnableCustom(Player player) + { + player.leaveVehicle(); + player.eject(); + + //Remove other mounts + Manager.DeregisterAll(player); + + Horse horse = player.getWorld().spawn(player.getLocation(), Horse.class); + + /*horse.setAdult(); + horse.setAgeLock(true); + horse.setColor(_color); + horse.setStyle(_style); + horse.setVariant(_variant); + */ + horse.setOwner(player); + horse.setMaxDomestication(1); + //horse.setJumpStrength(_jump); + + horse.getInventory().setSaddle(new ItemStack(Material.SADDLE)); + + DisguiseSheep disguise = new DisguiseSheep(horse); + disguise.SetName(player.getName(), Manager.getClientManager().Get(player).GetRank()); + disguise.SetCustomNameVisible(true); + disguise.setColor(DyeColor.getByColor(org.bukkit.Color.fromRGB(100, 0, 200))); + Manager.getDisguiseManager().disguise(disguise); + + //Inform + UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + ".")); + + //Store + _active.put(player, horse); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java new file mode 100644 index 000000000..5bf9b6da2 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java @@ -0,0 +1,184 @@ +package mineplex.core.mount.types; + +import org.bukkit.ChatColor; +import org.bukkit.EntityEffect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.entity.Slime; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.mount.Mount; +import mineplex.core.mount.MountManager; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class MountSlime extends Mount +{ + public MountSlime(MountManager manager) + { + super(manager, "Slime Mount", Material.SLIME_BALL, (byte)0, new String[] + { + ChatColor.RESET + "Bounce around on your very", + ChatColor.RESET + "own personal slime friend!", + }, + 15000); + + KnownPackage = false; + } + + public void EnableCustom(Player player) + { + player.leaveVehicle(); + player.eject(); + + //Remove other mounts + Manager.DeregisterAll(player); + + Slime mount = player.getWorld().spawn(player.getLocation(), Slime.class); + mount.setSize(2); + + mount.setCustomName(player.getName() + "'s " + GetName()); + mount.setCustomNameVisible(true); + + //Inform + UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + ".")); + + //Store + _active.put(player, mount); + } + + public void Disable(Player player) + { + Slime mount = _active.remove(player); + if (mount != null) + { + mount.remove(); + + //Inform + UtilPlayer.message(player, F.main("Mount", "You despawned " + F.elem(GetName()) + ".")); + + Manager.removeActive(player); + } + } + + @EventHandler + public void interactMount(PlayerInteractEntityEvent event) + { + if (event.getRightClicked() == null) + return; + + if (!GetActive().containsKey(event.getPlayer())) + return; + + if (!GetActive().get(event.getPlayer()).equals(event.getRightClicked())) + { + UtilPlayer.message(event.getPlayer(), F.main("Mount", "This is not your Mount!")); + return; + } + + event.getPlayer().leaveVehicle(); + event.getPlayer().eject(); + + event.getRightClicked().setPassenger(event.getPlayer()); + } + + @EventHandler + public void target(EntityTargetEvent event) + { + if (!GetActive().containsKey(event.getTarget())) + return; + + if (!GetActive().get(event.getTarget()).equals(event.getEntity())) + event.setCancelled(true); + } + + @EventHandler + public void updateBounce(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + //Bounce + for (Slime slime : GetActive().values()) + { + if (slime.getPassenger() == null) + continue; + + if (!UtilEnt.isGrounded(slime)) + continue; + + if (!(slime.getPassenger() instanceof Player)) + continue; + + Player player = (Player)slime.getPassenger(); + + if (!Recharge.Instance.use(player, GetName(), 200, false, false)) + continue; + + UtilAction.velocity(slime, slime.getPassenger().getLocation().getDirection(), 1, true, 0, 0.4, 1, true); + + slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_WALK, 1f, 0.75f); + } + + //Collide + for (Slime slime : GetActive().values()) + { + if (slime.getPassenger() == null) + continue; + + if (!(slime.getPassenger() instanceof Player)) + continue; + + Player player = (Player)slime.getPassenger(); + + if (!Recharge.Instance.usable(player, GetName() + " Collide")) + continue; + + for (Slime other : GetActive().values()) + { + if (other.equals(slime)) + continue; + + if (other.getPassenger() == null) + continue; + + if (!(other.getPassenger() instanceof Player)) + continue; + + Player otherPlayer = (Player)other.getPassenger(); + + if (!Recharge.Instance.usable(otherPlayer, GetName() + " Collide")) + continue; + + //Collide + if (UtilMath.offset(slime, other) > 2) + continue; + + Recharge.Instance.useForce(player, GetName() + " Collide", 500); + Recharge.Instance.useForce(otherPlayer, GetName() + " Collide", 500); + + UtilAction.velocity(slime, UtilAlg.getTrajectory(other, slime), 1.2, false, 0, 0.8, 10, true); + UtilAction.velocity(other, UtilAlg.getTrajectory(slime, other), 1.2, false, 0, 0.8, 10, true); + + slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_ATTACK, 1f, 0.5f); + slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_WALK, 1f, 0.5f); + other.getWorld().playSound(other.getLocation(), Sound.SLIME_WALK, 1f, 0.5f); + + slime.playEffect(EntityEffect.HURT); + other.playEffect(EntityEffect.HURT); + } + } + } + + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Undead.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java similarity index 94% rename from Plugins/Mineplex.Core/src/mineplex/core/mount/types/Undead.java rename to Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java index 184ab664d..50601382c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/Undead.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java @@ -17,9 +17,9 @@ import mineplex.core.mount.MountManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -public class Undead extends HorseMount +public class MountUndead extends HorseMount { - public Undead(MountManager manager) + public MountUndead(MountManager manager) { super(manager, "Infernal Horror", new String[] { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java index d9f85c289..2f3069d40 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java @@ -9,6 +9,7 @@ import mineplex.core.antistack.AntiStack; import mineplex.core.blockrestore.BlockRestore; import mineplex.core.chat.Chat; import mineplex.core.command.CommandCenter; +import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.core.creature.Creature; import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; @@ -48,7 +49,6 @@ import mineplex.minecraft.game.classcombat.shop.ClassCombatShop; import mineplex.minecraft.game.classcombat.shop.ClassShopManager; import mineplex.minecraft.game.core.IRelation; import mineplex.minecraft.game.core.combat.CombatManager; -import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.minecraft.game.core.damage.DamageManager; import mineplex.minecraft.game.core.fire.Fire; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 26a49e152..d29e82c32 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -52,6 +52,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilWorld; +import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.disguise.DisguiseManager; import mineplex.core.disguise.disguises.DisguisePlayer; @@ -66,6 +67,7 @@ import mineplex.core.mount.MountManager; import mineplex.core.pet.PetManager; import mineplex.core.portal.Portal; import mineplex.core.preferences.PreferencesManager; +import mineplex.core.projectile.ProjectileManager; import mineplex.core.stats.StatsManager; import mineplex.core.task.TaskManager; import mineplex.core.updater.UpdateType; @@ -86,7 +88,6 @@ import mineplex.hub.poll.PollManager; import mineplex.hub.tutorial.TutorialManager; import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent; -import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.minecraft.game.core.damage.CustomDamageEvent; public class HubManager extends MiniClientPlugin @@ -152,9 +153,9 @@ public class HubManager extends MiniClientPlugin _news = new NewsManager(this); - _mountManager = new MountManager(_plugin, clientManager, donationManager, blockRestore); + _mountManager = new MountManager(_plugin, clientManager, donationManager, blockRestore, _disguiseManager); _inventoryManager = new InventoryManager(plugin); - _gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore); + _gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore, new ProjectileManager(plugin)); new CosmeticManager(_plugin, clientManager, donationManager, _inventoryManager, _gadgetManager, _mountManager, petManager); _partyManager = partyManager; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/AdminMountManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/AdminMountManager.java index 5b7ef1b65..0cac2bf42 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/AdminMountManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/AdminMountManager.java @@ -40,7 +40,7 @@ public class AdminMountManager extends MiniPlugin public void AddCommands() { AddCommand(new HorseSpawn(this)); - } + } @EventHandler public void HorseInteract(PlayerInteractEntityEvent event) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java index 2c8a65ef9..8a217b4fa 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java @@ -16,6 +16,7 @@ import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.disguises.DisguiseBase; +import mineplex.core.disguise.disguises.DisguiseBat; import mineplex.core.disguise.disguises.DisguiseChicken; import mineplex.core.disguise.disguises.DisguiseCreeper; import mineplex.core.updater.UpdateType; @@ -43,7 +44,7 @@ public class JumpManager extends MiniPlugin //Chicken Cancel DisguiseBase disguise = Manager.GetDisguise().getDisguise(player); - if (disguise != null && disguise instanceof DisguiseChicken) + if (disguise != null && (disguise instanceof DisguiseChicken || disguise instanceof DisguiseBat)) return; event.setCancelled(true); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java index c0cbf673c..b7488de85 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java @@ -18,7 +18,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.mount.Mount; -import mineplex.core.mount.types.Dragon; +import mineplex.core.mount.types.MountDragon; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.HubManager; @@ -253,10 +253,10 @@ public class NewsManager extends MiniPlugin for (Mount mount : Manager.GetMount().getMounts()) { - if (mount instanceof Dragon) + if (mount instanceof MountDragon) { - ((Dragon)mount).SetName(text); - ((Dragon)mount).setHealthPercent(healthPercent); + ((MountDragon)mount).SetName(text); + ((MountDragon)mount).setHealthPercent(healthPercent); } } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java index 0fe0c7daf..12e8b0d39 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java @@ -89,6 +89,7 @@ public class ParkourManager extends MiniPlugin }, 4000, new Location(Manager.GetSpawn().getWorld(), -93,67,38), new Location(Manager.GetSpawn().getWorld(), -86,100,42), new Location(Manager.GetSpawn().getWorld(), -120,50,-17))); + /* _parkour.add(new ParkourSnake("Snake Parkour", new String[] { "This parkour requires incredible timing", @@ -96,7 +97,7 @@ public class ParkourManager extends MiniPlugin "by the devil as a cruel joke!" }, 8000, new Location(Manager.GetSpawn().getWorld(), 22,70,-54), new Location(Manager.GetSpawn().getWorld(), 28,-50,-88), new Location(Manager.GetSpawn().getWorld(), -24,90,-46))); - +*/ _lavaParkourReturn = new Location(Manager.GetSpawn().getWorld(), -89.5,68,36.5); _lavaParkourReturn.setYaw(90); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java index 752bb23a8..65386a2f2 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java @@ -33,7 +33,9 @@ import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.event.StackerEvent; import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.mount.event.MountActivateEvent; import mineplex.core.projectile.IThrown; import mineplex.core.projectile.ProjectileManager; import mineplex.core.projectile.ProjectileUser; @@ -70,6 +72,11 @@ public class StackerManager extends MiniPlugin implements IThrown if (UtilGear.isMat(stacker.getItemInHand(), Material.SNOW_BALL)) return; + + StackerEvent stackerEvent = new StackerEvent(stacker); + Bukkit.getServer().getPluginManager().callEvent(stackerEvent); + if (stackerEvent.isCancelled()) + return; //Parkour Disable if (Manager.GetParkour().InsideParkour(stacker.getLocation())) @@ -105,6 +112,11 @@ public class StackerManager extends MiniPlugin implements IThrown if (stackee instanceof Player && ((Player)stackee).getGameMode() != GameMode.SURVIVAL) return; + + stackerEvent = new StackerEvent(stackee); + Bukkit.getServer().getPluginManager().callEvent(stackerEvent); + if (stackerEvent.isCancelled()) + return; if (stackee instanceof Player && !Manager.CanBump(((Player)stackee))) { @@ -161,6 +173,11 @@ public class StackerManager extends MiniPlugin implements IThrown Entity throwee = thrower.getPassenger(); if (throwee == null) return; + + StackerEvent stackerEvent = new StackerEvent(thrower); + Bukkit.getServer().getPluginManager().callEvent(stackerEvent); + if (stackerEvent.isCancelled()) + return; thrower.eject(); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java index ab65b9e03..8f7999986 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java @@ -69,7 +69,7 @@ public class WorldManager extends MiniPlugin Manager = manager; } - @EventHandler + //@EventHandler public void SpawnAnimals(UpdateEvent event) { if (event.getType() != UpdateType.SLOW) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/parkour/ParkourSnake.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/parkour/ParkourSnake.java index ad95bebd5..a2622f71e 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/parkour/ParkourSnake.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/parkour/ParkourSnake.java @@ -56,8 +56,6 @@ public class ParkourSnake extends ParkourData { e.printStackTrace(); } - - System.out.println("Done"); } public SnakePart loadSnake(String locString) @@ -207,6 +205,9 @@ public class ParkourSnake extends ParkourData public void Update() { + if (_snakes == null) + return; + for (SnakePart snake : _snakes) snake.Update(); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java index 96b6d9b49..70e090b22 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java @@ -62,7 +62,7 @@ import mineplex.serverdata.MinecraftServer; public class ServerManager extends MiniPlugin { - private static final Long FREE_PORTAL_TIMER = 1000L; + private static final Long FREE_PORTAL_TIMER = 30000L; private CoreClientManager _clientManager; private DonationManager _donationManager; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Condition/SkillConditionEffect.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Condition/SkillConditionEffect.java index 12c4e566e..732ffb15a 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Condition/SkillConditionEffect.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Condition/SkillConditionEffect.java @@ -3,9 +3,9 @@ package mineplex.minecraft.game.classcombat.Condition; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; import mineplex.minecraft.game.core.condition.ConditionEffect; import mineplex.minecraft.game.core.condition.ConditionManager; +import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; public class SkillConditionEffect extends ConditionEffect { diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/SmokeBomb.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/SmokeBomb.java index e842bd876..e4d69e354 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/SmokeBomb.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/SmokeBomb.java @@ -1,8 +1,6 @@ package mineplex.minecraft.game.classcombat.Skill.Assassin; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; -import mineplex.minecraft.game.core.condition.Condition; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.core.common.util.F; import mineplex.core.recharge.Recharge; @@ -12,6 +10,8 @@ import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilPlayer; +import mineplex.minecraft.game.core.condition.Condition; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Stealth.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Stealth.java index e4cc4ba99..5a9b18d17 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Stealth.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Assassin/Stealth.java @@ -12,7 +12,6 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.potion.PotionEffectType; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.core.common.util.F; import mineplex.core.updater.event.UpdateEvent; @@ -24,6 +23,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Global/Resistance.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Global/Resistance.java index 3f7f59759..aa4cf0b91 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Global/Resistance.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Global/Resistance.java @@ -3,11 +3,11 @@ package mineplex.minecraft.game.classcombat.Skill.Global; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; +import mineplex.minecraft.game.core.condition.events.ConditionApplyEvent; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; -import mineplex.minecraft.game.core.condition.events.ConditionApplyEvent; public class Resistance extends Skill { diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/BullsCharge.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/BullsCharge.java index c1d275013..49ab2f0bd 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/BullsCharge.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/BullsCharge.java @@ -13,13 +13,13 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.potion.PotionEffectType; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.classcombat.Skill.SkillActive; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/HoldPosition.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/HoldPosition.java index 39e7df3d6..65e04e0a0 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/HoldPosition.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/HoldPosition.java @@ -11,13 +11,13 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; -import mineplex.minecraft.game.core.condition.Condition; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.minecraft.game.core.condition.Condition; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.classcombat.Skill.SkillActive; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/ArcticArmor.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/ArcticArmor.java index 912733e1f..d8bbbea36 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/ArcticArmor.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/ArcticArmor.java @@ -22,10 +22,10 @@ import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; public class ArcticArmor extends Skill { diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/MagmaBlade.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/MagmaBlade.java index c56a1bade..4ad21a66b 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/MagmaBlade.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/MagmaBlade.java @@ -7,8 +7,8 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import mineplex.core.common.util.UtilGear; -import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; import mineplex.minecraft.game.core.condition.Condition.ConditionType; +import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Agility.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Agility.java index b2b72d6ca..a3282f442 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Agility.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Agility.java @@ -12,11 +12,8 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.potion.PotionEffectType; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; -import mineplex.minecraft.game.core.condition.Condition; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilParticle; import mineplex.core.updater.event.UpdateEvent; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/RopedArrow.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/RopedArrow.java index c18f42870..524aca959 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/RopedArrow.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/RopedArrow.java @@ -112,11 +112,11 @@ public class RopedArrow extends SkillActive int level = getLevel(((Player)proj.getShooter())); if (level == 0) return; - Vector vec = UtilAlg.getTrajectory(proj.getShooter(), proj); + Vector vec = UtilAlg.getTrajectory((Entity)proj.getShooter(), proj); double mult = (proj.getVelocity().length() / 3d); //Action - UtilAction.velocity(proj.getShooter(), vec, + UtilAction.velocity((Entity)proj.getShooter(), vec, 0.4 + mult, false, 0, 0.3 * mult, 1.2 * mult, true); //Effect diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Shadowmeld.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Shadowmeld.java index 34002b406..b64c83e5b 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Shadowmeld.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Shadowmeld.java @@ -6,10 +6,10 @@ import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.UpdateType; import mineplex.core.common.util.UtilMath; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.classcombat.Skill.SkillCharge; import mineplex.minecraft.game.classcombat.Skill.SkillChargeSword; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import org.bukkit.entity.Arrow; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Sharpshooter.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Sharpshooter.java index 773a005a8..8dc0e0037 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Sharpshooter.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/Sharpshooter.java @@ -83,7 +83,7 @@ public class Sharpshooter extends Skill _hitCount.put(player, limit); //Inform - UtilPlayer.message(projectile.getShooter(), F.main(GetClassType().name(), GetName() + ": " + + UtilPlayer.message((Entity)projectile.getShooter(), F.main(GetClassType().name(), GetName() + ": " + F.elem(_hitCount.get(player) + " Consecutive Hits") + C.cGray + " (" + F.skill("+"+ (limit * 2) + "Damage" ) + C.cGray + ")" ) ); } else diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/WolfsFury.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/WolfsFury.java index 8d99bd66a..60f0efaf5 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/WolfsFury.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Ranger/WolfsFury.java @@ -14,7 +14,6 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerInteractEvent; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilGear; @@ -25,6 +24,7 @@ import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilPlayer; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.classcombat.Skill.SkillActive; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java index 1376af489..aeeb9220c 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java @@ -8,6 +8,7 @@ import java.util.List; import mineplex.core.MiniPlugin; import mineplex.core.blockrestore.BlockRestore; +import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.core.donation.repository.GameSalesPackageToken; import mineplex.core.energy.Energy; import mineplex.core.movement.Movement; @@ -27,7 +28,6 @@ import mineplex.minecraft.game.classcombat.Skill.repository.SkillRepository; import mineplex.minecraft.game.classcombat.Skill.repository.token.SkillToken; import mineplex.minecraft.game.core.IRelation; import mineplex.minecraft.game.core.combat.CombatManager; -import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.minecraft.game.core.damage.DamageManager; import mineplex.minecraft.game.core.fire.Fire; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/Consume/Soup.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/Consume/Soup.java index 8ae5341e3..e24518afe 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/Consume/Soup.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/Consume/Soup.java @@ -10,10 +10,10 @@ import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.core.projectile.ProjectileUser; import mineplex.minecraft.game.classcombat.item.ItemFactory; import mineplex.minecraft.game.classcombat.item.ItemUsable; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; public class Soup extends ItemUsable { diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/ItemFactory.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/ItemFactory.java index fd8b6c3ec..405d7865e 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/ItemFactory.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/item/ItemFactory.java @@ -7,6 +7,7 @@ import java.util.HashSet; import mineplex.core.MiniPlugin; import mineplex.core.blockrestore.BlockRestore; import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.core.energy.Energy; import mineplex.minecraft.game.core.fire.Fire; import mineplex.core.projectile.ProjectileManager; @@ -14,7 +15,6 @@ import mineplex.minecraft.game.classcombat.Class.ClassManager; import mineplex.minecraft.game.classcombat.item.Consume.*; import mineplex.minecraft.game.classcombat.item.Throwable.*; import mineplex.minecraft.game.classcombat.item.weapon.*; -import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.minecraft.game.core.damage.DamageManager; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/salespackage/ItemSalesPackage.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/salespackage/ItemSalesPackage.java index 842a49b90..625920e4b 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/salespackage/ItemSalesPackage.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/salespackage/ItemSalesPackage.java @@ -14,6 +14,7 @@ public class ItemSalesPackage extends SalesPackageBase super("Champions " + item.GetName(), Material.BOOK, (byte)0, item.GetDesc(), item.GetGemCost()); Free = item.isFree(); KnownPackage = false; + CurrencyCostMap.put(CurrencyType.Gems, item.GetGemCost()); } @Override diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java index e5563162e..8f3635ed0 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java @@ -9,8 +9,8 @@ import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.UpdateType; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.condition.ConditionManager; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.DamageManager; import org.bukkit.Effect; diff --git a/Plugins/Mineplex.StaffServer/.externalToolBuilders/StaffBuilder.launch b/Plugins/Mineplex.StaffServer/.externalToolBuilders/StaffBuilder.launch new file mode 100644 index 000000000..6eb51c35e --- /dev/null +++ b/Plugins/Mineplex.StaffServer/.externalToolBuilders/StaffBuilder.launch @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/Plugins/Mineplex.StaffServer/.project b/Plugins/Mineplex.StaffServer/.project index 89a8d6d8e..055073ad3 100644 --- a/Plugins/Mineplex.StaffServer/.project +++ b/Plugins/Mineplex.StaffServer/.project @@ -10,6 +10,16 @@ + + org.eclipse.ui.externaltools.ExternalToolBuilder + auto,full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/StaffBuilder.launch + + + org.eclipse.jdt.core.javanature diff --git a/Plugins/Mineplex.StaffServer/plugin.yml b/Plugins/Mineplex.StaffServer/plugin.yml new file mode 100644 index 000000000..24ee14bdd --- /dev/null +++ b/Plugins/Mineplex.StaffServer/plugin.yml @@ -0,0 +1,3 @@ +name: StaffServer +main: mineplex.staffServer.StaffServer +version: 0.1 \ No newline at end of file diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java index 699afe207..b222e543c 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/StaffServer.java @@ -3,14 +3,21 @@ package mineplex.staffServer; import mineplex.core.account.CoreClientManager; import mineplex.core.chat.Chat; import mineplex.core.command.CommandCenter; +import mineplex.core.creature.Creature; import mineplex.core.donation.DonationManager; +import mineplex.core.inventory.InventoryManager; import mineplex.core.memory.MemoryFix; import mineplex.core.monitor.LagMeter; +import mineplex.core.npc.NpcManager; import mineplex.core.playerTracker.PlayerTracker; import mineplex.core.portal.Portal; import mineplex.core.preferences.PreferencesManager; +import mineplex.core.recharge.Recharge; import mineplex.core.status.ServerStatusManager; import mineplex.core.updater.FileUpdater; +import mineplex.staffServer.customerSupport.CustomerSupport; +import mineplex.staffServer.password.Password; +import mineplex.staffServer.salespackage.SalesPackageManager; import org.bukkit.plugin.java.JavaPlugin; @@ -31,9 +38,11 @@ public class StaffServer extends JavaPlugin CommandCenter.Initialize(this); CoreClientManager clientManager = new CoreClientManager(this, webServerAddress); CommandCenter.Instance.setClientManager(clientManager); + Recharge.Initialize(this); DonationManager donationManager = new DonationManager(this, webServerAddress); + new NpcManager(this, new Creature(this)); ServerStatusManager serverStatusManager = new ServerStatusManager(this, new LagMeter(this, clientManager)); new PlayerTracker(this, serverStatusManager.getCurrentServerName(), serverStatusManager.getUs()); PreferencesManager preferenceManager = new PreferencesManager(this, clientManager, donationManager); @@ -43,5 +52,8 @@ public class StaffServer extends JavaPlugin new Chat(this, clientManager, preferenceManager, serverStatusManager.getCurrentServerName()); new MemoryFix(this); new FileUpdater(this, portal); + + new CustomerSupport(this, clientManager, donationManager, new SalesPackageManager(this, clientManager, donationManager, new InventoryManager(this))); + new Password(this); } } diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java index d9d311bc4..755ab70a3 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java @@ -1,34 +1,47 @@ package mineplex.staffServer.customerSupport; +import java.text.SimpleDateFormat; import java.util.HashSet; -import java.util.List; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClient; import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.NautHashMap; import mineplex.core.donation.DonationManager; import mineplex.core.donation.Donor; +import mineplex.core.donation.repository.token.CoinTransactionToken; +import mineplex.core.donation.repository.token.TransactionToken; +import mineplex.staffServer.salespackage.SalesPackageManager; public class CustomerSupport extends MiniPlugin { private CoreClientManager _clientManager; private DonationManager _donationManager; + private SalesPackageManager _salesPackageManager; private NautHashMap> _agentCacheMap = new NautHashMap>(); - - public CustomerSupport(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager) + private SimpleDateFormat _date = new SimpleDateFormat("MM/dd/yy HH:mm"); + + public CustomerSupport(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, SalesPackageManager salesPackageManager) { super("Customer Support", plugin); - + _clientManager = clientManager; _donationManager = donationManager; + _salesPackageManager = salesPackageManager; } - + @Override public void AddCommands() { @@ -37,14 +50,14 @@ public class CustomerSupport extends MiniPlugin public void Help(Player caller) { - caller.sendMessage(F.main(GetName(), "Usage : /check jRayx")); + caller.sendMessage(F.main(GetName(), "Usage : /check defek7")); } public void addAgentMapping(Player caller, String playerName) { if (!_agentCacheMap.containsKey(caller)) _agentCacheMap.put(caller, new HashSet()); - + _agentCacheMap.get(caller).add(playerName); } @@ -52,10 +65,45 @@ public class CustomerSupport extends MiniPlugin { CoreClient client = _clientManager.Get(playerName); Donor donor = _donationManager.Get(playerName); + caller.sendMessage(C.cDGreen + C.Strike + "============================================="); + caller.sendMessage(C.cBlue + "Name : " + C.cYellow + playerName); + caller.sendMessage(C.cBlue + "Rank : " + C.cYellow + (client.GetRank().Name.isEmpty() ? "Regular" : client.GetRank().Name)); + caller.sendMessage(C.cBlue + "Transactions : "); + + for (CoinTransactionToken transaction : donor.getCoinTransactions()) + { + if (transaction.Source.equalsIgnoreCase("purchase")) + caller.sendMessage(C.cYellow + _date.format(transaction.Date) + C.cGray + " - " + C.cYellow + transaction.Amount + " Coins"); + } + + for (TransactionToken transaction : donor.getTransactions()) + { + if (transaction.Coins == 0 && transaction.Gems == 0 && transaction.SalesPackageName.contains("Gem Booster")) + caller.sendMessage(C.cYellow + _date.format(transaction.Date) + C.cGray + " - " + C.cYellow + transaction.SalesPackageName); + } + caller.sendMessage(C.cDGreen + C.Strike + "============================================="); + _salesPackageManager.displaySalesPackages(caller, playerName); + caller.sendMessage(C.cDGreen + C.Strike + "============================================="); + } + + @EventHandler + public void removeMapping(PlayerQuitEvent event) + { + _agentCacheMap.remove(event.getPlayer()); + } + + @EventHandler + public void foodLevelChange(FoodLevelChangeEvent event) + { + event.setCancelled(true); + } + + @EventHandler + public void entityDeath(EntityDamageEvent event) + { + if (event.getCause() == DamageCause.VOID) + event.getEntity().teleport(event.getEntity().getWorld().getSpawnLocation()); - caller.sendMessage(F.main(GetName(), "Name : " + F.elem(playerName))); - caller.sendMessage(F.main(GetName(), "Rank : " + F.elem(client.GetRank().Name))); - - //for (donor.GetUnknownSalesPackagesOwned()) + event.setCancelled(true); } } diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/Password.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/Password.java index 0fe95546b..7cd6a7c09 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/Password.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/Password.java @@ -28,7 +28,7 @@ public class Password extends MiniPlugin @EventHandler public void promptForPassword(final PlayerJoinEvent event) { - event.getPlayer().sendMessage(F.main(GetName(), "Please enter the server password within 5 seconds.")); + event.getPlayer().sendMessage(F.main(GetName(), "Please enter the server password within 10 seconds.")); GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(GetPlugin(), new Runnable() { @@ -37,7 +37,7 @@ public class Password extends MiniPlugin if (!_accepted.contains(event.getPlayer())) event.getPlayer().kickPlayer("You don't know the password little twerp."); } - }, 100L); + }, 200L); } public void checkPassword(Player caller, String attempt) diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordCommand.java index 29b0f96b8..eedca6380 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordCommand.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/password/PasswordCommand.java @@ -15,7 +15,7 @@ public class PasswordCommand extends CommandBase @Override public void Execute(Player caller, String[] args) { - if (args.length == 1) + if (args != null && args.length == 1) { Plugin.checkPassword(caller, args[0]); } diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/SalesPackageManager.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/SalesPackageManager.java new file mode 100644 index 000000000..d09722118 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/SalesPackageManager.java @@ -0,0 +1,104 @@ +package mineplex.staffServer.salespackage; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.MiniPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.jsonchat.JsonMessage; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilServer; +import mineplex.core.donation.DonationManager; +import mineplex.core.inventory.InventoryManager; +import mineplex.staffServer.salespackage.command.DisplayPackageCommand; +import mineplex.staffServer.salespackage.command.Sales; +import mineplex.staffServer.salespackage.salespackages.Coins; +import mineplex.staffServer.salespackage.salespackages.LifetimeHero; +import mineplex.staffServer.salespackage.salespackages.LifetimeUltra; +import mineplex.staffServer.salespackage.salespackages.MonthlyHero; +import mineplex.staffServer.salespackage.salespackages.MonthlyUltra; +import mineplex.staffServer.salespackage.salespackages.SalesPackageBase; + +public class SalesPackageManager extends MiniPlugin +{ + private CoreClientManager _clientManager; + private DonationManager _donationManager; + private InventoryManager _inventoryManager; + + private NautHashMap _salesPackages = new NautHashMap(); + + public SalesPackageManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager) + { + super("SalesPackageManager", plugin); + + _clientManager = clientManager; + _donationManager = donationManager; + _inventoryManager = inventoryManager; + + AddSalesPackage(new Coins(this, 5000)); + AddSalesPackage(new Coins(this, 25000)); + AddSalesPackage(new Coins(this, 75000)); + AddSalesPackage(new MonthlyUltra(this)); + AddSalesPackage(new MonthlyHero(this)); + AddSalesPackage(new LifetimeUltra(this)); + AddSalesPackage(new LifetimeHero(this)); + } + + private void AddSalesPackage(SalesPackageBase salesPackage) + { + _salesPackages.put(salesPackage.getName(), salesPackage); + } + + @Override + public void AddCommands() + { + AddCommand(new DisplayPackageCommand(this)); + AddCommand(new Sales(this)); + } + + public DonationManager getDonationManager() + { + return _donationManager; + } + + public CoreClientManager getClientManager() + { + return _clientManager; + } + + public InventoryManager getInventoryManager() + { + return _inventoryManager; + } + + public void help(Player player) + { + } + + public void displayPackage(Player caller, String playerName, String packageName) + { + _salesPackages.get(packageName).displayToAgent(caller, playerName); + } + + public void displaySalesPackages(Player caller, String playerName) + { + JsonMessage coinBuilder = new JsonMessage("Coins : ").color("blue"); + JsonMessage packageBuilder = new JsonMessage("Rank Packages : ").color("blue"); + + for (SalesPackageBase salesPackage : _salesPackages.values()) + { + if (salesPackage instanceof Coins) + { + coinBuilder = coinBuilder.extra("[").color("gray").extra(salesPackage.getName()).color("green").click("run_command", "/display " + playerName + " " + salesPackage.getName()).extra("] ").color("gray"); + } + else + { + packageBuilder = packageBuilder.extra("[").color("gray").extra(salesPackage.getName()).color("green").click("run_command", "/display " + playerName + " " + salesPackage.getName()).extra("] ").color("gray"); + } + } + + coinBuilder.sendToPlayer(caller); + packageBuilder.sendToPlayer(caller); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/BoosterCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/BoosterCommand.java new file mode 100644 index 000000000..06b2791db --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/BoosterCommand.java @@ -0,0 +1,31 @@ +package mineplex.staffServer.salespackage.command; + +import org.bukkit.entity.Player; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UUIDFetcher; +import mineplex.staffServer.salespackage.SalesPackageManager; + +public class BoosterCommand extends CommandBase +{ + public BoosterCommand(SalesPackageManager plugin) + { + super(plugin, Rank.MODERATOR, "booster"); + } + + @Override + public void Execute(Player caller, String[] args) + { + if (args == null || args.length != 2) + return; + + String playerName = args[0]; + int amount = Integer.parseInt(args[1]); + + Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, "Gem Booster " + amount, false, 0, false); + Plugin.getInventoryManager().addItemToInventoryForOffline(UUIDFetcher.getUUIDOf(playerName).toString(), "Utility", "Gem Booster", amount); + caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " boosters to " + playerName + "'s account!")); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/CoinCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/CoinCommand.java new file mode 100644 index 000000000..b447b164b --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/CoinCommand.java @@ -0,0 +1,29 @@ +package mineplex.staffServer.salespackage.command; + +import org.bukkit.entity.Player; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.core.common.util.F; +import mineplex.staffServer.salespackage.SalesPackageManager; + +public class CoinCommand extends CommandBase +{ + public CoinCommand(SalesPackageManager plugin) + { + super(plugin, Rank.MODERATOR, "coin"); + } + + @Override + public void Execute(Player caller, String[] args) + { + if (args == null || args.length != 2) + return; + + String playerName = args[0]; + int amount = Integer.parseInt(args[1]); + + Plugin.getDonationManager().RewardCoins(null, "purchase", playerName, amount); + caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " coins to " + playerName + "'s account!")); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/DisplayPackageCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/DisplayPackageCommand.java new file mode 100644 index 000000000..3d1075296 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/DisplayPackageCommand.java @@ -0,0 +1,38 @@ +package mineplex.staffServer.salespackage.command; + +import org.bukkit.entity.Player; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.staffServer.salespackage.SalesPackageManager; + +public class DisplayPackageCommand extends CommandBase +{ + public DisplayPackageCommand(SalesPackageManager plugin) + { + super(plugin, Rank.MODERATOR, "display"); + } + + @Override + public void Execute(Player caller, String[] args) + { + if (args == null || args.length < 2) + return; + + String playerName = args[0]; + String packageName = args[1]; + + if (args.length > 2) + { + for (int i = 2; i < args.length; i++) + { + packageName += " " + args[i]; + } + } + + if (packageName.equalsIgnoreCase("ALL")) + Plugin.displaySalesPackages(caller, playerName); + else + Plugin.displayPackage(caller, playerName, packageName); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/HeroCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/HeroCommand.java new file mode 100644 index 000000000..5d061fefb --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/HeroCommand.java @@ -0,0 +1,34 @@ +package mineplex.staffServer.salespackage.command; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.core.recharge.Recharge; +import mineplex.staffServer.salespackage.SalesPackageManager; + +public class HeroCommand extends CommandBase +{ + public HeroCommand(SalesPackageManager plugin) + { + super(plugin, Rank.MODERATOR, "hero"); + } + + @Override + public void Execute(Player caller, String[] args) + { + resetCommandCharge(caller); + PlayerCommandPreprocessEvent event = new PlayerCommandPreprocessEvent(caller, "/sales rank " + args[0] + " HERO false"); + Bukkit.getServer().getPluginManager().callEvent(event); + + resetCommandCharge(caller); + event = new PlayerCommandPreprocessEvent(caller, "/sales coin " + args[0] + " 15000"); + Bukkit.getServer().getPluginManager().callEvent(event); + + resetCommandCharge(caller); + event = new PlayerCommandPreprocessEvent(caller, "/sales booster " + args[0] + " 60"); + Bukkit.getServer().getPluginManager().callEvent(event); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/RankCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/RankCommand.java new file mode 100644 index 000000000..afe63edd9 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/RankCommand.java @@ -0,0 +1,30 @@ +package mineplex.staffServer.salespackage.command; + +import org.bukkit.entity.Player; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.core.common.util.F; +import mineplex.staffServer.salespackage.SalesPackageManager; + +public class RankCommand extends CommandBase +{ + public RankCommand(SalesPackageManager plugin) + { + super(plugin, Rank.MODERATOR, "rank"); + } + + @Override + public void Execute(Player caller, String[] args) + { + if (args == null || args.length != 3) + return; + + String playerName = args[0]; + String rank = args[1]; + boolean perm = Boolean.parseBoolean(args[2]); + + Plugin.getClientManager().SaveRank(playerName, mineplex.core.common.Rank.valueOf(rank), perm); + caller.sendMessage(F.main(Plugin.GetName(), playerName + "'s rank has been updated to " + rank + "!")); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/Sales.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/Sales.java new file mode 100644 index 000000000..7103aecbb --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/Sales.java @@ -0,0 +1,27 @@ +package mineplex.staffServer.salespackage.command; + +import org.bukkit.entity.Player; + +import mineplex.core.command.MultiCommandBase; +import mineplex.core.common.Rank; +import mineplex.staffServer.salespackage.SalesPackageManager; + +public class Sales extends MultiCommandBase +{ + public Sales(SalesPackageManager plugin) + { + super(plugin, Rank.MODERATOR, "sales"); + + AddCommand(new RankCommand(plugin)); + AddCommand(new CoinCommand(plugin)); + AddCommand(new BoosterCommand(plugin)); + AddCommand(new UltraCommand(plugin)); + AddCommand(new HeroCommand(plugin)); + } + + @Override + protected void Help(Player caller, String[] args) + { + Plugin.help(caller); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/UltraCommand.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/UltraCommand.java new file mode 100644 index 000000000..3e014f75d --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/command/UltraCommand.java @@ -0,0 +1,33 @@ +package mineplex.staffServer.salespackage.command; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.staffServer.salespackage.SalesPackageManager; + +public class UltraCommand extends CommandBase +{ + public UltraCommand(SalesPackageManager plugin) + { + super(plugin, Rank.MODERATOR, "ultra"); + } + + @Override + public void Execute(Player caller, String[] args) + { + resetCommandCharge(caller); + PlayerCommandPreprocessEvent event = new PlayerCommandPreprocessEvent(caller, "/sales rank " + args[0] + " ULTRA false"); + Bukkit.getServer().getPluginManager().callEvent(event); + + resetCommandCharge(caller); + event = new PlayerCommandPreprocessEvent(caller, "/sales coin " + args[0] + " 7500"); + Bukkit.getServer().getPluginManager().callEvent(event); + + resetCommandCharge(caller); + event = new PlayerCommandPreprocessEvent(caller, "/sales booster " + args[0] + " 30"); + Bukkit.getServer().getPluginManager().callEvent(event); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/Coins.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/Coins.java new file mode 100644 index 000000000..1091a16fd --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/Coins.java @@ -0,0 +1,23 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public class Coins extends SalesPackageBase +{ + private int _amount; + + public Coins(SalesPackageManager manager, int amount) + { + super(manager, amount + " Coins"); + + _amount = amount; + } + public void displayToAgent(Player agent, String playerName) + { + addButton(agent, "/sales coin " + playerName + " " + _amount, _amount + " Coins."); + agent.sendMessage(" "); + addBackButton(agent, playerName); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeHero.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeHero.java new file mode 100644 index 000000000..610eb524b --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeHero.java @@ -0,0 +1,20 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public class LifetimeHero extends SalesPackageBase +{ + public LifetimeHero(SalesPackageManager manager) + { + super(manager, "Lifetime Hero"); + } + + public void displayToAgent(Player agent, String playerName) + { + addButton(agent, "/sales rank " + playerName + " HERO true", " Lifetime Hero Rank."); + agent.sendMessage(" "); + addBackButton(agent, playerName); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeUltra.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeUltra.java new file mode 100644 index 000000000..b00b44ca9 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeUltra.java @@ -0,0 +1,20 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public class LifetimeUltra extends SalesPackageBase +{ + public LifetimeUltra(SalesPackageManager manager) + { + super(manager, "Lifetime Ultra"); + } + + public void displayToAgent(Player agent, String playerName) + { + addButton(agent, "/sales rank " + playerName + " ULTRA true", " Lifetime Ultra Rank."); + agent.sendMessage(" "); + addBackButton(agent, playerName); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/MonthlyHero.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/MonthlyHero.java new file mode 100644 index 000000000..66102b208 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/MonthlyHero.java @@ -0,0 +1,23 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public class MonthlyHero extends SalesPackageBase +{ + public MonthlyHero(SalesPackageManager manager) + { + super(manager, "Monthly Hero"); + } + + public void displayToAgent(Player agent, String playerName) + { + addButton(agent, "/sales coin " + playerName + " 15000", " 15,000 Coins"); + addButton(agent, "/sales booster " + playerName + " 60", " 60 Gem Boosters"); + addButton(agent, "/sales rank " + playerName + " HERO false", " Monthly Hero."); + addButton(agent, "Apply All", "/sales hero " + playerName, " Apply all above."); + agent.sendMessage(" "); + addBackButton(agent, playerName); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/MonthlyUltra.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/MonthlyUltra.java new file mode 100644 index 000000000..ce48bbf2f --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/MonthlyUltra.java @@ -0,0 +1,23 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public class MonthlyUltra extends SalesPackageBase +{ + public MonthlyUltra(SalesPackageManager manager) + { + super(manager, "Monthly Ultra"); + } + + public void displayToAgent(Player agent, String playerName) + { + addButton(agent, "/sales coin " + playerName + " 7500", " 7,500 Coins"); + addButton(agent, "/sales booster " + playerName + " 30", " 30 Gem Boosters"); + addButton(agent, "/sales rank " + playerName + " ULTRA false", " Monthly Ultra."); + addButton(agent, "Apply All", "/sales ultra " + playerName, " Apply all above."); + agent.sendMessage(" "); + addBackButton(agent, playerName); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/SalesPackageBase.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/SalesPackageBase.java new file mode 100644 index 000000000..dd0f3b588 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/SalesPackageBase.java @@ -0,0 +1,44 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.core.common.jsonchat.JsonMessage; +import mineplex.core.common.util.UtilServer; +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public abstract class SalesPackageBase +{ + private String _name; + + protected SalesPackageManager Manager; + + protected SalesPackageBase(SalesPackageManager manager, String name) + { + Manager = manager; + _name = name; + } + + public abstract void displayToAgent(Player agent, String playerName); + + public String getName() + { + return _name; + } + + protected void addButton(Player agent, String command, String itemText) + { + addButton(agent, "Apply", command, itemText); + } + + protected void addButton(Player agent, String buttonText, String command, String itemText) + { + new JsonMessage("[").color("blue").extra(buttonText).color("green").click("run_command", command) + .add("] ").color("blue").add(itemText).color("yellow").sendToPlayer(agent); + } + + protected void addBackButton(Player agent, String playerName) + { + new JsonMessage("[").color("blue").extra("Back").color("green").click("run_command", "/display " + playerName + " ALL") + .add("] ").color("blue").sendToPlayer(agent); + } +} diff --git a/Plugins/Nautilus.Core.CraftBukkit/src/org/bukkit/entity/Projectile.java b/Plugins/Nautilus.Core.CraftBukkit/src/org/bukkit/entity/Projectile.java index 289feae9e..d57fe8140 100644 --- a/Plugins/Nautilus.Core.CraftBukkit/src/org/bukkit/entity/Projectile.java +++ b/Plugins/Nautilus.Core.CraftBukkit/src/org/bukkit/entity/Projectile.java @@ -2,15 +2,55 @@ package org.bukkit.entity; import org.bukkit.projectiles.ProjectileSource; -public abstract interface Projectile extends Entity -{ +/** + * Represents a shootable entity. + */ +public interface Projectile extends Entity { + + /** + * This method exists for legacy reasons to provide backwards + * compatibility. It will not exist at runtime and should not be used + * under any circumstances. + */ @Deprecated - public abstract LivingEntity getShooter(); + public LivingEntity _INVALID_getShooter(); + /** + * Retrieve the shooter of this projectile. + * + * @return the {@link ProjectileSource} that shot this projectile + */ + public ProjectileSource getShooter(); + + /** + * This method exists for legacy reasons to provide backwards + * compatibility. It will not exist at runtime and should not be used + * under any circumstances. + */ @Deprecated - public abstract void setShooter(LivingEntity paramLivingEntity); + public void _INVALID_setShooter(LivingEntity shooter); - public abstract boolean doesBounce(); + /** + * Set the shooter of this projectile. + * + * @param source the {@link ProjectileSource} that shot this projectile + */ + public void setShooter(ProjectileSource source); - public abstract void setBounce(boolean paramBoolean); -} + /** + * Determine if this projectile should bounce or not when it hits. + *

+ * If a small fireball does not bounce it will set the target on fire. + * + * @return true if it should bounce. + */ + public boolean doesBounce(); + + /** + * Set whether or not this projectile should bounce or not when it hits + * something. + * + * @param doesBounce whether or not it should bounce. + */ + public void setBounce(boolean doesBounce); +} \ No newline at end of file diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index 7cbba9ff1..553c90c1f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -33,6 +33,7 @@ import mineplex.core.packethandler.PacketHandler; import mineplex.core.pet.PetManager; import mineplex.core.portal.Portal; import mineplex.core.preferences.PreferencesManager; +import mineplex.core.projectile.ProjectileManager; import mineplex.core.punish.Punish; import mineplex.core.recharge.Recharge; import mineplex.core.spawn.Spawn; @@ -109,16 +110,18 @@ public class Arcade extends JavaPlugin BlockRestore blockRestore = new BlockRestore(this); + ProjectileManager projectileManager = new ProjectileManager(this); + //Inventory InventoryManager inventoryManager = new InventoryManager(this); PetManager petManager = new PetManager(this, _clientManager, _donationManager, creature, webServerAddress); - MountManager mountManager = new MountManager(this, _clientManager, _donationManager, blockRestore); - GadgetManager gadgetManager = new GadgetManager(this, _clientManager, _donationManager, inventoryManager, mountManager, petManager, preferenceManager, disguiseManager, blockRestore); + MountManager mountManager = new MountManager(this, _clientManager, _donationManager, blockRestore, disguiseManager); + GadgetManager gadgetManager = new GadgetManager(this, _clientManager, _donationManager, inventoryManager, mountManager, petManager, preferenceManager, disguiseManager, blockRestore, projectileManager); CosmeticManager cosmeticManager = new CosmeticManager(this, _clientManager, _donationManager, inventoryManager, gadgetManager, mountManager, petManager); cosmeticManager.setInterfaceSlot(7); //Arcade Manager - _gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, disguiseManager, creature, teleport, new Blood(this), antistack, portal, packetHandler, preferenceManager, inventoryManager, cosmeticManager, webServerAddress); + _gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, disguiseManager, creature, teleport, new Blood(this), antistack, portal, packetHandler, preferenceManager, inventoryManager, cosmeticManager, projectileManager, webServerAddress); new MemoryFix(this); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index 1e01d1475..497a8c505 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -47,8 +47,6 @@ import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent; import mineplex.minecraft.game.classcombat.shop.ClassCombatShop; import mineplex.minecraft.game.classcombat.shop.ClassShopManager; import mineplex.minecraft.game.core.IRelation; -import mineplex.minecraft.game.core.condition.ConditionManager; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.DamageManager; import mineplex.minecraft.game.core.fire.Fire; import mineplex.core.MiniPlugin; @@ -63,6 +61,8 @@ import mineplex.core.blood.Blood; import mineplex.core.chat.Chat; import mineplex.core.common.Rank; import mineplex.core.common.util.*; +import mineplex.minecraft.game.core.condition.ConditionManager; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.creature.Creature; import mineplex.core.disguise.DisguiseManager; @@ -134,7 +134,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, AntiStack antistack, Portal portal, PacketHandler packetHandler, PreferencesManager preferences, InventoryManager inventoryManager, - CosmeticManager cosmeticManager, String webAddress) + CosmeticManager cosmeticManager, ProjectileManager projectileManager, String webAddress) { super("Game Manager", plugin); @@ -182,7 +182,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation _firework = new FireworkHandler(); _fire = new Fire(plugin, _conditionManager, damageManager); - _projectileManager = new ProjectileManager(plugin); + _projectileManager = projectileManager; if (serverConfig.GameList.contains(GameType.ChampionsDominate) || serverConfig.GameList.contains(GameType.ChampionsTDM) @@ -810,13 +810,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation } } - @EventHandler - public void TeleportLog(PlayerTeleportEvent event) - { - System.out.println("Teleporting: " + event.getPlayer().getName() + " to " - + event.getTo().getWorld().getWorldFolder().getName()); - } - public InventoryManager getInventoryManager() { return _inventoryManager; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/addons/TeamArmorAddon.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/addons/TeamArmorAddon.java index cf948db67..ce3d94de8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/addons/TeamArmorAddon.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/addons/TeamArmorAddon.java @@ -1,8 +1,6 @@ package nautilus.game.arcade.addons; -import org.bukkit.Effect; import org.bukkit.Material; -import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.inventory.InventoryClickEvent; @@ -12,10 +10,7 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.MiniPlugin; -import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilGear; -import mineplex.core.common.util.UtilPlayer; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.events.PlayerKitGiveEvent; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java index 362ed2400..e1cc12a87 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java @@ -10,7 +10,7 @@ public class GameCommand extends MultiCommandBase { public GameCommand(ArcadeManager plugin) { - super(plugin, Rank.ADMIN, "game"); + super(plugin, Rank.ADMIN, new Rank[] {Rank.YOUTUBE, Rank.MAPDEV}, "game"); AddCommand(new StartCommand(Plugin)); AddCommand(new StopCommand(Plugin)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java index 7b3d19b5a..5ad5c815e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java @@ -12,22 +12,22 @@ import mineplex.core.common.Rank; import mineplex.core.common.util.C; public class SetCommand extends CommandBase -{ +{ public SetCommand(ArcadeManager plugin) { - super(plugin, Rank.ADMIN, "set"); + super(plugin, Rank.ADMIN, new Rank[] {Rank.YOUTUBE, Rank.MAPDEV}, "set"); } - - @Override + + @Override public void Execute(Player caller, String[] args) - { + { if (Plugin.GetGame() == null) return; - + if (args.length == 0) { caller.sendMessage("/game set (Map)"); - return; + return; } String game = args[0].toLowerCase(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java index d8b996565..a57fd55d2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java @@ -12,7 +12,7 @@ public class StartCommand extends CommandBase { public StartCommand(ArcadeManager plugin) { - super(plugin, Rank.ADMIN, "start"); + super(plugin, Rank.ADMIN, new Rank[] {Rank.YOUTUBE, Rank.MAPDEV}, "start"); } @Override @@ -30,7 +30,7 @@ public class StartCommand extends CommandBase int seconds; if(args != null && args.length > 0) seconds = Integer.parseInt(args[0]); - else + else seconds = 10; Plugin.GetGameManager().StateCountdown(Plugin.GetGame(), seconds, true); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java index cae9cc02f..76265b22d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java @@ -23,6 +23,7 @@ import org.bukkit.entity.FallingBlock; import org.bukkit.entity.Horse; import org.bukkit.entity.Horse.Style; import org.bukkit.entity.Horse.Variant; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; @@ -713,7 +714,7 @@ public class CastleSiege extends TeamGame int damage = (int) (5 * (event.getEntity().getVelocity().length() / 3d)); //Damage Event - Manager.GetDamage().NewDamageEvent(player, event.getEntity().getShooter(), event.getEntity(), + Manager.GetDamage().NewDamageEvent(player, (LivingEntity)event.getEntity().getShooter(), event.getEntity(), DamageCause.CUSTOM, damage, true, false, false, null, GetName()); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/DeathTag.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/DeathTag.java index 3b882ee0d..28ec0d01f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/DeathTag.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/DeathTag.java @@ -1,10 +1,13 @@ package nautilus.game.arcade.game.games.deathtag; import java.util.ArrayList; +import java.util.Collections; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.PlayerDeathEvent; @@ -25,6 +28,7 @@ import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.game.SoloGame; import nautilus.game.arcade.game.GameTeam.PlayerState; import nautilus.game.arcade.game.games.deathtag.kits.*; +import nautilus.game.arcade.game.games.sneakyassassins.powerups.PowerUpManager; import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.NullKit; import nautilus.game.arcade.stats.ComeAtMeBroStatTracker; @@ -37,6 +41,8 @@ public class DeathTag extends SoloGame private NautHashMap _deathLocation = new NautHashMap(); private int _currentSpeed = -1; + + private ArrayList _lights = new ArrayList(); public DeathTag(ArcadeManager manager) { @@ -68,6 +74,20 @@ public class DeathTag extends SoloGame registerStatTrackers(new ComeAtMeBroStatTracker(this)); } + + @Override + public void ParseData() + { + _lights = this.WorldData.GetCustomLocs("89"); + + for (Location loc : _lights) + { + if (Math.random() > 0.5) + loc.getBlock().setType(Material.GOLD_BLOCK); + else + loc.getBlock().setTypeIdAndData(35, (byte)15, false); + } + } @Override public void RestrictKits() @@ -113,6 +133,25 @@ public class DeathTag extends SoloGame { return _runners; } + + @EventHandler + public void UpdateLights(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.SEC) + return; + + for (Location loc : _lights) + { + if (loc.getBlock().getType() == Material.GOLD_BLOCK) + loc.getBlock().setTypeIdAndData(35, (byte)15, false); + else + loc.getBlock().setType(Material.GOLD_BLOCK); + } + } + @EventHandler public void UpdateSpeed(UpdateEvent event) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeTeams.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeTeams.java index 3528d43fa..d7f43170d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeTeams.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeTeams.java @@ -2,6 +2,8 @@ package nautilus.game.arcade.game.games.dragonescape; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -11,6 +13,8 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.FireworkEffect.Type; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.entity.EnderDragon; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -171,18 +175,38 @@ public class DragonEscapeTeams extends TeamGame @EventHandler public void MoveDragon(UpdateEvent event) - { + { if (event.getType() != UpdateType.TICK) return; if (_dragonData == null) return; - + _dragonData.Target = _waypoints.get(Math.min(_waypoints.size()-1, (GetWaypointIndex(_dragonData.Location) + 1))); _dragonData.Move(); + + Set blocks = UtilBlock.getInRadius(_dragonData.Location, 10d).keySet(); + + Iterator blockIterator = blocks.iterator(); + while (blockIterator.hasNext()) + { + Block block = blockIterator.next(); + + if (block.isLiquid()) + blockIterator.remove(); + + else if (block.getRelative(BlockFace.UP).isLiquid()) + blockIterator.remove(); - Manager.GetExplosion().BlockExplosion(UtilBlock.getInRadius(_dragonData.Location, 10d).keySet(), _dragonData.Location, false); + else if (WorldData.MapName.contains("Hell") && block.getY() < 30) + blockIterator.remove(); + + else if (WorldData.MapName.contains("Pirate") && (block.getY() < 6)) + blockIterator.remove(); + } + + Manager.GetExplosion().BlockExplosion(blocks, _dragonData.Location, false); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gravity/Gravity.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gravity/Gravity.java index 5e089847d..91df8eb87 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gravity/Gravity.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gravity/Gravity.java @@ -14,7 +14,9 @@ import org.bukkit.FireworkEffect.Type; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFallingSand; import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.Slime; @@ -568,9 +570,9 @@ public class Gravity extends SoloGame if (obj.Ent instanceof Player) { //Damage Event - Manager.GetDamage().NewDamageEvent((Player)obj.Ent, proj.getShooter(), null, + Manager.GetDamage().NewDamageEvent((Player)obj.Ent, (LivingEntity)proj.getShooter(), null, DamageCause.CUSTOM, 1, false, true, true, - UtilEnt.getName(proj.getShooter()), "Sonic Blast"); + UtilEnt.getName((Entity)proj.getShooter()), "Sonic Blast"); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java index 3c1b7dccd..544300428 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java @@ -562,7 +562,7 @@ public class HideSeek extends TeamGame if (eventEE.getDamager() instanceof Projectile) { proj = (Projectile)eventEE.getDamager(); - damager = proj.getShooter(); + damager = (LivingEntity)proj.getShooter(); } else if (eventEE.getDamager() instanceof LivingEntity) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java index 9a28f8a4f..9d816df01 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java @@ -62,8 +62,11 @@ public class Micro extends TeamGame public void ParseData() { for (Location loc : WorldData.GetCustomLocs("20")) + { _glass.add(loc.getBlock()); - + loc.getBlock().setType(Material.STAINED_GLASS); + } + for (int y= WorldData.MinY ; y < WorldData.MaxY ; y++) for (int x= WorldData.MinX ; x < WorldData.MaxX ; x++) for (int z= WorldData.MinZ ; z < WorldData.MaxZ ; z++) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java index 9a1176cce..e686d7692 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java @@ -44,8 +44,8 @@ import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; -import mineplex.core.recharge.Recharge; import mineplex.minecraft.game.core.condition.Condition.ConditionType; +import mineplex.core.recharge.Recharge; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverTeams.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverTeams.java index ecc6c48be..7d2470059 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverTeams.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/QuiverTeams.java @@ -32,10 +32,9 @@ import nautilus.game.arcade.kit.Kit; public class QuiverTeams extends TeamGame { private HashMap _teamKills = new HashMap(); - private ArrayList _lastScoreboard = new ArrayList(); private HashMap _deathTime = new HashMap(); - private int _reqKills = 100; + private int _reqKills = 6; public QuiverTeams(ArcadeManager manager) { @@ -52,7 +51,7 @@ public class QuiverTeams extends TeamGame "Bow and Arrow insta-kills.", "You receive 1 Arrow per kill.", "Glass blocks are breakable", - "First team to 100 kills wins." + "First team to 60 kills wins." }); this.HungerSet = 20; @@ -195,6 +194,10 @@ public class QuiverTeams extends TeamGame Scoreboard.Write(kills + "" + team.GetColor() + " Kills"); } + Scoreboard.WriteBlank(); + Scoreboard.Write(C.Bold + "First To"); + Scoreboard.Write(C.cGold + C.Bold + _reqKills + " Kills"); + Scoreboard.Draw(); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/runner/kits/KitFrosty.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/runner/kits/KitFrosty.java index 4ff4ce99d..51b000027 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/runner/kits/KitFrosty.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/runner/kits/KitFrosty.java @@ -3,6 +3,7 @@ package nautilus.game.arcade.game.games.runner.kits; import org.bukkit.EntityEffect; import org.bukkit.Material; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; @@ -52,6 +53,6 @@ public class KitFrosty extends Kit event.GetDamageeEntity().playEffect(EntityEffect.HURT); - Manager.GetCondition().Factory().Slow("Snowball Slow", event.GetDamageeEntity(), event.GetProjectile().getShooter(), 2, 1, false, false, true, false); + Manager.GetCondition().Factory().Slow("Snowball Slow", event.GetDamageeEntity(), (LivingEntity)event.GetProjectile().getShooter(), 2, 1, false, false, true, false); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java index 4f653735e..780c9155b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java @@ -38,11 +38,11 @@ import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTime; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/Spleef.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/Spleef.java index 2644f2286..3ded0d662 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/Spleef.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/Spleef.java @@ -266,7 +266,7 @@ public class Spleef extends SoloGame @EventHandler public void Hunger(UpdateEvent event) { - if (event.getType() != UpdateType.SEC) + if (event.getType() != UpdateType.SLOW) return; if (!IsLive()) @@ -283,7 +283,7 @@ public class Spleef extends SoloGame UtilPlayer.message(player, F.main("Game", "Break blocks to restore hunger!")); } - UtilPlayer.hunger(player, -1); + UtilPlayer.hunger(player, -2); } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/SpleefTeams.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/SpleefTeams.java index e71659203..d408691ba 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/SpleefTeams.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/spleef/SpleefTeams.java @@ -2,12 +2,14 @@ package nautilus.game.arcade.game.games.spleef; import java.lang.reflect.Field; -import org.bukkit.Bukkit; import org.bukkit.Effect; +import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftArrow; import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; +import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockDamageEvent; @@ -17,7 +19,11 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.ArcadeManager; @@ -57,14 +63,59 @@ public class SpleefTeams extends TeamGame } @EventHandler - public void ArrowDamage(ProjectileHitEvent event) + public void SnowballDamage(ProjectileHitEvent event) { - final Arrow arrow = (Arrow)event.getEntity(); - final double velocity = arrow.getVelocity().length(); + if (!(event.getEntity() instanceof Snowball)) + return; + + Snowball ball = (Snowball)event.getEntity(); - if (!(arrow.getShooter() instanceof Player)) + if (ball.getShooter() == null || !(ball.getShooter() instanceof Player)) return; + Location loc = ball.getLocation().add(ball.getVelocity().multiply(0.8)); + + Block block = loc.getBlock(); + + //Find Nearest if hit nothing :O + if (block.getType() == Material.AIR) + { + Block closest = null; + double closestDist = 0; + + for (Block other : UtilBlock.getSurrounding(block, true)) + { + if (other.getType() == Material.AIR) + continue; + + double dist = UtilMath.offset(loc, other.getLocation().add(0.5, 0.5, 0.5)); + + if (closest == null || dist < closestDist) + { + closest = other; + closestDist = dist; + } + } + + if (closest != null) + block = closest; + } + + BlockFade(block, (Player)ball.getShooter(), false); + } + + @EventHandler + public void ArrowDamage(ProjectileHitEvent event) + { + if (!(event.getEntity() instanceof Arrow)) + return; + + final Arrow arrow = (Arrow)event.getEntity(); + final double velocity = arrow.getVelocity().length(); + + if (!(arrow.getShooter() instanceof Player)) + return; + final Player player = (Player)arrow.getShooter(); Manager.GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable() @@ -90,14 +141,14 @@ public class SpleefTeams extends TeamGame Block block = arrow.getWorld().getBlockAt(x, y, z); double radius = 0.5 + velocity/1.6d; - - BlockFade(block, player); - + + BlockFade(block, player, false); + for (Block other : UtilBlock.getInRadius(block.getLocation().add(0.5, 0.5, 0.5), radius).keySet()) { - BlockFade(other, player); + BlockFade(other, player, true); } - + arrow.remove(); } catch (Exception e) @@ -107,25 +158,41 @@ public class SpleefTeams extends TeamGame } }, 0); } - + @EventHandler(priority = EventPriority.LOW) public void BlockDamage(BlockDamageEvent event) { if (!this.IsLive()) return; - + if (!this.IsAlive(event.getPlayer())) return; event.setCancelled(true); - - BlockFade(event.getBlock(), event.getPlayer()); + + BlockFade(event.getBlock(), event.getPlayer(), false); + + //Snowball + if (GetKit(event.getPlayer()) instanceof KitSnowballer) + if (!UtilInv.contains(event.getPlayer(), Material.SNOW_BALL, (byte)0, 16)) + event.getPlayer().getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SNOW_BALL)); } - - public void BlockFade(Block block, Player player) + + public void BlockFade(Block block, Player player, boolean slowDamage) { - UtilPlayer.hunger(player, 1); - + AddStat(player, "BlocksBroken", 1, false, false); + + //Prevent Super Hunger from Bow + if (Recharge.Instance.use(player, GetName() + " Hunger", 50, false, false)) + if (block.getTypeId() != 7) + UtilPlayer.hunger(player, 1); + + if (!slowDamage) + { + Break(block); + return; + } + //Wool and Stained Clay if (block.getTypeId() == 35 || block.getTypeId() == 159) { @@ -138,7 +205,7 @@ public class SpleefTeams extends TeamGame block.setData((byte)14); else - Break(block, player); + Break(block); } //Stone @@ -154,9 +221,9 @@ public class SpleefTeams extends TeamGame block.setData((byte)2); else - Break(block, player); + Break(block); } - + //Grass else if (block.getTypeId() == 2) { @@ -171,38 +238,33 @@ public class SpleefTeams extends TeamGame else if (block.getData() == 0) block.setData((byte)2); - + else - Break(block, player); + Break(block); } //Other else if (block.getTypeId() != 7) { - Break(block, player); + Break(block); } } - - public void Break(Block block, Player player) + + public void Break(Block block) { block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId()); block.setTypeId(0); - - Bukkit.getPluginManager().callEvent(new SpleefDestroyBlockEvent(block, player)); } - + @EventHandler public void Hunger(UpdateEvent event) { - if (Manager.IsTournamentServer()) + if (event.getType() != UpdateType.SLOW) return; - - if (event.getType() != UpdateType.SEC) - return; - + if (!IsLive()) return; - + for (Player player : GetPlayers(true)) { if (player.getFoodLevel() <= 0) @@ -210,11 +272,11 @@ public class SpleefTeams extends TeamGame Manager.GetDamage().NewDamageEvent(player, null, null, DamageCause.STARVATION, 1, false, true, false, "Starvation", GetName()); - + UtilPlayer.message(player, F.main("Game", "Break blocks to restore hunger!")); } - - UtilPlayer.hunger(player, -1); + + UtilPlayer.hunger(player, -2); } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java index 025aec360..6e39e8143 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java @@ -4,6 +4,7 @@ import java.util.HashMap; import org.bukkit.Sound; import org.bukkit.entity.Egg; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.block.Action; @@ -118,9 +119,9 @@ public class PerkEggGun extends Perk Egg egg = (Egg)event.GetProjectile(); //Damage Event - Manager.GetDamage().NewDamageEvent(event.GetDamageeEntity(), egg.getShooter(), egg, + Manager.GetDamage().NewDamageEvent(event.GetDamageeEntity(), (LivingEntity)egg.getShooter(), egg, DamageCause.PROJECTILE, 1, true, true, false, - UtilEnt.getName(egg.getShooter()), GetName()); + UtilEnt.getName((LivingEntity)egg.getShooter()), GetName()); event.GetDamageeEntity().setVelocity(new Vector(0,0,0)); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkRopedArrow.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkRopedArrow.java index 9f1593a1d..5be3169b9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkRopedArrow.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkRopedArrow.java @@ -7,6 +7,7 @@ import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; @@ -89,11 +90,11 @@ public class PerkRopedArrow extends Perk if (!(proj.getShooter() instanceof Player)) return; - Vector vec = UtilAlg.getTrajectory(proj.getShooter(), proj); + Vector vec = UtilAlg.getTrajectory((LivingEntity)proj.getShooter(), proj); double mult = (proj.getVelocity().length() / 3d); //Action - UtilAction.velocity(proj.getShooter(), vec, + UtilAction.velocity((LivingEntity)proj.getShooter(), vec, 0.4 + mult * _power, false, 0, 0.6 * mult * _power, 1.2 * mult * _power, true); //Effect diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSmokebomb.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSmokebomb.java index 20ce72e5b..9ccd89189 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSmokebomb.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSmokebomb.java @@ -13,11 +13,11 @@ import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.minecraft.game.core.condition.Condition; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.condition.Condition; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.kit.Perk; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java index 60a991b67..70d0b436f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java @@ -3,6 +3,7 @@ package nautilus.game.arcade.kit.perks; import java.util.ArrayList; import java.util.Iterator; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.ThrownPotion; @@ -25,7 +26,6 @@ import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; - import nautilus.game.arcade.kit.Perk; public class PerkWitchPotion extends Perk @@ -89,9 +89,9 @@ public class PerkWitchPotion extends Perk continue; //Damage Event - Manager.GetDamage().NewDamageEvent(player, event.getEntity().getShooter(), null, + Manager.GetDamage().NewDamageEvent(player, (LivingEntity)event.getEntity().getShooter(), null, DamageCause.CUSTOM, 5, true, true, false, - UtilEnt.getName(event.getEntity().getShooter()), GetName()); + UtilEnt.getName((LivingEntity)event.getEntity().getShooter()), GetName()); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitherSkull.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitherSkull.java index 40abaee6f..70484d69c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitherSkull.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitherSkull.java @@ -132,7 +132,7 @@ public class PerkWitherSkull extends Perk WitherSkull skull = (WitherSkull)event.getEntity(); - Explode(skull, event.getLocation(), skull.getShooter()); + Explode(skull, event.getLocation(), (LivingEntity)skull.getShooter()); } @EventHandler(priority = EventPriority.LOWEST) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java index 24364eeaa..4e1499814 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java @@ -39,6 +39,7 @@ import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockIgniteEvent.IgniteCause; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.block.LeavesDecayEvent; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -921,7 +922,7 @@ public class GameFlagManager implements Listener } @EventHandler - public void WorldLeavesDecay(BlockFromToEvent event) + public void WorldLeavesDecay(LeavesDecayEvent event) { Game game = Manager.GetGame(); if (game == null) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java index 605e3956d..8f20258ac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java @@ -10,12 +10,12 @@ import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.core.mount.Mount; -import mineplex.core.mount.types.Dragon; +import mineplex.core.mount.types.MountDragon; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.RestartServerEvent; import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GamePrepareCountdownCommence; @@ -83,10 +83,10 @@ public class GameManager implements Listener for (Mount mount : Manager.getCosmeticManager().getMountManager().getMounts()) { - if (mount instanceof Dragon) + if (mount instanceof MountDragon) { - ((Dragon) mount).SetName(text); - ((Dragon) mount).setHealthPercent(health); + ((MountDragon) mount).SetName(text); + ((MountDragon) mount).setHealthPercent(health); } } } @@ -590,7 +590,7 @@ public class GameManager implements Listener player.leaveVehicle(); player.teleport(Manager.GetLobby().GetSpawn()); } - }, i*3); + }, i); } } diff --git a/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/PvP.java b/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/PvP.java index 615574bc6..cfe3add2b 100644 --- a/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/PvP.java +++ b/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/PvP.java @@ -29,12 +29,12 @@ import mineplex.core.chat.Chat; import mineplex.core.command.CommandCenter; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.minecraft.core.condition.ConditionManager; import mineplex.core.creature.Creature; import mineplex.core.energy.Energy; import mineplex.core.explosion.Explosion; import mineplex.minecraft.game.classcombat.item.ItemFactory; import mineplex.minecraft.game.core.combat.CombatManager; -import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.minecraft.game.core.fire.Fire; import mineplex.minecraft.game.core.mechanics.Weapon; import nautilus.game.pvp.modules.Farming; diff --git a/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/modules/clans/ClansGame.java b/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/modules/clans/ClansGame.java index 790be1c2a..17fbea6f2 100644 --- a/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/modules/clans/ClansGame.java +++ b/Plugins/Nautilus.Game.PvP/src/nautilus/game/pvp/modules/clans/ClansGame.java @@ -25,7 +25,6 @@ import org.bukkit.event.player.PlayerQuitEvent; import me.chiss.Core.Combat.Event.CombatDeathEvent; import mineplex.minecraft.game.core.classcombat.SkillTriggerEvent; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.core.blockrestore.BlockRestoreData; import mineplex.core.common.util.C; @@ -35,6 +34,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilTime.TimeUnit; +import mineplex.minecraft.core.condition.Condition.ConditionType; import mineplex.core.itemstack.ItemStackFactory; public class ClansGame diff --git a/Website/LOC.Core/LOC.Core.csproj b/Website/LOC.Core/LOC.Core.csproj index 89d688b85..e83cfeeab 100644 --- a/Website/LOC.Core/LOC.Core.csproj +++ b/Website/LOC.Core/LOC.Core.csproj @@ -83,6 +83,7 @@ + diff --git a/Website/LOC.Core/Tokens/Client/ClientToken.cs b/Website/LOC.Core/Tokens/Client/ClientToken.cs index a73a187ee..c06400e72 100644 --- a/Website/LOC.Core/Tokens/Client/ClientToken.cs +++ b/Website/LOC.Core/Tokens/Client/ClientToken.cs @@ -43,6 +43,7 @@ SalesPackages = new List(), UnknownSalesPackages = new List(), Transactions = new List(), + CoinRewards = new List(), CustomBuilds = new List(), Pets = new List(), PetNameTagCount = account.PetNameTagCount @@ -82,7 +83,7 @@ } if (account.AccountTransactions == null) - account.AccountTransactions = new List(); + account.AccountTransactions = new List(); foreach (var transaction in account.AccountTransactions) { diff --git a/Website/LOC.Core/Tokens/Client/CoinTransactionToken.cs b/Website/LOC.Core/Tokens/Client/CoinTransactionToken.cs new file mode 100644 index 000000000..d9e9361f3 --- /dev/null +++ b/Website/LOC.Core/Tokens/Client/CoinTransactionToken.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace LOC.Core.Tokens.Client +{ + public class CoinTransactionToken + { + public long Date { get; set; } + + public int Amount { get; set; } + + public string Source { get; set; } + + public CoinTransactionToken(Model.Sales.CoinTransaction transaction) + { + Amount = transaction.Amount; + Date = transaction.Date; + Source = transaction.Source; + } + } +} diff --git a/Website/LOC.Core/Tokens/Client/DonorToken.cs b/Website/LOC.Core/Tokens/Client/DonorToken.cs index 4e636c181..f45c969fc 100644 --- a/Website/LOC.Core/Tokens/Client/DonorToken.cs +++ b/Website/LOC.Core/Tokens/Client/DonorToken.cs @@ -1,6 +1,7 @@ namespace LOC.Core.Tokens.Client { using System.Collections.Generic; + using LOC.Core.Model.Sales; public class DonorToken { @@ -10,6 +11,7 @@ public List SalesPackages { get; set; } public List UnknownSalesPackages { get; set; } public List Transactions { get; set; } + public List CoinRewards { get; set; } public List CustomBuilds { get; set; } public List Pets { get; set; } public int PetNameTagCount { get; set; } diff --git a/Website/LOC.Website.Common/Models/AccountAdministrator.cs b/Website/LOC.Website.Common/Models/AccountAdministrator.cs index 39faa04ff..34bf7c40f 100644 --- a/Website/LOC.Website.Common/Models/AccountAdministrator.cs +++ b/Website/LOC.Website.Common/Models/AccountAdministrator.cs @@ -687,7 +687,7 @@ repository.CommitChanges(); } - public Account GetAccountByUUID(string uuid) + public ClientToken GetAccountByUUID(string uuid) { using (var repository = _repositoryFactory.CreateRepository()) { @@ -698,7 +698,16 @@ account.LoadNavigationProperties(repository.Context); - return account; + ClientToken clientToken = null; + + clientToken = new ClientToken(account); + + foreach (var trans in repository.Where(x => x.Account.AccountId == account.AccountId).ToList()) + { + clientToken.DonorToken.CoinRewards.Add(new CoinTransactionToken(trans)); + } + + return clientToken; } } } diff --git a/Website/LOC.Website.Common/Models/IAccountAdministrator.cs b/Website/LOC.Website.Common/Models/IAccountAdministrator.cs index 8391389a9..9f1dfccd5 100644 --- a/Website/LOC.Website.Common/Models/IAccountAdministrator.cs +++ b/Website/LOC.Website.Common/Models/IAccountAdministrator.cs @@ -39,6 +39,6 @@ bool CoinReward(GemRewardToken token); - Account GetAccountByUUID(string uuid); + ClientToken GetAccountByUUID(string uuid); } } diff --git a/Website/LOC.Website.Web/Controllers/PlayerAccountController.cs b/Website/LOC.Website.Web/Controllers/PlayerAccountController.cs index d0c85c5aa..6713bef16 100644 --- a/Website/LOC.Website.Web/Controllers/PlayerAccountController.cs +++ b/Website/LOC.Website.Web/Controllers/PlayerAccountController.cs @@ -42,9 +42,7 @@ [HttpPost] public ActionResult GetAccountByUUID(string uuid) { - var account = _accountAdministrator.GetAccountByUUID(uuid); - - var json = JsonConvert.SerializeObject(new ClientToken(account)); + var json = JsonConvert.SerializeObject(_accountAdministrator.GetAccountByUUID(uuid)); return Content(json, "application/json"); } diff --git a/Website/LOC.Website.Web/LOC.Website.Web.Publish.xml b/Website/LOC.Website.Web/LOC.Website.Web.Publish.xml index 9b78888fc..bd2a0d731 100644 --- a/Website/LOC.Website.Web/LOC.Website.Web.Publish.xml +++ b/Website/LOC.Website.Web/LOC.Website.Web.Publish.xml @@ -1,12 +1,12 @@  - + @@ -19,31 +19,27 @@ - - + - - - + - + - @@ -51,18 +47,18 @@ - - + - - + + + @@ -73,24 +69,25 @@ - - + - - + + + + + - @@ -98,7 +95,6 @@ - @@ -107,42 +103,42 @@ - - + - + + - - + - + + - + @@ -153,57 +149,62 @@ - + - + + + + + + - + + - + - + - + + - - - + - + - + @@ -211,63 +212,60 @@ - + - - + + + - + - + - - + - - + + - - + - - + + - + - - + + - - + + - + - - @@ -281,15 +279,17 @@ - + - + + + @@ -303,25 +303,26 @@ + + - + - - + @@ -332,21 +333,21 @@ + - + + + - - - @@ -354,8 +355,6 @@ - - @@ -363,43 +362,44 @@ + - + + - - + - + - + + - - + + + - - @@ -410,127 +410,125 @@ - + - - - - + - - + - + + - + - + - + + - + + - + - - + + - + - + - + - + - + - + + - - + + - + - - + + - + - - - - - + + + + + - + - - @@ -546,47 +544,49 @@ - + + - + + - + - + - + - + - + - + @@ -597,74 +597,70 @@ + - + + - - + - - + - - + + - + - + - - - + - - + - - + + - - + @@ -675,33 +671,32 @@ - + - - - - + - - + - - - + + + + + + @@ -709,91 +704,94 @@ - + + - + + - + + - + - + - - + + - + - + - + + - + - + - + + - - + + - + - - + + - + - - - - - + + + + + - + - - @@ -809,37 +807,39 @@ - + + - + + - + - + - + - + @@ -849,7 +849,7 @@ - + @@ -860,29 +860,29 @@ + - + + - - + - - + @@ -890,44 +890,40 @@ - + - + - - - + - - + - - + + - - + @@ -938,33 +934,32 @@ - + - - - - + - - + - + + + + @@ -972,84 +967,89 @@ - + + - + + - + + - + - + - - + + - + - + - + + - + - + + - - + + - + - - + + - + - - - - - + + + + + - + \ No newline at end of file diff --git a/Website/LOCWebsite.suo b/Website/LOCWebsite.suo index 5a10b5f66..aff2fcd81 100644 Binary files a/Website/LOCWebsite.suo and b/Website/LOCWebsite.suo differ