mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2025-02-26 01:01:42 +01:00
Fix sitting animation by spawning an invisible silverfish
This commit is contained in:
parent
7fb0a12315
commit
ae8b351eda
@ -1,11 +1,14 @@
|
|||||||
package net.citizensnpcs.util;
|
package net.citizensnpcs.util;
|
||||||
|
|
||||||
import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import net.citizensnpcs.api.CitizensAPI;
|
import net.citizensnpcs.api.CitizensAPI;
|
||||||
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.minecraft.server.v1_9_R1.BlockPosition;
|
import net.minecraft.server.v1_9_R1.BlockPosition;
|
||||||
import net.minecraft.server.v1_9_R1.EntityPlayer;
|
import net.minecraft.server.v1_9_R1.EntityPlayer;
|
||||||
@ -56,7 +59,17 @@ public enum PlayerAnimation {
|
|||||||
protected void playAnimation(final EntityPlayer player, int radius) {
|
protected void playAnimation(final EntityPlayer player, int radius) {
|
||||||
player.getBukkitEntity().setMetadata("citizens.sitting",
|
player.getBukkitEntity().setMetadata("citizens.sitting",
|
||||||
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
new FixedMetadataValue(CitizensAPI.getPlugin(), true));
|
||||||
|
final NPC holder = CitizensAPI.getNPCRegistry().createNPC(EntityType.SILVERFISH, "");
|
||||||
|
holder.spawn(player.getBukkitEntity().getLocation());
|
||||||
|
holder.data().set(NPC.NAMEPLATE_VISIBLE_METADATA, false);
|
||||||
|
holder.data().set(NPC.DEFAULT_PROTECTED_METADATA, true);
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void cancel() {
|
||||||
|
super.cancel();
|
||||||
|
holder.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (player.dead || !player.valid
|
if (player.dead || !player.valid
|
||||||
@ -68,8 +81,9 @@ public enum PlayerAnimation {
|
|||||||
cancel();
|
cancel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!player.passengers.contains(player)) {
|
NMS.getHandle((LivingEntity) holder.getEntity()).setInvisible(true);
|
||||||
NMS.mount(player.getBukkitEntity(), player.getBukkitEntity());
|
if (!NMS.getHandle(holder.getEntity()).passengers.contains(player)) {
|
||||||
|
NMS.mount(holder.getEntity(), player.getBukkitEntity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user