2020-05-20 14:55:59 +02:00
|
|
|
package de.ellpeck.naturesaura.items;
|
|
|
|
|
|
|
|
import de.ellpeck.naturesaura.entities.EntityStructureFinder;
|
|
|
|
import de.ellpeck.naturesaura.entities.ModEntities;
|
|
|
|
import net.minecraft.entity.player.PlayerEntity;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.ActionResult;
|
|
|
|
import net.minecraft.util.ActionResultType;
|
|
|
|
import net.minecraft.util.Hand;
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
import net.minecraft.world.World;
|
2020-09-22 03:17:02 +02:00
|
|
|
import net.minecraft.world.gen.feature.structure.Structure;
|
2020-05-20 14:55:59 +02:00
|
|
|
import net.minecraft.world.server.ServerWorld;
|
|
|
|
|
|
|
|
public class ItemStructureFinder extends ItemImpl {
|
2020-09-22 03:17:02 +02:00
|
|
|
private final Structure structureName;
|
2020-05-20 14:55:59 +02:00
|
|
|
private final int color;
|
|
|
|
|
2020-09-22 03:17:02 +02:00
|
|
|
public ItemStructureFinder(String baseName, Structure structureName, int color) {
|
2020-05-20 14:55:59 +02:00
|
|
|
super(baseName);
|
|
|
|
this.structureName = structureName;
|
|
|
|
this.color = color;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
|
|
|
|
ItemStack stack = playerIn.getHeldItem(handIn);
|
|
|
|
if (!worldIn.isRemote) {
|
2020-09-22 03:17:02 +02:00
|
|
|
BlockPos pos = ((ServerWorld) worldIn).getChunkProvider().getChunkGenerator().func_235956_a_((ServerWorld) worldIn, this.structureName, playerIn.getPosition(), 1024, false);
|
2020-05-20 14:55:59 +02:00
|
|
|
if (pos != null) {
|
|
|
|
EntityStructureFinder entity = new EntityStructureFinder(ModEntities.STRUCTURE_FINDER, worldIn);
|
|
|
|
entity.setPosition(playerIn.getPosX(), playerIn.getPosYHeight(0.5D), playerIn.getPosZ());
|
|
|
|
entity.func_213863_b(stack);
|
|
|
|
entity.getDataManager().set(EntityStructureFinder.COLOR, this.color);
|
|
|
|
entity.moveTowards(pos.up(64));
|
|
|
|
worldIn.addEntity(entity);
|
|
|
|
|
|
|
|
stack.shrink(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return new ActionResult<>(ActionResultType.SUCCESS, stack);
|
|
|
|
}
|
|
|
|
}
|