package joshie.harvest.core.block; import joshie.harvest.api.npc.RelationStatus; import joshie.harvest.core.HFTrackers; import joshie.harvest.core.handlers.GoddessHandler; import joshie.harvest.core.helpers.FakePlayerHelper; import joshie.harvest.core.network.PacketHandler; import joshie.harvest.npcs.HFNPCs; import joshie.harvest.npcs.NPCHelper; import joshie.harvest.npcs.entity.EntityNPCGoddess; import joshie.harvest.npcs.packet.PacketGoddessGift; import joshie.harvest.player.relationships.RelationshipData; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.fluids.BlockFluidClassic; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import java.util.List; import static joshie.harvest.core.lib.HFModInfo.MODID; public class BlockGoddessWater extends BlockFluidClassic { public BlockGoddessWater(Fluid fluid) { super(fluid, Material.WATER); } @Override public FluidStack drain(World world, BlockPos pos, boolean doDrain) { return null; } @Override @SuppressWarnings("ConstantConditions") public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity) { if (!world.isRemote && entity instanceof EntityItem) { EntityItem item = ((EntityItem)entity); ItemStack stack = item.getEntityItem(); if (!NPCHelper.INSTANCE.getGifts().isBlacklisted(world, FakePlayerHelper.getFakePlayerWithPosition((WorldServer) world, pos), stack)) { if (!GoddessHandler.spawnGoddess(world, entity, false, false)) { if (item.getThrower() != null) { EntityPlayer player = world.getPlayerEntityByName(item.getThrower()); RelationshipData data = HFTrackers.getPlayerTrackerFromPlayer(player).getRelationships(); if (!data.isStatusMet(HFNPCs.GODDESS, RelationStatus.GIFTED)) { HFTrackers.getPlayerTrackerFromPlayer(player).getRelationships().gift(player, HFNPCs.GODDESS, NPCHelper.getGiftValue(HFNPCs.GODDESS, stack).getRelationPoints()); double x = item.posX; double y = item.posY; double z = item.posZ; List<EntityNPCGoddess> npcs = world.getEntitiesWithinAABB(EntityNPCGoddess.class, new AxisAlignedBB(x - 0.5F, y - 0.5F, z - 0.5F, x + 0.5F, y + 0.5F, z + 0.5F).expand(32D, 32D, 32D)); if (npcs.size() >= 1) { PacketHandler.sendToClient(new PacketGoddessGift(npcs.get(0), stack), player); } } } entity.setDead(); } } } } public BlockGoddessWater register(String name) { setUnlocalizedName(name.replace("_", ".")); setRegistryName(new ResourceLocation(MODID, name)); GameRegistry.register(this); return this; } @Override @SideOnly(Side.CLIENT) public void getSubBlocks(@Nonnull Item item, CreativeTabs tab, List<ItemStack> list) { list.add(new ItemStack(item)); } }