use of net.minecraft.util.EnumHand in project MorePlanets by SteveKunG.
the class GeneralEventHandler method setFarmland.
private void setFarmland(UseHoeEvent event, World world, BlockPos pos, Block farmland) {
world.setBlockState(pos, farmland.getDefaultState());
event.setResult(Result.ALLOW);
world.playSound(null, pos, SoundType.GROUND.getStepSound(), SoundCategory.BLOCKS, (SoundType.GROUND.getVolume() + 1.0F) / 2.0F, SoundType.GROUND.getPitch() * 0.8F);
for (EnumHand hand : CachedEnum.handValues) {
event.getEntityPlayer().swingArm(hand);
}
}
use of net.minecraft.util.EnumHand in project MorePlanets by SteveKunG.
the class GeneralEventHandler method setFarmland.
private void setFarmland(UseHoeEvent event, World world, BlockPos pos, IBlockState state, Block coarse, Block dirt, Block farmland) {
if (state.getBlock() == coarse) {
world.setBlockState(pos, dirt.getDefaultState());
} else {
world.setBlockState(pos, farmland.getDefaultState());
}
event.setResult(Result.ALLOW);
world.playSound(null, pos, SoundType.GROUND.getStepSound(), SoundCategory.BLOCKS, (SoundType.GROUND.getVolume() + 1.0F) / 2.0F, SoundType.GROUND.getPitch() * 0.8F);
for (EnumHand hand : CachedEnum.handValues) {
event.getEntityPlayer().swingArm(hand);
}
}
use of net.minecraft.util.EnumHand in project Bewitchment by Um-Mitternacht.
the class SpellDisarming method performEffect.
@Override
public void performEffect(RayTraceResult rtrace, EntityLivingBase caster, World world) {
if (rtrace.typeOfHit == Type.ENTITY && rtrace.entityHit instanceof EntityLivingBase) {
EntityLivingBase entity = (EntityLivingBase) rtrace.entityHit;
EnumHand hand = null;
if (!entity.getHeldItemMainhand().isEmpty())
hand = EnumHand.MAIN_HAND;
else if (!entity.getHeldItemOffhand().isEmpty())
hand = EnumHand.OFF_HAND;
if (hand != null) {
ItemStack stack = entity.getHeldItem(hand).copy();
entity.setHeldItem(hand, ItemStack.EMPTY);
if (!(entity instanceof EntityPlayer) && stack.isItemStackDamageable() && stack.getItemDamage() == 0) {
stack.setItemDamage((int) (stack.getMaxDamage() * (0.5D + 0.5D * Math.random())));
}
EntityItem ei = new EntityItem(world, entity.posX, entity.posY, entity.posZ, stack);
ei.setPickupDelay(200);
ei.setNoDespawn();
if (!world.isRemote)
world.spawnEntity(ei);
}
}
}
use of net.minecraft.util.EnumHand in project SpongeForge by SpongePowered.
the class SpongeForgeEventFactory method callBlockPlaceEvent.
public static ChangeBlockEvent.Place callBlockPlaceEvent(Event event) {
ChangeBlockEvent.Place spongeEvent = (ChangeBlockEvent.Place) event;
if (spongeEvent.getCause().root() instanceof Player) {
EntityPlayer player = (EntityPlayer) spongeEvent.getCause().first(Player.class).get();
net.minecraft.world.World world = player.world;
final PhaseTracker phaseTracker = PhaseTracker.getInstance();
final PhaseContext<?> currentContext = phaseTracker.getCurrentContext();
PhaseContext<?> target = currentContext;
if (currentContext instanceof UnwindingPhaseContext) {
target = ((UnwindingPhaseContext) currentContext).getUnwindingContext();
}
PacketContext<?> context = target instanceof PacketContext<?> ? (PacketContext<?>) target : null;
Packet<?> contextPacket = context != null ? context.getPacket() : null;
if (contextPacket == null) {
return spongeEvent;
}
if (spongeEvent.getTransactions().size() == 1) {
BlockPos pos = VecHelper.toBlockPos(spongeEvent.getTransactions().get(0).getOriginal().getPosition());
IBlockState state = (IBlockState) spongeEvent.getTransactions().get(0).getOriginal().getState();
net.minecraftforge.common.util.BlockSnapshot blockSnapshot = new net.minecraftforge.common.util.BlockSnapshot(world, pos, state);
IBlockState placedAgainst = Blocks.AIR.getDefaultState();
EnumHand hand = EnumHand.MAIN_HAND;
if (contextPacket instanceof CPacketPlayerTryUseItemOnBlock) {
CPacketPlayerTryUseItemOnBlock packet = (CPacketPlayerTryUseItemOnBlock) contextPacket;
EnumFacing facing = packet.getDirection();
placedAgainst = blockSnapshot.getWorld().getBlockState(blockSnapshot.getPos().offset(facing.getOpposite()));
hand = packet.getHand();
}
BlockEvent.PlaceEvent forgeEvent = new BlockEvent.PlaceEvent(blockSnapshot, placedAgainst, player, hand);
((IMixinEventBus) MinecraftForge.EVENT_BUS).post(forgeEvent, true);
if (forgeEvent.isCanceled()) {
spongeEvent.setCancelled(true);
}
} else {
// multi
Iterator<Transaction<BlockSnapshot>> iterator = spongeEvent.getTransactions().iterator();
List<net.minecraftforge.common.util.BlockSnapshot> blockSnapshots = new ArrayList<>();
while (iterator.hasNext()) {
Transaction<BlockSnapshot> transaction = iterator.next();
Location<World> location = transaction.getOriginal().getLocation().get();
IBlockState state = (IBlockState) transaction.getOriginal().getState();
BlockPos pos = new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ());
net.minecraftforge.common.util.BlockSnapshot blockSnapshot = new net.minecraftforge.common.util.BlockSnapshot(world, pos, state);
blockSnapshots.add(blockSnapshot);
}
IBlockState placedAgainst = Blocks.AIR.getDefaultState();
EnumHand hand = EnumHand.MAIN_HAND;
if (contextPacket instanceof CPacketPlayerTryUseItemOnBlock) {
CPacketPlayerTryUseItemOnBlock packet = (CPacketPlayerTryUseItemOnBlock) contextPacket;
EnumFacing facing = packet.getDirection();
placedAgainst = blockSnapshots.get(0).getWorld().getBlockState(blockSnapshots.get(0).getPos().offset(facing.getOpposite()));
hand = packet.getHand();
}
BlockEvent.MultiPlaceEvent forgeEvent = new BlockEvent.MultiPlaceEvent(blockSnapshots, placedAgainst, player, hand);
((IMixinEventBus) MinecraftForge.EVENT_BUS).post(forgeEvent, true);
if (forgeEvent.isCanceled()) {
spongeEvent.setCancelled(true);
}
}
}
return spongeEvent;
}
use of net.minecraft.util.EnumHand in project SpongeForge by SpongePowered.
the class SpongeForgeEventFactory method callEntityInteractEvent.
private static InteractEntityEvent.Secondary callEntityInteractEvent(Event event) {
InteractEntityEvent.Secondary spongeEvent = (InteractEntityEvent.Secondary) event;
Optional<Player> player = spongeEvent.getCause().first(Player.class);
if (!player.isPresent()) {
return null;
}
final EntityPlayerMP entityPlayerMP = EntityUtil.toNative(player.get());
final EnumHand hand = entityPlayerMP.getActiveHand();
final EntityPlayer entityPlayer = (EntityPlayer) player.get();
final Entity entity = (Entity) spongeEvent.getTargetEntity();
final Vector3d hitVec = spongeEvent.getInteractionPoint().orElse(null);
PlayerInteractEvent forgeEvent = null;
if (hitVec != null) {
forgeEvent = new PlayerInteractEvent.EntityInteractSpecific(entityPlayer, hand, entity, VecHelper.toVec3d(hitVec));
} else {
forgeEvent = new PlayerInteractEvent.EntityInteract(entityPlayer, hand, entity);
}
((IMixinEventBus) MinecraftForge.EVENT_BUS).post(forgeEvent, true);
if (forgeEvent.isCanceled()) {
spongeEvent.setCancelled(true);
}
return spongeEvent;
}
Aggregations