org.bukkit.event.entity.EntityDamageEvent.DamageModifier#net.minecraft.entity.item.EntityEnderCrystal源码实例Demo

下面列出了org.bukkit.event.entity.EntityDamageEvent.DamageModifier#net.minecraft.entity.item.EntityEnderCrystal 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: seppuku   文件: NoDesyncModule.java
@Listener
public void receivePacket(EventReceivePacket event) {
    if (event.getStage() == EventStageable.EventStage.PRE) {
        if (event.getPacket() instanceof SPacketSoundEffect) {
            final SPacketSoundEffect packet = (SPacketSoundEffect) event.getPacket();
            if (packet.getCategory() == SoundCategory.BLOCKS && packet.getSound() == SoundEvents.ENTITY_GENERIC_EXPLODE) {
                for (Entity e : Minecraft.getMinecraft().world.loadedEntityList) {
                    if (e != null && e instanceof EntityEnderCrystal) {
                        if (e.getDistance(packet.getX(), packet.getY(), packet.getZ()) <= 6.0f) {
                            e.setDead();
                        }
                    }
                }
            }
        }
    }
}
 
@Override
public void update() {
    super.update();
    if (getWorld().isRemote)
        return;
    if (!(getWorld().provider instanceof WorldProviderEnd)) {
        return; //don't try to do anything outside end dimension
    }
    if (getTimer() % 20 == 0) {
        updateDragonEggStatus();
    }
    if (getTimer() % 200 == 0) {
        updateConnectedCrystals();
    }
    int totalEnergyGeneration = 0;
    for (int connectedCrystalId : connectedCrystalsIds.toArray()) {
        //since we don't check quite often, check twice before outputting energy
        if (getWorld().getEntityByID(connectedCrystalId) instanceof EntityEnderCrystal) {
            totalEnergyGeneration += hasDragonEggAmplifier ? 128 : 32;
        }
    }
    if (totalEnergyGeneration > 0) {
        energyContainer.changeEnergy(totalEnergyGeneration);
    }
    setActive(totalEnergyGeneration > 0);
}
 
源代码3 项目: Kettle   文件: CraftEventFactory.java
public static boolean handleNonLivingEntityDamageEvent(Entity entity, DamageSource source, double damage, boolean cancelOnZeroDamage) {
    if (entity instanceof EntityEnderCrystal && !(source instanceof EntityDamageSource)) {
        return false;
    }

    final EnumMap<DamageModifier, Double> modifiers = new EnumMap<DamageModifier, Double>(DamageModifier.class);
    final EnumMap<DamageModifier, Function<? super Double, Double>> functions = new EnumMap(DamageModifier.class);

    modifiers.put(DamageModifier.BASE, damage);
    functions.put(DamageModifier.BASE, ZERO);

    final EntityDamageEvent event = handleEntityDamageEvent(entity, source, modifiers, functions);
    if (event == null) {
        return false;
    }
    return event.isCancelled() || (cancelOnZeroDamage && event.getDamage() == 0);
}
 
源代码4 项目: Kettle   文件: ActivationRange.java
/**
 * These entities are excluded from Activation range checks.
 *
 * @param entity
 * @return boolean If it should always tick.
 */
public static boolean initializeEntityActivationState(Entity entity, SpigotWorldConfig config) {
    if (config == null && DimensionManager.getWorld(0) != null) {
        config = DimensionManager.getWorld(0).spigotConfig;
    } else {
        return true;
    }

    return ((entity.activationType == 3 && config.miscActivationRange == 0)
            || (entity.activationType == 2 && config.animalActivationRange == 0)
            || (entity.activationType == 1 && config.monsterActivationRange == 0)
            || entity instanceof EntityPlayer
            || entity instanceof EntityThrowable
            || entity instanceof MultiPartEntityPart
            || entity instanceof EntityWither
            || entity instanceof EntityFireball
            || entity instanceof EntityFallingBlock
            || entity instanceof EntityWeatherEffect
            || entity instanceof EntityTNTPrimed
            || entity instanceof EntityEnderCrystal
            || entity instanceof EntityFireworkRocket
            || (entity.getClass().getSuperclass() == Entity.class && !entity.isCreatureType(EnumCreatureType.CREATURE, false))
            && !entity.isCreatureType(EnumCreatureType.AMBIENT, false) && !entity.isCreatureType(EnumCreatureType.MONSTER, false)
            && !entity.isCreatureType(EnumCreatureType.WATER_CREATURE, false)
    );
}
 
源代码5 项目: Thermos   文件: CraftEventFactory.java
public static boolean handleNonLivingEntityDamageEvent(Entity entity, DamageSource source, double damage) {
    if (entity instanceof EntityEnderCrystal && !(source instanceof EntityDamageSource)) {
        return false;
    }

    final EnumMap<DamageModifier, Double> modifiers = new EnumMap<DamageModifier, Double>(DamageModifier.class);
    final EnumMap<DamageModifier, Function<? super Double, Double>> functions = new EnumMap(DamageModifier.class);

    modifiers.put(DamageModifier.BASE, damage);
    functions.put(DamageModifier.BASE, ZERO);

    final EntityDamageEvent event = handleEntityDamageEvent(entity, source, modifiers, functions);
    if (event == null) {
        return false;
    }
    return event.isCancelled() || (event.getDamage() == 0 && !(entity instanceof EntityItemFrame)); // Cauldron - fix frame removal
}
 
private void updateConnectedCrystals() {
    this.connectedCrystalsIds.clear();
    final double maxDistance = 64 * 64;
    List<EntityEnderCrystal> enderCrystals = Arrays.stream(BiomeEndDecorator.getSpikesForWorld(getWorld()))
        .flatMap(endSpike -> getWorld().getEntitiesWithinAABB(EntityEnderCrystal.class, endSpike.getTopBoundingBox()).stream())
        .filter(crystal -> crystal.getDistanceSq(getPos()) < maxDistance)
        .collect(Collectors.toList());

    for (EntityEnderCrystal entityEnderCrystal : enderCrystals) {
        BlockPos beamTarget = entityEnderCrystal.getBeamTarget();
        if (beamTarget == null) {
            //if beam target is null, set ourselves as beam target
            entityEnderCrystal.setBeamTarget(getPos());
            this.connectedCrystalsIds.add(entityEnderCrystal.getEntityId());
        } else if (beamTarget.equals(getPos())) {
            //if beam target is ourselves, just add it to list
            this.connectedCrystalsIds.add(entityEnderCrystal.getEntityId());
        }
    }

    for (EntityDragon entityDragon : getWorld().getEntities(EntityDragon.class, EntitySelectors.IS_ALIVE)) {
        if (entityDragon.healingEnderCrystal != null && connectedCrystalsIds.contains(entityDragon.healingEnderCrystal.getEntityId())) {
            //if dragon is healing from crystal we draw energy from, reset it's healing crystal
            entityDragon.healingEnderCrystal = null;
            //if dragon is holding pattern, than deal damage and set it's phase to attack ourselves
            if (entityDragon.getPhaseManager().getCurrentPhase().getType() == PhaseList.HOLDING_PATTERN) {
                entityDragon.attackEntityFrom(DamageSource.causeExplosionDamage((EntityLivingBase) null), 10.0f);
                entityDragon.getPhaseManager().setPhase(PhaseList.CHARGING_PLAYER);
                ((PhaseChargingPlayer) entityDragon.getPhaseManager().getCurrentPhase()).setTarget(new Vec3d(getPos()));
            }
        }
    }
}
 
private void resetConnectedEnderCrystals() {
    for (int connectedEnderCrystal : connectedCrystalsIds.toArray()) {
        EntityEnderCrystal entityEnderCrystal = (EntityEnderCrystal) getWorld().getEntityByID(connectedEnderCrystal);
        if (entityEnderCrystal != null && getPos().equals(entityEnderCrystal.getBeamTarget())) {
            //on removal, reset ender crystal beam location so somebody can use it
            entityEnderCrystal.setBeamTarget(null);
        }
    }
    connectedCrystalsIds.clear();
}
 
源代码8 项目: ForgeHax   文件: AutoCrystalMod.java
@SubscribeEvent
public void onTick(LocalPlayerUpdateEvent event) {
  if (getWorld() != null && getLocalPlayer() != null) {
    // Short-circuit if the timer check will fail
    if (!timer.hasTimeElapsed(delay.get())) {
      return;
    }
    
    Vec3d delta = new Vec3d(maxDistance.get(), maxDistance.get(), maxDistance.get());
    AxisAlignedBB bb =
        new AxisAlignedBB(
            getLocalPlayer().getPositionVector().subtract(delta),
            getLocalPlayer().getPositionVector().add(delta));
    getWorld()
        .getEntitiesWithinAABB(EntityEnderCrystal.class, bb)
        .stream()
        // Re-check timer, since it may have been reset in a previous iteration
        .filter(__ -> timer.hasTimeElapsed(delay.get()))
        .filter(
            e ->
                e.getPosition().getY() - getLocalPlayer().getPosition().getY() >= minHeight.get())
        .filter(playerWithinDistance(maxDistance.get()))
        .filter(playerWithinDistance(minDistance.get()).negate())
        .filter(e -> !checkEnemy.get() || enemyWithinDistance(e, maxEnemyDistance.get()))
        .forEach(
            e -> {
              getNetworkManager().sendPacket(new CPacketUseEntity(e));
              getNetworkManager().sendPacket(new CPacketAnimation(EnumHand.MAIN_HAND));
              timer.start();
            });
  }
}
 
源代码9 项目: Thermos   文件: ActivationRange.java
/**
 * These entities are excluded from Activation range checks.
 *
 * @param entity
 * @param world
 * @return boolean If it should always tick.
 */
public static boolean initializeEntityActivationState(Entity entity, SpigotWorldConfig config)
{
    // Cauldron start - another fix for Proxy Worlds
    if (config == null && DimensionManager.getWorld(0) != null)
    {
        config = DimensionManager.getWorld(0).spigotConfig;
    }
    else
    {
        return true;
    }
    // Cauldron end

    if ( ( entity.activationType == 3 && config.miscActivationRange == 0 )
            || ( entity.activationType == 2 && config.animalActivationRange == 0 )
            || ( entity.activationType == 1 && config.monsterActivationRange == 0 )
            || (entity instanceof EntityPlayer && !(entity instanceof FakePlayer)) // Cauldron
            || entity instanceof EntityThrowable
            || entity instanceof EntityDragon
            || entity instanceof EntityDragonPart
            || entity instanceof EntityWither
            || entity instanceof EntityFireball
            || entity instanceof EntityWeatherEffect
            || entity instanceof EntityTNTPrimed
            || entity instanceof EntityFallingBlock // PaperSpigot - Always tick falling blocks
            || entity instanceof EntityEnderCrystal
            || entity instanceof EntityFireworkRocket
            || entity instanceof EntityVillager
            // Cauldron start - force ticks for entities with superclass of Entity and not a creature/monster
            || (entity.getClass().getSuperclass() == Entity.class && !entity.isCreatureType(EnumCreatureType.creature, false)
            && !entity.isCreatureType(EnumCreatureType.ambient, false) && !entity.isCreatureType(EnumCreatureType.monster, false)
            && !entity.isCreatureType(EnumCreatureType.waterCreature, false)))
    {
        return true;
    }

    return false;
}
 
源代码10 项目: Et-Futurum   文件: PlacedEndCrystalRenderer.java
@Override
public void doRender(EntityEnderCrystal crystal, double x, double y, double z, float p_76986_8_, float partialTickTime) {
	float rotation = crystal.innerRotation + partialTickTime;
	OpenGLHelper.pushMatrix();
	OpenGLHelper.translate(x, y, z);
	bindTexture(TEXTURE);
	float f3 = MathHelper.sin(rotation * 0.2F) / 2.0F + 0.5F;
	f3 += f3 * f3;
	MODEL.render(crystal, 0.0F, rotation * 3.0F, f3 * 0.2F, 0.0F, 0.0F, 0.0625F);
	OpenGLHelper.popMatrix();
}
 
源代码11 项目: seppuku   文件: ChamsModule.java
private boolean checkFilter(Entity entity) {
    boolean ret = false;

    if (entity == Minecraft.getMinecraft().player) {
        ret = false;
    }

    final Entity riding = Minecraft.getMinecraft().player.getRidingEntity();

    if (riding != null && entity == riding) {
        ret = false;
    }

    if (this.players.getValue() && entity instanceof EntityPlayer && entity != Minecraft.getMinecraft().player) {
        ret = true;
    }

    if (this.animals.getValue() && entity instanceof IAnimals) {
        ret = true;
    }

    if (this.mobs.getValue() && entity instanceof IMob) {
        ret = true;
    }

    if (this.vehicles.getValue() && (entity instanceof EntityBoat || entity instanceof EntityMinecart || entity instanceof EntityMinecartContainer)) {
        ret = true;
    }

    if (this.crystals.getValue() && entity instanceof EntityEnderCrystal) {
        ret = true;
    }

    if (entity instanceof EntityLivingBase) {
        final EntityLivingBase entityLiving = (EntityLivingBase) entity;

        if (entityLiving.ticksExisted <= 0) {
            ret = false;
        }
    }

    return ret;
}
 
源代码12 项目: Kettle   文件: CraftEnderCrystal.java
public CraftEnderCrystal(CraftServer server, EntityEnderCrystal entity) {
    super(server, entity);
}
 
源代码13 项目: Kettle   文件: CraftEnderCrystal.java
@Override
public EntityEnderCrystal getHandle() {
    return (EntityEnderCrystal) entity;
}
 
源代码14 项目: Thermos   文件: CraftEnderCrystal.java
public CraftEnderCrystal(CraftServer server, EntityEnderCrystal entity) {
    super(server, entity);
}
 
源代码15 项目: Thermos   文件: CraftEnderCrystal.java
@Override
public EntityEnderCrystal getHandle() {
    return (EntityEnderCrystal) entity;
}
 
源代码16 项目: enderutilities   文件: EntityEventHandler.java
@SubscribeEvent
public void onEntityInteractEvent(PlayerInteractEvent.EntityInteract event)
{
    EntityPlayer player = event.getEntityPlayer();
    ItemStack stack = player.getHeldItem(event.getHand());

    if (stack.isEmpty())
    {
        return;
    }

    Item item = stack.getItem();
    boolean isRemote = player.getEntityWorld().isRemote;

    // This needs to be in the event instead of itemInteractionForEntity() if we want it to also work in creative mode...
    // (Otherwise in creative mode the NBT will get wiped after the use when the item is restored)
    if (item == EnderUtilitiesItems.LIVING_MANIPULATOR)
    {
        if (event.getTarget() instanceof EntityLivingBase)
        {
            if (isRemote == false)
            {
                ((ItemLivingManipulator)item).handleInteraction(stack, player, (EntityLivingBase)event.getTarget());
            }

            event.setCanceled(true);
            event.setCancellationResult(EnumActionResult.SUCCESS);
        }
    }
    else if (item == EnderUtilitiesItems.MOB_HARNESS && event.getTarget() instanceof EntityLivingBase)
    {
        ((ItemMobHarness) item).handleInteraction(stack, player, event.getTarget());
        event.setCanceled(true);
        event.setCancellationResult(EnumActionResult.SUCCESS);
    }
    else if (item == EnderUtilitiesItems.ENDER_LASSO && event.getTarget() instanceof EntityLivingBase)
    {
        if (Configs.enderLassoAllowPlayers || EntityUtils.doesEntityStackHavePlayers(event.getTarget()) == false)
        {
            if (OwnerData.canAccessSelectedModule(stack, ModuleType.TYPE_LINKCRYSTAL, player) &&
                UtilItemModular.useEnderCharge(stack, ItemEnderLasso.ENDER_CHARGE_COST, false))
            {
                if (event.getTarget() instanceof EntityLiving && UtilItemModular.getInstalledModuleCount(stack, ModuleType.TYPE_MOBPERSISTENCE) > 0)
                {
                    EntityUtils.applyMobPersistence((EntityLiving)event.getTarget());
                }

                if (isRemote || TeleportEntity.teleportEntityUsingModularItem(event.getTarget(), stack, true, true) != null)
                {
                    event.setCanceled(true);
                    event.setCancellationResult(EnumActionResult.SUCCESS);
                }
            }
        }
    }
    else if (item == EnderUtilitiesItems.PET_CONTRACT && event.getTarget() instanceof EntityLivingBase)
    {
        if (((ItemPetContract) stack.getItem()).itemInteractionForEntity(stack, player, (EntityLivingBase) event.getTarget(), event.getHand()))
        {
            event.setCanceled(true);
            event.setCancellationResult(EnumActionResult.SUCCESS);
        }
    }
    else if (WorldUtils.isEndDimension(player.getEntityWorld()) && event.getTarget() instanceof EntityEnderCrystal && isRemote == false)
    {
        if (item instanceof IChargeable)
        {
            IChargeable chargeable = (IChargeable)item;
            chargeable.addCharge(stack, chargeable.getCapacity(stack) >> 2, true);
        }
        else if (item == EnderUtilitiesItems.ENDER_PART && ((IModule) item).getModuleType(stack).equals(ModuleType.TYPE_ENDERCORE))
        {
            ItemEnderPart part = (ItemEnderPart) item;
            int tier = part.getModuleTier(stack);

            if (tier >= ItemEnderPart.ENDER_CORE_TYPE_INACTIVE_BASIC && tier <= ItemEnderPart.ENDER_CORE_TYPE_INACTIVE_ADVANCED)
            {
                part.activateEnderCore(stack);
            }
        }
    }
}
 
源代码17 项目: enderutilities   文件: TileEntityEnergyBridge.java
private boolean isStructureValid(World world, BlockPos center, Type masterType)
{
    BlockInfo[] structure = this.getStructure(masterType);
    boolean isValid = false;

    for (BlockInfo info : structure)
    {
        BlockPos posTmp = center.add(info.getPos());
        IBlockState state = world.getBlockState(posTmp);

        if (state.getBlock() != EnderUtilitiesBlocks.ENERGY_BRIDGE ||
            state.getActualState(world, posTmp).withProperty(BlockEnergyBridge.ACTIVE, false) != info.getBlockState())
        {
            return false;
        }
    }

    if (masterType == Type.TRANSMITTER)
    {
        double xd = center.getX();
        double yd = center.getY();
        double zd = center.getZ();
        double d = 1.0d;
        List<EntityEnderCrystal> list = world.getEntitiesWithinAABB(EntityEnderCrystal.class,
                new AxisAlignedBB(xd - d, yd - d, zd - d, xd + d, yd + d, zd + d));

        if (list.size() >= 1)
        {
            isValid = true;
        }
    }
    else
    {
        isValid = true;
    }

    // Our machine blocks are all in the right configuration, now just check that there are no other obstructing blocks in the area
    if (isValid)
    {
        return this.isObstructed(world, center, masterType) == false;
    }

    return false;
}