Package com.sk89q.craftbook.mechanics.minecart

Source Code of com.sk89q.craftbook.mechanics.minecart.TemporaryCart

package com.sk89q.craftbook.mechanics.minecart;

import java.util.HashSet;
import java.util.Set;

import org.bukkit.Bukkit;
import org.bukkit.entity.minecart.RideableMinecart;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.vehicle.VehicleExitEvent;

import com.sk89q.craftbook.AbstractCraftBookMechanic;
import com.sk89q.craftbook.LocalPlayer;
import com.sk89q.craftbook.bukkit.CraftBookPlugin;
import com.sk89q.craftbook.util.BlockUtil;
import com.sk89q.craftbook.util.EventUtil;
import com.sk89q.craftbook.util.RailUtil;
import com.sk89q.util.yaml.YAMLProcessor;

public class TemporaryCart extends AbstractCraftBookMechanic {

    private Set<RideableMinecart> minecarts = new HashSet<RideableMinecart>();

    public Set<RideableMinecart> getMinecarts() {

        return minecarts;
    }

    @Override
    public void disable() {

        for(RideableMinecart minecart : minecarts) {
            minecart.remove();
        }
    }

    @EventHandler(priority = EventPriority.HIGH)
    public void onPlayerInteract(PlayerInteractEvent event) {

        if(event.getAction() != Action.RIGHT_CLICK_BLOCK) return;

        if(!RailUtil.isTrack(event.getClickedBlock().getType()))
            return;

        LocalPlayer player = CraftBookPlugin.inst().wrapPlayer(event.getPlayer());

        if(player.isHoldingBlock() || player.isInsideVehicle() || player.isSneaking()) return;
        if(player.getHeldItemInfo().getType().name().contains("MINECART")) return;

        if(!EventUtil.passesFilter(event))
            return;

        if(!player.hasPermission("craftbook.vehicles.temporary-cart.use")) {
            if(CraftBookPlugin.inst().getConfiguration().showPermissionMessages)
                player.printError("mech.create-permission");
            return;
        }

        RideableMinecart cart = event.getClickedBlock().getWorld().spawn(BlockUtil.getBlockCentre(event.getClickedBlock()), RideableMinecart.class);
        minecarts.add(cart);
        cart.setPassenger(event.getPlayer());
    }

    @EventHandler(priority = EventPriority.LOWEST)
    public void onPlayerDismount(final VehicleExitEvent event) {

        if(!(event.getVehicle() instanceof RideableMinecart)) return;

        if(!EventUtil.passesFilter(event))
            return;

        if(!minecarts.contains(event.getVehicle())) return;

        Bukkit.getScheduler().runTaskLater(CraftBookPlugin.inst(), new Runnable() {
            @Override
            public void run () {
                event.getVehicle().remove();
            }
        }, 2L);
    }

    @Override
    public void loadConfiguration (YAMLProcessor config, String path) {

    }
}
TOP

Related Classes of com.sk89q.craftbook.mechanics.minecart.TemporaryCart

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.