.getType().getId() doesn't detect 1.9 blocks!

Discussion in 'Plugin Development' started by remcodemah, Mar 10, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    remcodemah

    in my code the .getType().getId() doesn't detect 1.9 blocks and above!

    Code:

    Code:
    package nl.rpsonline.remcodemah.itemdetector;
     
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.block.BlockState;
    import org.bukkit.block.Sign;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Vehicle;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerMoveEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.util.Vector;
     
    /*Permission nodes
    *
    * -.create.block
    * -.create.remove
    * -.create.pit
    * -.create.damage
    * -.create.launch
    * -.create.fire
    * -.create.kill
    * -.create.thunder
    */
     
    public class playerListener implements Listener {
     
        @EventHandler
        public void onPlayerMove(PlayerMoveEvent event) {
            Player p = event.getPlayer();       
            Block b = p.getEyeLocation().getBlock();
            boolean matches = false;
            Detector det = null;
            for (Detector d : core.detectors){
                if (d.getOpenBlock().getX() == b.getX()) {
                if (d.getOpenBlock().getY() == b.getY()) {
                if (d.getOpenBlock().getZ() == b.getZ()) {
                    matches = true;
                    det = d;
                }}}
            }
            if (!matches) { return; }
            //check if gate is intact
            if (!signListener.detectFrame(det.getBlock(), "north") && !signListener.detectFrame(det.getBlock(), "south")) {
                p.sendMessage("It seems the gate is destroyed, removing from data");
                core.detectors.remove(det);
                return;
            }
     
            //check items
            boolean hasContent = false;
            if (!det.isCheckingHold()) {
                for (ItemStack s : p.getInventory().getContents()) {
                    if (s != null) {
                        if (det.isDetecting(s.getType().getId()) && !det.isLimited() && !det.isCheckingNone()) { hasContent = true; }
                        if (!det.isDetecting(s.getType().getId()) && det.isLimited() && !det.isCheckingNone()) { hasContent = true; }
                        if (det.isCheckingNone() && s.getType().getId() != 0) { hasContent = true; }
                    }
                }
                for (ItemStack s : p.getInventory().getArmorContents()) {
                    if (s != null) {
                        if (det.isDetecting(s.getType().getId()) && !det.isLimited() && !det.isCheckingNone()) { hasContent = true; }
                        if (!det.isDetecting(s.getType().getId()) && det.isLimited() && !det.isCheckingNone()) { hasContent = true; }
                        if (det.isCheckingNone() && s.getType().getId() != 0) { hasContent = true; }
                    }
                }
            }
            if (det.isCheckingHold()) {
                ItemStack s = p.getItemInHand();
                if (det.isDetecting(s.getType().getId()) && !det.isLimited() && !det.isCheckingNone()) { hasContent = true; }
                if (!det.isDetecting(s.getType().getId()) && det.isLimited() && !det.isCheckingNone()) { hasContent = true; }
                if (det.isCheckingNone() && s.getType().getId() != 0) { hasContent = true; }
            }
     
            if (det.isCheckingNone()) { hasContent = !hasContent; }
            if (det.isAlways()) { hasContent = true; }
     
            //handle gate options
            if (det.isBlocking() && hasContent && !event.getPlayer().isInsideVehicle()) {
                BlockState state = det.getBlock().getState();
                if (state instanceof Sign) {
                    Sign sign = (Sign)state;
                    Location newto = sign.getBlock().getLocation();
                    newto.setY(newto.getY() - 3);
                    newto.setX(newto.getX() + 0.5);
                    newto.setZ(newto.getZ() + 0.5);
                    if (sign.getData().getData() == 0) { newto.setZ(newto.getZ() + 2); newto.setYaw(0); }
                    if (sign.getData().getData() == 4) { newto.setX(newto.getX() - 2); newto.setYaw(270); }
                    if (sign.getData().getData() == 8) { newto.setZ(newto.getZ() - 2); newto.setYaw(180); }
                    if (sign.getData().getData() == 12) { newto.setX(newto.getX() + 2); newto.setYaw(90);  }
     
     
                    event.getPlayer().teleport(newto);
                    event.setCancelled(true);
                    event.setTo(newto);
                    if (settings.getText(24).length() >= 1) {
                        event.getPlayer().sendMessage(settings.getText(24));
                    }
                }
            }
            if (det.isBlocking() && hasContent && event.getPlayer().isInsideVehicle()) {
                Vehicle veh = event.getPlayer().getVehicle();
                Vector newvelo = veh.getVelocity();
                newvelo.setX(newvelo.getX() - (newvelo.getX() * 2));
                newvelo.setZ(newvelo.getZ() - (newvelo.getZ() * 2));
                veh.setVelocity(newvelo.multiply(0.3));
                if (settings.getText(24).length() >= 1 && det.getMessage().length() <= 1) {
                    if ((int)event.getFrom().getX() != (int)event.getTo().getX()) {   
                        event.getPlayer().sendMessage(settings.getText(24));
                    }
                }
            }
            if (det.isRemoving() && hasContent) {
                //if (!core.hasPermission(event.getPlayer(), "itemdetector.ignore.remove", false)) {
                    for (int i : det.getBlocks()) {
                        if (((i >= 0) && (i <= 124)) || ((i >= 256) && (i <= 384)) || i == 2256 || i == 2257 || i == 2258 || i == 2259 || i == 2260 || i == 2261 || i == 2262 || i == 2263 || i == 2264 || i == 2265 || i == 2266) {
                            if (event.getPlayer().getInventory().contains(i)) {
                                event.getPlayer().getInventory().remove(Material.getMaterial(i));
                            }
                        }
                    }
                    if (settings.getText(25).length() >= 1 && det.getMessage().length() <= 1) {
                        if ((int)event.getFrom().getX() != (int)event.getTo().getX()) {   
                            event.getPlayer().sendMessage(settings.getText(25));
                        }
                    }
                //}
            }
            if (det.isRepairing() && hasContent) {
                for (ItemStack s : event.getPlayer().getInventory().getContents()) {
                    if (s == null) { continue; }
                    if (!det.isDetecting(s.getTypeId())) { continue; }
                    if (s.getDurability() > 0) {
                        s.setDurability((short)0);
                        event.getPlayer().getInventory().setItem(event.getPlayer().getInventory().first(s),s);
                    }
                }
            }
            if (det.isHealing() && hasContent) {
                event.getPlayer().setFireTicks(0);
                event.getPlayer().setHealth(20);
            }
            if (det.isEating() && hasContent) {
                event.getPlayer().setFoodLevel(20);
            }
            if (det.isThundering() && hasContent) {
                event.getPlayer().getWorld().strikeLightning(event.getPlayer().getLocation());
            }
            if (det.isKilling() && hasContent) {
                //if (!core.hasPermission(event.getPlayer(), "itemdetector.ignore.kill", false)) {
                    event.getPlayer().damage(200);
                //}
            }
            if (det.isBurning() && hasContent) {
                //if (!core.hasPermission(event.getPlayer(), "itemdetector.ignore.fire", false)) {
                    if (event.getPlayer().getFireTicks() <= 10) {
                        event.getPlayer().setFireTicks(settings.getFireTicks() * 20);
                    }
                //}
            }
            if (det.isDamaging() && hasContent) {
                //if (!core.hasPermission(event.getPlayer(), "itemdetector.ignore.damage", false)) {
                    event.getPlayer().damage(settings.getDamage() * 2);
                //}
            }
            if (det.isPitfall() && hasContent) {
                new PitFall(det);
            }
            if (det.isLaunching() && hasContent && !event.getPlayer().isInsideVehicle()) {
                Location ploc = p.getLocation().clone();
                Vector speed = p.getVelocity();
                speed.setX(0); speed.setZ(0);
                Vector add = new Vector(ploc.getDirection().getX() * 10, 0, ploc.getDirection().getZ() * 10.0).normalize();   
                speed = speed.add(add.multiply(settings.getLaunchSpeed()));
                p.setVelocity(speed);
            }
            if (det.isLaunching() && hasContent && event.getPlayer().isInsideVehicle()) {
                event.getPlayer().getVehicle().setVelocity(p.getVehicle().getVelocity().multiply(settings.getLaunchSpeed()));
            }
            if ((det.getMessage().length() >= 1) && (hasContent) && (
                ((int)event.getFrom().getX() != (int)event.getTo().getX()) ||
                ((int)event.getFrom().getZ() != (int)event.getTo().getZ()))) {
                event.getPlayer().sendMessage(det.getMessage());
            }
            det.setTorchId(hasContent);
        }
     
    }
    it work fine for 1.8.1 and below items
     
  2. Offline

    Milkywayz

    I read your code. And I'm totally lost. Your code is too... "personal", like you see and understand, others are like ?!?!?. Sorry i couldn't help
     
Thread Status:
Not open for further replies.

Share This Page