Merge remote-tracking branch 'refs/remotes/origin/develop' into update/hub-makeover

This commit is contained in:
Sam 2017-10-02 10:52:12 +01:00
commit 153d5bdc63
8 changed files with 205 additions and 6 deletions

View File

@ -0,0 +1,12 @@
package mineplex.core.disguise.disguises;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
public class DisguiseGhast extends DisguiseCreature
{
public DisguiseGhast(Entity entity)
{
super(EntityType.GHAST, entity);
}
}

View File

@ -149,6 +149,7 @@ import mineplex.core.gadget.gadgets.morph.MorphCreeper;
import mineplex.core.gadget.gadgets.morph.MorphDinnerbone; import mineplex.core.gadget.gadgets.morph.MorphDinnerbone;
import mineplex.core.gadget.gadgets.morph.MorphEnderman; import mineplex.core.gadget.gadgets.morph.MorphEnderman;
import mineplex.core.gadget.gadgets.morph.MorphFreedomFighter; import mineplex.core.gadget.gadgets.morph.MorphFreedomFighter;
import mineplex.core.gadget.gadgets.morph.MorphGhast;
import mineplex.core.gadget.gadgets.morph.MorphGoldPot; import mineplex.core.gadget.gadgets.morph.MorphGoldPot;
import mineplex.core.gadget.gadgets.morph.MorphGrimReaper; import mineplex.core.gadget.gadgets.morph.MorphGrimReaper;
import mineplex.core.gadget.gadgets.morph.MorphLoveDoctor; import mineplex.core.gadget.gadgets.morph.MorphLoveDoctor;
@ -568,6 +569,7 @@ public class GadgetManager extends MiniPlugin
addGadget(new MorphLarissa(this)); addGadget(new MorphLarissa(this));
addGadget(new MorphBiff(this)); addGadget(new MorphBiff(this));
addGadget(new MorphIvy(this)); addGadget(new MorphIvy(this));
addGadget(new MorphGhast(this));
// Mounts // Mounts
addGadget(new MountUndead(this)); addGadget(new MountUndead(this));

View File

@ -0,0 +1,159 @@
package mineplex.core.gadget.gadgets.morph;
import java.time.Month;
import java.time.YearMonth;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.LargeFireball;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.LineFormat;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilText;
import mineplex.core.disguise.disguises.DisguiseGhast;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.gadgets.morph.managers.UtilMorph;
import mineplex.core.gadget.types.MorphGadget;
import mineplex.core.gadget.util.CostConstants;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
public class MorphGhast extends MorphGadget
{
private static final Vector UP = new Vector(0, 1.5, 0);
private final Set<LargeFireball> _fireballs = new HashSet<>();
public MorphGhast(GadgetManager manager)
{
super(manager, "Ghast Morph", UtilText.splitLinesToArray(new String[]{
C.cGray + "A never before seen morph, the very spooky Ghast!",
"",
C.cGreen + "Left Click" + C.cWhite + " to shoot a fireball",
}, LineFormat.LORE), CostConstants.POWERPLAY_BONUS, Material.GLASS, (byte) 0);
setPPCYearMonth(YearMonth.of(2017, Month.OCTOBER));
setDisplayItem(new ItemBuilder(Material.SKULL_ITEM, (byte) 3)
.setPlayerHead("MHF_Ghast")
.build());
}
@Override
public void enableCustom(Player player, boolean message)
{
applyArmor(player, message);
UtilMorph.disguise(player, new DisguiseGhast(player), Manager);
}
@Override
public void disableCustom(Player player, boolean message)
{
removeArmor(player);
player.setAllowFlight(false);
player.setFlying(false);
UtilMorph.undisguise(player, Manager.getDisguiseManager());
}
@EventHandler
public void interact(PlayerInteractEvent event)
{
Player player = event.getPlayer();
if (!UtilEvent.isAction(event, ActionType.L) || !isActive(event.getPlayer()))
{
return;
}
event.setCancelled(true);
if (!Recharge.Instance.use(player, "Fireball", 4000, true, true, "Cosmetics"))
{
return;
}
Sound sound;
int random = UtilMath.r(3);
if (random == 0)
{
sound = Sound.GHAST_SCREAM;
}
else if (random == 1)
{
sound = Sound.GHAST_SCREAM2;
}
else
{
sound = Sound.GHAST_FIREBALL;
}
player.getWorld().playSound(player.getLocation(), sound, 1, (float) (0.7 + Math.random() / 2));
LargeFireball fireball = player.launchProjectile(LargeFireball.class);
_fireballs.add(fireball);
}
@EventHandler
public void flight(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
{
return;
}
for (Player player : getActive())
{
if (UtilPlayer.isSpectator(player))
{
continue;
}
player.setAllowFlight(true);
player.setFlying(true);
if (UtilEnt.isGrounded(player))
{
UtilAction.velocity(player, UP);
}
}
}
@EventHandler
public void projectileHit(ProjectileHitEvent event)
{
if (!_fireballs.contains(event.getEntity()))
{
return;
}
for (Player player : UtilPlayer.getNearby(event.getEntity().getLocation(), 5))
{
player.setVelocity(UP);
}
UtilParticle.PlayParticleToAll(ParticleType.LAVA, event.getEntity().getLocation().add(0, 0.8, 0), 0.5F, 0.5F, 0.5F, 0.01F, 6, ViewDist.NORMAL);
event.getEntity().remove();
}
}

View File

@ -42,6 +42,7 @@ public class PowerPlayClubRewards
.put(YearMonth.of(2017, Month.JULY), new UnknownSalesPackageItem("Freedom Fighter")) .put(YearMonth.of(2017, Month.JULY), new UnknownSalesPackageItem("Freedom Fighter"))
.put(YearMonth.of(2017, Month.AUGUST), new UnknownSalesPackageItem("Melonhead Morph")) .put(YearMonth.of(2017, Month.AUGUST), new UnknownSalesPackageItem("Melonhead Morph"))
.put(YearMonth.of(2017, Month.SEPTEMBER), new UnknownSalesPackageItem("Tornado")) .put(YearMonth.of(2017, Month.SEPTEMBER), new UnknownSalesPackageItem("Tornado"))
.put(YearMonth.of(2017, Month.OCTOBER), new UnknownSalesPackageItem("Ghast Morph"))
.build(); .build();
public interface PowerPlayClubItem public interface PowerPlayClubItem

View File

@ -1333,6 +1333,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
_restartManager.onDisable(); _restartManager.onDisable();
_observerManager.onDisable(); _observerManager.onDisable();
Managers.get(MountManager.class).onDisable(); Managers.get(MountManager.class).onDisable();
Managers.get(SupplyDropManager.class).onDisable();
ServerOfflineMessage message = new ServerOfflineMessage(); ServerOfflineMessage message = new ServerOfflineMessage();
message.ServerName = UtilServer.getServerName(); message.ServerName = UtilServer.getServerName();
ClansQueueMessenger.getMessenger(UtilServer.getServerName()).transmitMessage(message, QueueConstant.SERVICE_MESSENGER_IDENTIFIER); ClansQueueMessenger.getMessenger(UtilServer.getServerName()).transmitMessage(message, QueueConstant.SERVICE_MESSENGER_IDENTIFIER);

View File

@ -116,7 +116,6 @@ public class SupplyDrop
private void placeChest() private void placeChest()
{ {
_block.setType(Material.CHEST); _block.setType(Material.CHEST);
ClansManager.getInstance().runSyncLater(() -> ClansManager.getInstance().runSyncLater(() ->
{ {
Chest chest = (Chest) _block.getState(); Chest chest = (Chest) _block.getState();
@ -128,7 +127,8 @@ public class SupplyDrop
{ {
inventory.setItem(i++, item); inventory.setItem(i++, item);
} }
_block.setMetadata(SUPPLY_DROP_FILLED_METADATA, new FixedMetadataValue(UtilServer.getPlugin(), true)); chest.update(true);
chest.setMetadata(SUPPLY_DROP_FILLED_METADATA, new FixedMetadataValue(UtilServer.getPlugin(), true));
}, 5); }, 5);
} }
@ -213,7 +213,7 @@ public class SupplyDrop
if (getTicks() >= REMOVE_TICKS) if (getTicks() >= REMOVE_TICKS)
{ {
finish(); finish(false);
} }
} }
@ -221,7 +221,7 @@ public class SupplyDrop
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void finish() public void finish(boolean onDisable)
{ {
_ended = true; _ended = true;
_hologram.stop(); _hologram.stop();
@ -229,6 +229,14 @@ public class SupplyDrop
{ {
_below[i].setTypeIdAndData(_oldBelow[i].getLeft().getId(), _oldBelow[i].getRight(), false); _below[i].setTypeIdAndData(_oldBelow[i].getLeft().getId(), _oldBelow[i].getRight(), false);
} }
_block.breakNaturally(); _block.removeMetadata(SUPPLY_DROP_FILLED_METADATA, UtilServer.getPlugin());
if (onDisable)
{
_block.setType(Material.AIR);
}
else
{
_block.breakNaturally();
}
} }
} }

View File

@ -60,6 +60,15 @@ public class SupplyDropManager extends MiniPlugin
_shop = new SupplyDropShop(this); _shop = new SupplyDropShop(this);
} }
@Override
public void disable()
{
if (_active != null)
{
_active.finish(true);
}
}
public SupplyDropShop getShop() public SupplyDropShop getShop()
{ {
return _shop; return _shop;
@ -99,6 +108,7 @@ public class SupplyDropManager extends MiniPlugin
{ {
return; return;
} }
if (new BlockPosition(event.getClickedBlock()).equals(_active.getPosition())) if (new BlockPosition(event.getClickedBlock()).equals(_active.getPosition()))
{ {
event.setCancelled(true); event.setCancelled(true);
@ -114,7 +124,7 @@ public class SupplyDropManager extends MiniPlugin
{ {
return; return;
} }
_active.finish(); _active.finish(false);
_active = null; _active = null;
} }
} }

View File

@ -17,6 +17,7 @@ import com.mineplex.clansqueue.common.ClansQueueMessenger;
import com.mineplex.clansqueue.common.QueueConstant; import com.mineplex.clansqueue.common.QueueConstant;
import com.mineplex.clansqueue.common.messages.ServerOfflineMessage; import com.mineplex.clansqueue.common.messages.ServerOfflineMessage;
import mineplex.core.Managers;
import mineplex.core.MiniPlugin; import mineplex.core.MiniPlugin;
import mineplex.core.account.permissions.Permission; import mineplex.core.account.permissions.Permission;
import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.account.permissions.PermissionGroup;
@ -36,6 +37,7 @@ import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.RestartServerEvent; import mineplex.core.updater.event.RestartServerEvent;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.game.clans.clans.ClansManager; import mineplex.game.clans.clans.ClansManager;
import mineplex.game.clans.clans.supplydrop.SupplyDropManager;
import mineplex.game.clans.gameplay.safelog.npc.NPCManager; import mineplex.game.clans.gameplay.safelog.npc.NPCManager;
import net.minecraft.server.v1_8_R3.MinecraftServer; import net.minecraft.server.v1_8_R3.MinecraftServer;
@ -120,6 +122,10 @@ public class RestartManager extends MiniPlugin
{ {
return false; return false;
} }
if (Managers.get(SupplyDropManager.class).hasActiveSupplyDrop())
{
return false;
}
return true; return true;
} }