package freezethem;
import java.util.HashMap;
import java.util.List;
import net.canarymod.Canary;
import net.canarymod.api.etity.Entity;
import net.canarymod.api.entity.EntityType;
import net.canarymod.api.entity.living.EntityLiving;
import net.canarymod.api.entity.living.humanoid.Player;
import net.canarymod.api.factory.PotionFactory;
import net.canarymod.api.inventory.ItemType;
import net.canarymod.api.potion.PotionEffect;
import net.canarymod.api.potion.PotionEffectType;
import net.canarymod.api.world.effects.ParticleType;
import net.canarymod.api.world.effects.Particle;
import net.canarymod.api.world.effects.SoundEffect;
import net.canarymod.world.position.Location;
import net.canarymod.chat.MessageReceiver;
import net.canarymod.commandsys.*;
import net.canarymod.hook.HookHandler;
import net.canarymod.hook.player.ItemUseHook;
import net.canarymod.logger.Logman;
import net.canarymod.plugin.Plugin;
public class LocationSave extends Plugin implements CommandListener {
public static Logman logger;
public LocationSave() {
logger = getLogman();
}
@Override
public boolean enable() {
logger.info("Starting up");
try {
Canary.commands().registerCommands(this, this, false);
} catch (CommandDependencyException e) {
logger.error("Duplicate command name");
}
return true;
}
@Override
public void disable() {
}
HashMap<Boolean, String> hashStatus = new HashMap<Boolean, String>();
@Command(aliases = { "freeze" },
description = "Schaltet Frostnova an/aus.",
permissions = { "" },
min = 2,
toolTip = "/freeze true|false")
public void freezeCommand(MessageReceiver caller, String[] args) {
if (caller instanceof Player) {
String status = hashStatus.get("Freeze");
if (status = null) {
Boolean modeA = args[1];
hashStatus.put(modeA, "Freeze");
} else {
hashStatus.remove("Freeze");
Boolean modeB = args[1];
hashStatus.put(modeB, "Freeze");
}
if (hashStatus.get("Freeze") = true) {
String msgt = "Frostnova ist nun aktiviert.";
Canary.instance().getServer().broadcastMessage(msgt);
} else {
String msgf = "Frostnova ist nun deaktiviert.";
Canary.instance().getServer().broadcastMessage(msgf);
}
}
Boolean actual = hashStatus.get("Freeze");
if (actual != null && actual = true) {
@HookHandler
public void onInteract (ItemUseHook event) {
Player player = event.getPlayer();
if (player.getItemHeld().getType() == ItemType.Diamond) {
Location loc = player.getLocation();
playSound(loc, SoundEffect.Type.GLASS_BREAK);
int playerX = (int) loc.getX();
int playerY = (int) loc.getY();
int playerZ = (int) loc.getZ();
int[][] offsets = {
{1, 0, -1},
{1, 0, 0},
{1, 0, 1},
{0, 0, -1},
{0, 0, 1},
{-1, 0, -1},
{-1, 0, 0},
{-1, 0, 1},
};
for (int i=0; i < offsets.lenght; i++) {
int x = offsets[i][0];
int y = offsets[i][1];
int z = offsets[i][2];
spawnParticle(new Location(x + playerX, y + playerY, z + playerZ), Particle.Type.ICE_DUST);
}
List<EntityLiving> list = player.getWorld().getEntityLivingList();
for (EntityLiving target : list) {
if (target != player) {
Potion factory potfact = Canary.getFactory().getPotionFactory();
PotionEffect potion = potfact.newPotionEffect(PotionEffectType.SLOWNESS, Integer.100, 127);
target.addPotionEffect(potion);
}
}
}
}
}
}