Search in sources :

Example 1 with Item

use of org.spongepowered.api.entity.Item in project Skree by Skelril.

the class CursedMineListener method onItemDrop.

@Listener
public void onItemDrop(DropItemEvent.Destruct event, @Named(NamedCause.SOURCE) BlockSpawnCause spawnCause, @Named(NamedCause.NOTIFIER) Player player) {
    if (!Probability.getChance(4)) {
        return;
    }
    BlockSnapshot blockSnapshot = spawnCause.getBlockSnapshot();
    Optional<Location<World>> optLocation = blockSnapshot.getLocation();
    if (!optLocation.isPresent()) {
        return;
    }
    Location<World> loc = optLocation.get();
    Optional<CursedMineInstance> optInst = manager.getApplicableZone(loc);
    if (!optInst.isPresent()) {
        return;
    }
    CursedMineInstance inst = optInst.get();
    if (!inst.hasrecordForPlayerAt(player, loc)) {
        return;
    }
    List<ItemStackSnapshot> itemStacks = new ArrayList<>();
    Iterator<Entity> entityIterator = event.getEntities().iterator();
    while (entityIterator.hasNext()) {
        Entity entity = entityIterator.next();
        if (entity instanceof Item) {
            ItemStackSnapshot snapshot = ((Item) entity).item().get();
            itemStacks.add(snapshot);
            entityIterator.remove();
        }
    }
    int times = 1;
    Optional<ModifierService> optService = Sponge.getServiceManager().provide(ModifierService.class);
    if (optService.isPresent()) {
        ModifierService service = optService.get();
        if (service.isActive(Modifiers.DOUBLE_CURSED_ORES)) {
            times *= 2;
        }
    }
    for (ItemStackSnapshot stackSnapshot : itemStacks) {
        int quantity = Math.min(stackSnapshot.getCount() * Probability.getRangedRandom(4, 8), stackSnapshot.getType().getMaxStackQuantity());
        for (int i = 0; i < times; ++i) {
            ItemStack stack = stackSnapshot.createStack();
            stack.setQuantity(quantity);
            player.getInventory().offer(stack);
        }
    }
}
Also used : Entity(org.spongepowered.api.entity.Entity) BlockSnapshot(org.spongepowered.api.block.BlockSnapshot) ModifierService(com.skelril.skree.service.ModifierService) World(org.spongepowered.api.world.World) Item(org.spongepowered.api.entity.Item) ItemStackSnapshot(org.spongepowered.api.item.inventory.ItemStackSnapshot) ItemStack(org.spongepowered.api.item.inventory.ItemStack) Location(org.spongepowered.api.world.Location) Listener(org.spongepowered.api.event.Listener)

Example 2 with Item

use of org.spongepowered.api.entity.Item in project Skree by Skelril.

the class FixedPointItemDropper method dropItem.

@Override
public void dropItem(ItemStackSnapshot snapshot, Cause cause) {
    Item item = (Item) getExtent().createEntity(EntityTypes.ITEM, getPos());
    item.offer(Keys.REPRESENTED_ITEM, snapshot);
    item.setVelocity(new Vector3d(0, 0, 0));
    getExtent().spawnEntity(item, cause);
}
Also used : Item(org.spongepowered.api.entity.Item) Vector3d(com.flowpowered.math.vector.Vector3d)

Example 3 with Item

use of org.spongepowered.api.entity.Item in project Skree by Skelril.

the class ItemDropper method dropItem.

public void dropItem(ItemStackSnapshot snapshot, Cause cause) {
    Item item = (Item) getExtent().createEntity(EntityTypes.ITEM, getPos());
    item.offer(Keys.REPRESENTED_ITEM, snapshot);
    getExtent().spawnEntity(item, cause);
}
Also used : Item(org.spongepowered.api.entity.Item)

Example 4 with Item

use of org.spongepowered.api.entity.Item in project ClearMob by axle2005.

the class ClearEntity method run.

public static void run(ClearMob plugin, EntityType tile, Collection<World> worlds, CommandSource src) {
    int removedentities = 0;
    Collection<Entity> e = new ArrayList<Entity>();
    for (World world : worlds) {
        for (Entity entity : world.getEntities()) {
            e.add(entity);
        }
    }
    if (!e.isEmpty()) {
        for (Entity entity : e) {
            if (!(entity instanceof Item) && !(entity instanceof Player) && !(entity instanceof ExperienceOrb)) {
                if ((entity.getType().equals(tile))) {
                    entity.getLocation().removeBlock(Cause.source(Sponge.getPluginManager().fromInstance(plugin).get()).build());
                    removedentities++;
                }
            }
        }
    }
    feedback(plugin, src, removedentities);
}
Also used : Entity(org.spongepowered.api.entity.Entity) Item(org.spongepowered.api.entity.Item) Player(org.spongepowered.api.entity.living.player.Player) ArrayList(java.util.ArrayList) ExperienceOrb(org.spongepowered.api.entity.ExperienceOrb) World(org.spongepowered.api.world.World)

Example 5 with Item

use of org.spongepowered.api.entity.Item in project SpongeCommon by SpongePowered.

the class SpongeCommonEventFactory method callInventoryPickupEvent.

public static ItemStack callInventoryPickupEvent(IInventory inventory, EntityItem item, ItemStack stack) {
    try (StackFrame frame = Sponge.getCauseStackManager().pushCauseFrame()) {
        frame.pushCause(inventory);
        ItemStackSnapshot snapshot = ItemStackUtil.snapshotOf(stack);
        ChangeInventoryEvent.Pickup.Pre event = SpongeEventFactory.createChangeInventoryEventPickupPre(frame.getCurrentCause(), Optional.empty(), Collections.singletonList(snapshot), snapshot, ((Item) item), ((Inventory) inventory));
        SpongeImpl.postEvent(event);
        if (event.isCancelled()) {
            return stack;
        }
        int size = inventory.getSizeInventory();
        ItemStack[] prevInventory = new ItemStack[size];
        for (int i = 0; i < size; i++) {
            prevInventory[i] = inventory.getStackInSlot(i);
        }
        if (event.getCustom().isPresent()) {
            if (event.getCustom().get().isEmpty()) {
                return ItemStack.EMPTY;
            }
            boolean fullTransfer = true;
            for (ItemStackSnapshot snap : event.getCustom().get()) {
                ItemStack stackToAdd = ItemStackUtil.fromSnapshotToNative(snap);
                ItemStack remaining = TileEntityHopper.putStackInInventoryAllSlots(null, inventory, stackToAdd, null);
                if (!remaining.isEmpty()) {
                    fullTransfer = false;
                    break;
                }
            }
            if (!fullTransfer) {
                for (int i = 0; i < prevInventory.length; i++) {
                    inventory.setInventorySlotContents(i, prevInventory[i]);
                }
                return stack;
            }
            if (callInventoryPickupEvent(inventory, prevInventory)) {
                return ItemStack.EMPTY;
            }
            return stack;
        } else {
            ItemStack remainder = TileEntityHopper.putStackInInventoryAllSlots(null, inventory, stack, null);
            if (callInventoryPickupEvent(inventory, prevInventory)) {
                return remainder;
            }
            return stack;
        }
    }
}
Also used : EntityItem(net.minecraft.entity.item.EntityItem) Item(org.spongepowered.api.entity.Item) StackFrame(org.spongepowered.api.event.CauseStackManager.StackFrame) ItemStackSnapshot(org.spongepowered.api.item.inventory.ItemStackSnapshot) ItemStack(net.minecraft.item.ItemStack) IMixinInventory(org.spongepowered.common.interfaces.IMixinInventory) OrderedInventory(org.spongepowered.api.item.inventory.type.OrderedInventory) CraftingInventory(org.spongepowered.api.item.inventory.crafting.CraftingInventory) CarriedInventory(org.spongepowered.api.item.inventory.type.CarriedInventory) Inventory(org.spongepowered.api.item.inventory.Inventory) CustomInventory(org.spongepowered.common.item.inventory.custom.CustomInventory) IInventory(net.minecraft.inventory.IInventory)

Aggregations

Item (org.spongepowered.api.entity.Item)18 Entity (org.spongepowered.api.entity.Entity)9 World (org.spongepowered.api.world.World)8 Listener (org.spongepowered.api.event.Listener)6 Player (org.spongepowered.api.entity.living.player.Player)5 ItemStackSnapshot (org.spongepowered.api.item.inventory.ItemStackSnapshot)5 EntityItem (net.minecraft.entity.item.EntityItem)4 SkreePlugin (com.skelril.skree.SkreePlugin)3 ItemStack (net.minecraft.item.ItemStack)3 Animal (org.spongepowered.api.entity.living.animal.Animal)3 Location (org.spongepowered.api.world.Location)3 ItemStackFactory.newItemStack (com.skelril.nitro.item.ItemStackFactory.newItemStack)2 CustomItem (com.skelril.nitro.registry.item.CustomItem)2 EventAwareContent (com.skelril.nitro.selector.EventAwareContent)2 ZoneItemUtil (com.skelril.skree.content.registry.item.zone.ZoneItemUtil)2 ModifierService (com.skelril.skree.service.ModifierService)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Optional (java.util.Optional)2 CreativeTabs (net.minecraft.creativetab.CreativeTabs)2