SPIGOT-7910: Fix launching breeze wind charge from API and improve dispenser launch API

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2024-09-29 10:29:39 +10:00
parent 08fdfd6434
commit 8fc133212d
2 changed files with 69 additions and 70 deletions

View File

@@ -58,7 +58,9 @@ import org.bukkit.craftbukkit.inventory.CraftEntityEquipment;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.craftbukkit.potion.CraftPotionEffectType;
import org.bukkit.entity.AbstractArrow;
import org.bukkit.entity.AbstractWindCharge;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.BreezeWindCharge;
import org.bukkit.entity.DragonFireball;
import org.bukkit.entity.Egg;
import org.bukkit.entity.EnderPearl;
@@ -81,7 +83,6 @@ import org.bukkit.entity.ThrownExpBottle;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.entity.TippedArrow;
import org.bukkit.entity.Trident;
import org.bukkit.entity.WindCharge;
import org.bukkit.entity.WitherSkull;
import org.bukkit.entity.memory.MemoryKey;
import org.bukkit.event.entity.EntityPotionEffectEvent;
@@ -498,10 +499,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
launch = new EntityWitherSkull(world, getHandle(), vec);
} else if (DragonFireball.class.isAssignableFrom(projectile)) {
launch = new EntityDragonFireball(world, getHandle(), vec);
} else if (WindCharge.class.isAssignableFrom(projectile)) {
launch = EntityTypes.WIND_CHARGE.create(world);
((net.minecraft.world.entity.projectile.windcharge.WindCharge) launch).setOwner(getHandle());
((net.minecraft.world.entity.projectile.windcharge.WindCharge) launch).assignDirectionalMovement(vec, 0.1D);
} else if (AbstractWindCharge.class.isAssignableFrom(projectile)) {
if (BreezeWindCharge.class.isAssignableFrom(projectile)) {
launch = EntityTypes.BREEZE_WIND_CHARGE.create(world);
} else {
launch = EntityTypes.WIND_CHARGE.create(world);
}
((net.minecraft.world.entity.projectile.windcharge.AbstractWindCharge) launch).setOwner(getHandle());
((net.minecraft.world.entity.projectile.windcharge.AbstractWindCharge) launch).shootFromRotation(getHandle(), getHandle().getXRot(), getHandle().getYRot(), 0.0F, 1.5F, 1.0F); // WindChargeItem
} else {
launch = new EntityLargeFireball(world, getHandle(), vec, 1);
}