Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package red.mirai.miraicombat.events;
- import ...;
- public class DamageApplicationEvent implements Listener {
- //ConcurrentLinkedQueue<Entity> entityQueue = new ConcurrentLinkedQueue<>();
- public static LoadingCache<UUID, Entity> entityQueue = CacheBuilder.newBuilder()
- .maximumSize( 256 )
- .expireAfterWrite( 3L, TimeUnit.MINUTES )
- .build( CacheLoader.from( ( key ) -> null ) );
- @EventHandler( priority = EventPriority.HIGH )
- public void onPlayerDamageEvent( EntityDamageByEntityEvent event ) {
- Entity attacker = event.getDamager();
- Entity target = event.getEntity();
- UUID targetID = target.getUniqueId();
- final double damage = event.getFinalDamage();
- //if ( !entityQueue.contains( target ) ) {
- if ( entityQueue.getUnchecked( targetID ) != null ) {
- DamageCalc applyDamage = new DamageCalc();
- //entityQueue.add( target );
- entityQueue.put( targetID, target );
- applyDamage.init( attacker, target, damage, (apply, newDamage) -> {
- if ( apply ) {
- double bonusDamage = ( newDamage - damage );
- Damageable dmgTarget = (Damageable) target;
- dmgTarget.damage( bonusDamage, attacker );
- }
- //entityQueue.remove( target );
- entityQueue.invalidate( targetID );
- } );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement