Added Invalid Location to checkpoint

Fixed Checkpoint cooldown
Made it so you have to buy vaults from /f getvault, and buy banners from /f banner
Particle based seechunk that works when moving between chunks
Particle support for 1.7-1.12
Made fly particles mode subtle
This commit is contained in:
Naman
2018-03-28 19:33:10 -05:00
parent 3d2bf73497
commit cdf870b782
17 changed files with 179 additions and 2934 deletions

View File

@@ -22,6 +22,7 @@ public class CmdAutoHelp extends MCommand<P> {
@Override
public void perform() {
if (this.commandChain.size() == 0) {
return;
}

View File

@@ -30,23 +30,14 @@ public class CmdBanner extends FCommand {
@Override
public void perform() {
if (me.getItemInHand().getType() == Material.BANNER) {
if (hasMoney(fme, P.p.getConfig().getInt("fbanners.Banner-Cost"))) {
if (me.getItemInHand().getAmount() != 1) {
me.getItemInHand().setAmount(me.getItemInHand().getAmount() - 1);
}
ItemStack bannerInHand = me.getItemInHand();
bannerInHand.setAmount(1);
removeFromInventory(me.getInventory(), bannerInHand);
takeMoney(fme, P.p.getConfig().getInt("fbanners.Banner-Cost"));
ItemStack warBanner = P.p.createItem(bannerInHand.getType(), 1, bannerInHand.getDurability(), P.p.getConfig().getString("fbanners.Item.Name"), P.p.getConfig().getStringList("fbanners.Item.Lore"));
me.getInventory().addItem(warBanner);
fme.msg(TL.COMMAND_BANNER_SUCCESS);
}
} else {
fme.msg(TL.COMMAND_BANNER_WRONGITEM);
if (!fme.hasMoney(P.p.getConfig().getInt("fbanners.Banner-Cost", 5000))) {
msg(TL.COMMAND_BANNER_NOTENOUGHMONEY);
return;
}
takeMoney(fme, P.p.getConfig().getInt("fbanners.Banner-Cost", 5000));
ItemStack warBanner = P.p.createItem(Material.BANNER, 1, (short) 1, P.p.getConfig().getString("fbanners.Item.Name"), P.p.getConfig().getStringList("fbanners.Item.Lore"));
me.getInventory().addItem(warBanner);
fme.msg(TL.COMMAND_BANNER_SUCCESS);
}
public boolean hasMoney(FPlayer fme, int amt) {

View File

@@ -37,6 +37,9 @@ public class CmdCheckpoint extends FCommand {
fme.getFaction().setCheckpoint(fme.getPlayer().getLocation());
fme.msg(TL.COMMAND_CHECKPOINT_SET);
return;
} else {
fme.msg(TL.COMMAND_CHECKPOINT_INVALIDLOCATION);
return;
}
}
if (fme.getFaction().getCheckpoint() == null) {
@@ -48,16 +51,16 @@ public class CmdCheckpoint extends FCommand {
if (checkfaction.getId().equals(Factions.getInstance().getWilderness().getId()) || checkfaction.getId().equals(fme.getFaction().getId())) {
fme.msg(TL.COMMAND_CHECKPOINT_GO);
fme.getPlayer().teleport(fme.getFaction().getCheckpoint());
this.doWarmUp(WarmUpUtil.Warmup.CHECKPOINT, TL.WARMUPS_NOTIFY_TELEPORT, "Checkpoint", new Runnable() {
@Override
public void run() {
fme.getPlayer().teleport(fme.getFaction().getCheckpoint());
}
}, this.p.getConfig().getLong("warmups.f-checkpoint", 0));
} else {
fme.msg(TL.COMMAND_CHECKPOINT_CLAIMED);
}
this.doWarmUp(WarmUpUtil.Warmup.CHECKPOINT, TL.WARMUPS_NOTIFY_TELEPORT, "Checkpoint", new Runnable() {
@Override
public void run() {
}
}, this.p.getConfig().getLong("warmups.f-checkpoint", 10));
}

View File

@@ -3,13 +3,13 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.*;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Relation;
import com.massivecraft.factions.util.Particle.ParticleEffect;
import com.massivecraft.factions.util.WarmUpUtil;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.inventivetalent.particle.ParticleEffect;
import java.util.HashMap;
import java.util.Iterator;
@@ -168,7 +168,8 @@ public class CmdFly extends FCommand {
if (!player.isFlying()){
continue;
}
ParticleEffect.CLOUD.display((float) 0.1,(float) 0.1,(float) 0.1,(float) 0.1,3,player.getLocation(),32);
ParticleEffect.CLOUD.send(Bukkit.getOnlinePlayers(), player.getLocation().add(0, -0.35, 0), 0, 0, 0, 0, 3, 16);
}
if (flyMap.keySet().size() == 0){
@@ -176,7 +177,7 @@ public class CmdFly extends FCommand {
id = -1;
}
}
},20L,40L);
}, 10L, 10L);
}
public void startFlyCheck(){

View File

@@ -33,17 +33,23 @@ public class CmdGetVault extends FCommand {
Location vaultLocation = fme.getFaction().getVault();
ItemStack vault = P.p.createItem(Material.CHEST, 1, (short) 0, P.p.color(P.p.getConfig().getString("fvault.Item.Name")), P.p.colorList(P.p.getConfig().getStringList("fvault.Item.Lore")));
if (inventoryContains(me.getInventory(), vault)) {
fme.msg(TL.COMMAND_GETVAULT_ALREADYHAVE);
return;
}
//check if vault is set
if (vaultLocation != null) {
fme.msg(TL.COMMAND_GETVAULT_ALREADYSET);
return;
}
//has enough money?
int amount = P.p.getConfig().getInt("fvault.Price");
if (!fme.hasMoney(amount)) {
return;
}
//success :)
fme.takeMoney(amount);
me.getInventory().addItem(vault);
fme.msg(TL.COMMAND_GETVAULT_RECEIVE);

View File

@@ -2,22 +2,35 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FLocation;
import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.util.Particle.ParticleEffect;
import com.massivecraft.factions.util.VisualizeUtil;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.inventivetalent.particle.ParticleEffect;
import java.util.logging.Level;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
public class CmdSeeChunk extends FCommand {
private boolean useParticles;
private int length;
private ParticleEffect effect;
//Used a hashmap cuz imma make a particle selection gui later, will store it where the boolean is rn.
public static HashMap<String, Boolean> seeChunkMap = new HashMap<>();
Long interval = 10L;
private int taskID = -1;
//I remade it cause of people getting mad that I had the same seechunk as drtshock
public CmdSeeChunk() {
super();
@@ -32,18 +45,50 @@ public class CmdSeeChunk extends FCommand {
senderMustBeAdmin = false;
this.useParticles = p.getConfig().getBoolean("see-chunk.particles", true);
this.length = p.getConfig().getInt("see-chunk.length", 10);
String effectName = p.getConfig().getString("see-chunk.particle", "BARRIER");
this.effect = ParticleEffect.fromName(effectName.toUpperCase());
if (this.effect == null) {
this.effect = ParticleEffect.BARRIER;
}
p.log(Level.INFO, "Using %s as the ParticleEffect for /f sc", effect.getName());
interval = P.p.getConfig().getLong("see-chunk.interval", 10L);
effect = ParticleEffect.valueOf(P.p.getConfig().getString("see-chunk.particle", "REDSTONE"));
}
@Override
public void perform() {
if (seeChunkMap.containsKey(me.getName())) {
seeChunkMap.remove(me.getName());
msg(TL.COMMAND_SEECHUNK_DISABLED);
} else {
seeChunkMap.put(me.getName(), true);
msg(TL.COMMAND_SEECHUNK_ENABLED);
manageTask();
}
}
private void manageTask() {
if (taskID != -1) {
if (seeChunkMap.keySet().size() == 0) {
Bukkit.getScheduler().cancelTask(taskID);
taskID = -1;
}
} else {
startTask();
}
}
private void startTask() {
taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(P.p, new Runnable() {
@Override
public void run() {
Iterator itr = seeChunkMap.keySet().iterator();
while (itr.hasNext()) {
Object nameObject = itr.next();
String name = nameObject + "";
Player player = Bukkit.getPlayer(name);
showBorders(player);
}
manageTask();
}
}, 0, interval);
}
private void showBorders(Player me) {
World world = me.getWorld();
FLocation flocation = new FLocation(me);
int chunkX = (int) flocation.getX();
@@ -70,14 +115,16 @@ public class CmdSeeChunk extends FCommand {
}
private void showPillar(Player player, World world, int blockX, int blockZ) {
List<Player> onePlayer = Arrays.asList(player);
for (int blockY = 0; blockY < player.getLocation().getBlockY() + 30; blockY++) {
Location loc = new Location(world, blockX, blockY, blockZ);
Location loc = new Location(world, blockX, blockY, blockZ).add(0.5, 0, 0.5);
if (loc.getBlock().getType() != Material.AIR) {
continue;
}
if (useParticles) {
this.effect.display(0, 0, 0, 10, 1, loc, player);
//api didnt seem to have anything for a single player, so I used a one player list :P
effect.send(onePlayer, loc, 0, 0, 0, 0, 1, 50);
} else {
int typeId = blockY % 5 == 0 ? Material.REDSTONE_LAMP_ON.getId() : Material.STAINED_GLASS.getId();
VisualizeUtil.addLocation(player, loc, typeId);