Examples of EntityRef


Examples of org.terasology.entitySystem.entity.EntityRef

            }
        }
    }

    private void updateEntity(NetData.UpdateEntityMessage updateEntity) {
        EntityRef currentEntity = networkSystem.getEntity(updateEntity.getNetId());
        if (currentEntity.exists()) {
            NetworkComponent netComp = currentEntity.getComponent(NetworkComponent.class);
            if (netComp == null) {
                logger.error("Updating entity with no network component: {}, expected netId {}", currentEntity, updateEntity.getNetId());
                return;
            }
            if (netComp.getNetworkId() != updateEntity.getNetId()) {
                logger.error("Network ID wrong before update");
            }
            boolean blockEntityBefore = currentEntity.hasComponent(BlockComponent.class);
            entitySerializer.deserializeOnto(currentEntity, updateEntity.getEntity());
            BlockComponent blockComponent = currentEntity.getComponent(BlockComponent.class);
            if (blockComponent != null && !blockEntityBefore) {
                if (!blockEntityRegistry.getExistingBlockEntityAt(blockComponent.getPosition()).equals(currentEntity)) {
                    logger.error("Failed to associated new block entity");
                }
            }
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

    }


    @ReceiveEvent(components = {InventoryComponent.class, RetainBlockInventoryComponent.class})
    public void copyBlockInventory(OnBlockToItem event, EntityRef blockEntity) {
        EntityRef inventoryItem = event.getItem();
        int slotCount = InventoryUtils.getSlotCount(blockEntity);
        inventoryItem.addComponent(new InventoryComponent(slotCount));
        for (int i = 0; i < slotCount; i++) {
            inventoryManager.switchItem(blockEntity, blockEntity, i, inventoryItem, i);
        }
        ItemComponent itemComponent = inventoryItem.getComponent(ItemComponent.class);
        if (itemComponent != null && !itemComponent.stackId.isEmpty()) {
            itemComponent.stackId = "";
            inventoryItem.saveComponent(itemComponent);
        }
    }
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

        }
        float bobOffset = calcBobbingOffset(charMoveComp.footstepDelta, (float) java.lang.Math.PI / 8f, 0.05f);
        float handMovementAnimationOffset = character.handAnimation;

        int invSlotIndex = character.selectedItem;
        EntityRef heldItem = InventoryUtils.getItemAt(localPlayer.getCharacterEntity(), invSlotIndex);
        ItemComponent heldItemComp = heldItem.getComponent(ItemComponent.class);
        BlockItemComponent blockItem = heldItem.getComponent(BlockItemComponent.class);
        if (blockItem != null && blockItem.blockFamily != null) {
            renderBlock(blockItem.blockFamily, bobOffset, handMovementAnimationOffset);
        } else if (heldItemComp != null && heldItemComp.renderWithIcon) {
            renderIcon(heldItemComp.icon, bobOffset, handMovementAnimationOffset);
        } else {
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

        Vector3f position = entity.getComponent(LocationComponent.class).getWorldPosition();

        FastRandom random = new FastRandom();
        int slotCount = InventoryUtils.getSlotCount(entity);
        for (int i = 0; i < slotCount; i++) {
            EntityRef itemInSlot = InventoryUtils.getItemAt(entity, i);
            if (itemInSlot.exists()) {
                EntityRef pickup = pickupBuilder.createPickupFor(itemInSlot, position, 60, true);
                pickup.send(new ImpulseEvent(random.nextVector3f(30.0f)));
            }
        }
    }
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

        moveItem(entity, event.getInstigator(), event.getSlotFrom(), event.getTo(), event.getSlotTo(), event.getCount());
    }

    @ReceiveEvent(components = {InventoryComponent.class})
    public void removeItem(RemoveItemAction event, EntityRef entity) {
        final EntityRef result = removeItemInternal(entity, event.getInstigator(), event.getItems(), event.isDestroyRemoved(), event.getCount());
        if (result != null) {
            if (result != EntityRef.NULL) {
                event.setRemovedItem(result);
            }
            event.consume();
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

        List<Integer> slotsTotallyConsumed = new LinkedList<>();

        int removesRemaining = toRemove;
        for (int slot : slotsWithItem) {
            EntityRef itemAtEntity = InventoryUtils.getItemAt(entity, slot);
            ItemComponent itemAt = itemAtEntity.getComponent(ItemComponent.class);
            if (itemAt.stackCount <= removesRemaining) {
                if (canRemoveItemFromSlot(instigator, entity, itemAtEntity, slot)) {
                    slotsTotallyConsumed.add(slot);
                    removesRemaining -= itemAt.stackCount;
                }
            } else {
                shrinkSlotNo = slot;
                shrinkCountResult = itemAt.stackCount - removesRemaining;
                removesRemaining = 0;
            }

            if (removesRemaining == 0) {
                break;
            }
        }

        if (removesRemaining > 0) {
            return null;
        }

        EntityRef removed = null;
        int removedCount = 0;
        for (int slot : slotsTotallyConsumed) {
            EntityRef itemAt = InventoryUtils.getItemAt(entity, slot);
            removedCount += InventoryUtils.getStackCount(itemAt);

            if (destroyRemoved) {
                InventoryUtils.putItemIntoSlot(entity, EntityRef.NULL, slot);
                itemAt.destroy();
            } else {
                if (removed == null) {
                    InventoryUtils.putItemIntoSlot(entity, EntityRef.NULL, slot);
                    removed = itemAt;
                } else {
                    InventoryUtils.putItemIntoSlot(entity, EntityRef.NULL, slot);
                    itemAt.destroy();
                }
            }
        }

        if (shrinkSlotNo > -1) {
            EntityRef itemAt = InventoryUtils.getItemAt(entity, shrinkSlotNo);
            removedCount += InventoryUtils.getStackCount(itemAt) - shrinkCountResult;
            if (destroyRemoved) {
                InventoryUtils.adjustStackSize(entity, shrinkSlotNo, shrinkCountResult);
            } else {
                if (removed == null) {
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

        int toConsume = InventoryUtils.getStackCount(item);
        Map<Integer, Integer> consumableCount = new LinkedHashMap<>();

        // First: check which slots we can merge into
        for (int slot : slots) {
            EntityRef itemAtEntity = InventoryUtils.getItemAt(entity, slot);
            ItemComponent itemAt = itemAtEntity.getComponent(ItemComponent.class);
            if (itemAt != null && InventoryUtils.isSameItem(item, itemAtEntity)) {
                int spaceInSlot = itemAt.maxStackSize - itemAt.stackCount;
                int toAdd = Math.min(toConsume, spaceInSlot);
                if (toAdd > 0) {
                    consumableCount.put(slot, toAdd);
                    toConsume -= toAdd;
                    if (toConsume == 0) {
                        break;
                    }
                }
            }
        }

        int emptySlotNo = -1;
        int emptySlotCount = toConsume;
        if (toConsume > 0) {
            // Next: check which slots are empty and figure out where to add
            for (int slot : slots) {
                EntityRef itemAtEntity = InventoryUtils.getItemAt(entity, slot);
                ItemComponent itemAt = itemAtEntity.getComponent(ItemComponent.class);
                if (itemAt == null && canPutItemIntoSlot(instigator, entity, item, slot)) {
                    emptySlotNo = slot;
                    emptySlotCount = toConsume;
                    toConsume = 0;
                    break;
                }
            }
        }

        if (toConsume > 0) {
            return false;
        }

        for (Map.Entry<Integer, Integer> slotCount : consumableCount.entrySet()) {
            int slot = slotCount.getKey();
            int count = slotCount.getValue();
            EntityRef itemAtEntity = InventoryUtils.getItemAt(entity, slot);
            ItemComponent itemAt = itemAtEntity.getComponent(ItemComponent.class);
            InventoryUtils.adjustStackSize(entity, slot, itemAt.stackCount + count);
        }

        if (emptySlotNo > -1) {
            ItemComponent sourceItem = item.getComponent(ItemComponent.class);
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

    public EntityRef removeItem(EntityRef inventory, EntityRef instigator, List<EntityRef> items, boolean destroyRemoved, int count) {
        return removeItemInternal(inventory, instigator, items, destroyRemoved, count);
    }

    private EntityRef removeItemInternal(EntityRef inventory, EntityRef instigator, List<EntityRef> items, boolean destroyRemoved, Integer count) {
        final EntityRef firstItem = items.get(0);
        for (EntityRef item : items) {
            if (item != firstItem && !InventoryUtils.isSameItem(firstItem, item)) {
                return null;
            }
        }
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

        eventSystem.registerEventHandler(CoreRegistry.get(NUIManager.class));
        inputSystem = CoreRegistry.get(InputSystem.class);

        new RegisterInputSystem().step();

        EntityRef localPlayerEntity = entityManager.create(new ClientComponent());

        LocalPlayer localPlayer = CoreRegistry.put(LocalPlayer.class, new LocalPlayer());
        localPlayer.setClientEntity(localPlayerEntity);

        componentSystemManager.initialise();
View Full Code Here

Examples of org.terasology.entitySystem.entity.EntityRef

    @In
    private EntityManager entityManager;

    @ReceiveEvent(components = ClientComponent.class)
    public void onConnect(ConnectedEvent event, EntityRef entity) {
        EntityRef clientInfo = entity.getComponent(ClientComponent.class).clientInfo;
        for (EntityRef client : entityManager.getEntitiesWith(ClientComponent.class)) {
            client.send(NotificationMessageEvent.newJoinEvent(clientInfo));
        }
    }
View Full Code Here
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.