2014-10-19 23:04:27 +02:00
|
|
|
package com.massivecraft.factions.cmd;
|
|
|
|
|
2018-03-27 01:42:26 +02:00
|
|
|
|
2014-10-19 23:04:27 +02:00
|
|
|
import com.massivecraft.factions.FLocation;
|
|
|
|
import com.massivecraft.factions.struct.Permission;
|
2018-03-27 01:42:26 +02:00
|
|
|
import com.massivecraft.factions.util.Particle.ParticleEffect;
|
2014-10-19 23:04:27 +02:00
|
|
|
import com.massivecraft.factions.util.VisualizeUtil;
|
2015-01-22 00:58:33 +01:00
|
|
|
import com.massivecraft.factions.zcore.util.TL;
|
2014-10-19 23:04:27 +02:00
|
|
|
import org.bukkit.Location;
|
|
|
|
import org.bukkit.Material;
|
|
|
|
import org.bukkit.World;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
|
2018-03-26 23:43:15 +02:00
|
|
|
import java.util.logging.Level;
|
|
|
|
|
2014-10-19 23:04:27 +02:00
|
|
|
public class CmdSeeChunk extends FCommand {
|
|
|
|
|
2018-03-26 23:43:15 +02:00
|
|
|
private boolean useParticles;
|
|
|
|
private int length;
|
|
|
|
private ParticleEffect effect;
|
|
|
|
|
2014-10-19 23:04:27 +02:00
|
|
|
public CmdSeeChunk() {
|
|
|
|
super();
|
|
|
|
aliases.add("seechunk");
|
|
|
|
aliases.add("sc");
|
|
|
|
|
|
|
|
permission = Permission.SEECHUNK.node;
|
|
|
|
|
|
|
|
senderMustBePlayer = true;
|
|
|
|
senderMustBeMember = false;
|
|
|
|
senderMustBeModerator = false;
|
|
|
|
senderMustBeAdmin = false;
|
2018-03-26 23:43:15 +02:00
|
|
|
|
|
|
|
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());
|
2014-10-19 23:04:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void perform() {
|
|
|
|
World world = me.getWorld();
|
|
|
|
FLocation flocation = new FLocation(me);
|
|
|
|
int chunkX = (int) flocation.getX();
|
|
|
|
int chunkZ = (int) flocation.getZ();
|
|
|
|
|
|
|
|
int blockX;
|
|
|
|
int blockZ;
|
|
|
|
|
2014-11-06 01:36:47 +01:00
|
|
|
blockX = chunkX * 16;
|
|
|
|
blockZ = chunkZ * 16;
|
2014-10-19 23:04:27 +02:00
|
|
|
showPillar(me, world, blockX, blockZ);
|
|
|
|
|
2014-11-06 01:36:47 +01:00
|
|
|
blockX = chunkX * 16 + 15;
|
|
|
|
blockZ = chunkZ * 16;
|
2014-10-19 23:04:27 +02:00
|
|
|
showPillar(me, world, blockX, blockZ);
|
|
|
|
|
2014-11-06 01:36:47 +01:00
|
|
|
blockX = chunkX * 16;
|
|
|
|
blockZ = chunkZ * 16 + 15;
|
2014-10-19 23:04:27 +02:00
|
|
|
showPillar(me, world, blockX, blockZ);
|
|
|
|
|
2014-11-06 01:36:47 +01:00
|
|
|
blockX = chunkX * 16 + 15;
|
|
|
|
blockZ = chunkZ * 16 + 15;
|
2014-10-19 23:04:27 +02:00
|
|
|
showPillar(me, world, blockX, blockZ);
|
|
|
|
}
|
|
|
|
|
2018-03-26 23:43:15 +02:00
|
|
|
private void showPillar(Player player, World world, int blockX, int blockZ) {
|
2014-10-20 19:06:47 +02:00
|
|
|
for (int blockY = 0; blockY < player.getLocation().getBlockY() + 30; blockY++) {
|
2014-10-19 23:04:27 +02:00
|
|
|
Location loc = new Location(world, blockX, blockY, blockZ);
|
2014-11-06 01:36:47 +01:00
|
|
|
if (loc.getBlock().getType() != Material.AIR) {
|
|
|
|
continue;
|
|
|
|
}
|
2018-03-26 23:43:15 +02:00
|
|
|
|
|
|
|
if (useParticles) {
|
|
|
|
this.effect.display(0, 0, 0, 10, 1, loc, player);
|
|
|
|
} else {
|
|
|
|
int typeId = blockY % 5 == 0 ? Material.REDSTONE_LAMP_ON.getId() : Material.STAINED_GLASS.getId();
|
|
|
|
VisualizeUtil.addLocation(player, loc, typeId);
|
|
|
|
}
|
2014-10-19 23:04:27 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-22 00:58:33 +01:00
|
|
|
@Override
|
|
|
|
public TL getUsageTranslation() {
|
|
|
|
return TL.GENERIC_PLACEHOLDER;
|
|
|
|
}
|
|
|
|
|
2018-03-26 23:43:15 +02:00
|
|
|
}
|