Implemented collecting upgrade

This commit is contained in:
Buuz135 2021-12-24 14:35:35 +01:00
parent fd7bed0ebb
commit 53d75d44df

View File

@ -19,11 +19,13 @@ import net.minecraft.core.Direction;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.HitResult;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
@ -157,6 +159,25 @@ public abstract class ControllableDrawerTile<T extends ControllableDrawerTile<T>
}); });
}); });
} }
if (item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){
Direction direction = Direction.byName(stack.getOrCreateTag().getString("Direction"));
AABB box = new AABB(pos.relative(direction));
for (ItemEntity entitiesOfClass : level.getEntitiesOfClass(ItemEntity.class, box)) {
ItemStack pulledStack = ItemHandlerHelper.copyStackWithSize(entitiesOfClass.getItem(), Math.min(entitiesOfClass.getItem().getCount(), 4));
if (pulledStack.isEmpty()) continue;
boolean hasWorked = false;
for (int ourSlot = 0; ourSlot < this.getStorage().getSlots(); ourSlot++) {
ItemStack simulated = getStorage().insertItem(ourSlot, pulledStack, true);
if (simulated.getCount() != pulledStack.getCount()){
getStorage().insertItem(ourSlot, ItemHandlerHelper.copyStackWithSize(entitiesOfClass.getItem(), pulledStack.getCount() - simulated.getCount()), false);
entitiesOfClass.getItem().shrink(pulledStack.getCount() - simulated.getCount());
hasWorked = true;
break;
}
}
if (hasWorked) break;
}
}
} }
} }
} }