类org.bukkit.entity.minecart.StorageMinecart源码实例Demo

下面列出了怎么用org.bukkit.entity.minecart.StorageMinecart的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Modern-LWC   文件: LWCPlayerListener.java
@EventHandler
public void minecartBreak(VehicleDestroyEvent e) {
    Entity entity = e.getVehicle();
    if (plugin.getLWC().isProtectable(e.getVehicle().getType())) {
        int A = 50000 + entity.getUniqueId().hashCode();
        LWC lwc = LWC.getInstance();
        Protection protection = lwc.getPhysicalDatabase().loadProtection(entity.getWorld().getName(), A, A, A);
        if ((((entity instanceof StorageMinecart)) || ((entity instanceof HopperMinecart)))
                && (protection != null)) {
            if (e.getAttacker() instanceof Projectile) {
                e.setCancelled(true);
            }
            Player p = (Player) e.getAttacker();
            boolean canAccess = lwc.canAccessProtection(p, protection);
            if (canAccess) {
                protection.remove();
                protection.removeAllPermissions();
                protection.removeCache();
                return;
            }
            e.setCancelled(true);
        }
    }
}
 
源代码2 项目: Modern-LWC   文件: LWCPlayerListener.java
@EventHandler
public void storageMinecraftInventoryOpen(InventoryOpenEvent event) {
    InventoryHolder holder = event.getInventory().getHolder();
    Player player = (Player) event.getPlayer();
    if ((!(holder instanceof StorageMinecart)) && (!(holder instanceof HopperMinecart))) {
        return;
    }
    Entity entity = (Entity) holder;
    if (plugin.getLWC().isProtectable(entity.getType())) {
        if (!plugin.getLWC().hasPermission(player, "lwc.protect")
                && plugin.getLWC().hasPermission(player, "lwc.deny") && !plugin.getLWC().isAdmin(player)
                && !plugin.getLWC().isMod(player)) {
            plugin.getLWC().sendLocale(player, "protection.interact.error.blocked");
            event.setCancelled(true);
            return;
        }
        if (onPlayerEntityInteract((Player) event.getPlayer(), entity, event.isCancelled())) {
            event.setCancelled(true);
        }
    }
}
 
源代码3 项目: Modern-LWC   文件: LWCPlayerListener.java
@EventHandler
public void itemFrameItemRemoval(EntityDamageByEntityEvent e) {
    if (e.isCancelled())
        return;
    Entity entity = e.getEntity();
    if (plugin.getLWC().isProtectable(e.getEntity().getType())) {
        int A = 50000 + entity.getUniqueId().hashCode();
        LWC lwc = LWC.getInstance();
        Protection protection = lwc.getPhysicalDatabase().loadProtection(entity.getWorld().getName(), A, A, A);
        if (!(entity instanceof Player)) {
            if (e.getDamager() instanceof Projectile) {
                if (protection != null) {
                    e.setCancelled(true);
                }
                if ((((entity instanceof StorageMinecart)) || ((entity instanceof HopperMinecart)))
                        && (protection != null)) {
                    e.setCancelled(true);
                }
            }
            if (e.getDamager() instanceof Player) {
                Player p = (Player) e.getDamager();
                if (protection != null && !lwc.canAccessProtection(p, protection)) {
                    e.setCancelled(true);
                }
                if (p.hasPermission("lwc.lockentity." + e.getEntityType())
                        || p.hasPermission("lwc.lockentity.all")) {
                    if (onPlayerEntityInteract(p, entity, e.isCancelled())) {
                        e.setCancelled(true);
                    }
                }
                if ((((entity instanceof StorageMinecart)) || ((entity instanceof HopperMinecart)))
                        && (protection != null)) {
                    e.setCancelled(true);
                }
            }
        }
    }
}
 
源代码4 项目: Civs   文件: ConveyorEffect.java
@EventHandler
public void onChunkLoad(ChunkLoadEvent event) {
    Chunk chunk = event.getChunk();
    for (Region r : new HashMap<>(orphanCarts).keySet()) {
        StorageMinecart sm = orphanCarts.get(r);
        if (Util.isWithinChunk(chunk, sm.getLocation())) {
            carts.put(r, sm);
            orphanCarts.remove(r);
        }
    }
}
 
源代码5 项目: Civs   文件: ConveyorEffect.java
@EventHandler
public void onChunkUnload(ChunkUnloadEvent event) {
    Chunk chunk = event.getChunk();
    for (Region r : new HashMap<>(carts).keySet()) {
        StorageMinecart sm = carts.get(r);
        if (Util.isWithinChunk(chunk, sm.getLocation())) {
            carts.remove(r);
            orphanCarts.put(r, sm);
        }
    }
}
 
源代码6 项目: Civs   文件: ConveyorEffect.java
private void returnCart(Region region, boolean removeFromCarts) {
    if (!carts.containsKey(region)) {
        return;
    }
    StorageMinecart sm = carts.get(region);
    try {
        CVInventory returnInventory = UnloadedInventoryHandler.getInstance().getChestInventory(region.getLocation());
        if (returnInventory.firstEmpty() > -1) {
            returnInventory.addItem(new ItemStack(Material.CHEST_MINECART));
        } else {
            returnInventory.setItem(returnInventory.getSize() - 1,
                    new ItemStack(Material.CHEST_MINECART));
        }

        for (ItemStack itemStack : sm.getInventory()) {
            if (returnInventory.firstEmpty() < 0) {
                break;
            }
            if (itemStack == null || itemStack.getType() == Material.AIR) {
                continue;
            }
            returnInventory.addItem(itemStack);
        }
        sm.getInventory().clear();
        sm.remove();
    } catch (Exception e) {
        e.printStackTrace();
    }
    if (removeFromCarts) {
        carts.remove(region);
    }
}
 
源代码7 项目: Civs   文件: ConveyorEffect.java
public void onDisable() {
    disabled = true;
    HashMap<Region, StorageMinecart> tempCarts = new HashMap<>(carts);
    for (Region region : tempCarts.keySet()) {
        returnCart(region, true);
    }
}
 
源代码8 项目: Modern-LWC   文件: StoreageMinecartBlock.java
public StoreageMinecartBlock(StorageMinecart minecart) {
    super(minecart);
    this.minecart = minecart;
}
 
源代码9 项目: Modern-LWC   文件: StoreageMinecartBlock.java
public StorageMinecart getMinecart() {
    return this.minecart;
}
 
源代码10 项目: Civs   文件: ConveyorEffect.java
private void handleExistingCarts(Region r) {
        if (!carts.containsKey(r)) {
            return;
        }

        StorageMinecart sm = carts.get(r);
        if (sm.isDead()) {
            carts.remove(r);
            return;
        }
        if (!sm.isValid() && !Util.isChunkLoadedAt(sm.getLocation())) {
            carts.remove(r);
            orphanCarts.put(r, sm);
            return;
        }

//        if (!Util.isLocationWithinSightOfPlayer(sm.getLocation())) {
//            returnCart(r, true);
//            return;
//        }

        Region region = RegionManager.getInstance().getRegionAt(sm.getLocation());
        if (region == null || region.equals(r)) {
            return;
        }

        CVInventory destinationInventory = UnloadedInventoryHandler.getInstance().getChestInventory(region.getLocation());
        HashSet<ItemStack> cartInventory = new HashSet<>(Arrays.asList(sm.getInventory().getContents()));

        CVInventory originInv = UnloadedInventoryHandler.getInstance().getChestInventory(carts.get(r).getLocation());
        boolean isDestinationChestFull = false;
        for (ItemStack is : cartInventory) {
            if (is == null || is.getType() == Material.AIR) {
                continue;
            }
            try {
                if (!isDestinationChestFull) {
                    if (destinationInventory.firstEmpty() < 0) {
                        isDestinationChestFull = true;
                        if (originInv == null || originInv.firstEmpty() < 0) {
                            break;
                        } else {
                            originInv.addItem(is);
                            sm.getInventory().removeItem(is);
                        }
                    }
                    if (ConfigManager.getInstance().isDebugLog()) {
                        DebugLogger.inventoryModifications++;
                    }
                    sm.getInventory().removeItem(is);
                    destinationInventory.addItem(is);
                    RegionManager.getInstance().removeCheckedRegion(region);
                } else {
                    sm.getInventory().removeItem(is);
                    if (ConfigManager.getInstance().isDebugLog()) {
                        DebugLogger.inventoryModifications++;
                    }
                    originInv.addItem(is);
                }
            } catch (NullPointerException npe) {
                npe.printStackTrace();
                break;
            }
        }
        returnCart(r, false);
        carts.remove(r);
        if (!cacheDestinationRegions.containsKey(r)) {
            cacheDestinationRegions.put(r, region);
        }
    }
 
 类所在包
 类方法
 同包方法