use of org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity in project Denizen-For-Bukkit by DenizenScript.
the class DenizenNetworkManagerImpl method tryProcessTeleportPacketForAttach.
public void tryProcessTeleportPacketForAttach(ClientboundTeleportEntityPacket packet, Entity e, Vector relative) throws IllegalAccessException {
EntityAttachmentHelper.EntityAttachedToMap attList = EntityAttachmentHelper.toEntityToData.get(e.getUUID());
if (attList != null) {
for (EntityAttachmentHelper.PlayerAttachMap attMap : attList.attachedToMap.values()) {
EntityAttachmentHelper.AttachmentData att = attMap.getAttachment(player.getUUID());
if (attMap.attached.isValid() && att != null) {
ClientboundTeleportEntityPacket pNew = new ClientboundTeleportEntityPacket(copyPacket(packet));
ENTITY_ID_PACKTELENT.setInt(pNew, att.attached.getBukkitEntity().getEntityId());
Vector resultPos = new Vector(POS_X_PACKTELENT.getDouble(pNew), POS_Y_PACKTELENT.getDouble(pNew), POS_Z_PACKTELENT.getDouble(pNew)).add(relative);
if (att.positionalOffset != null) {
resultPos = att.fixedForOffset(resultPos, e.getYRot(), e.getXRot());
byte yaw, pitch;
if (att.noRotate) {
Entity attachedEntity = ((CraftEntity) att.attached.getBukkitEntity()).getHandle();
yaw = EntityAttachmentHelper.compressAngle(attachedEntity.getYRot());
pitch = EntityAttachmentHelper.compressAngle(attachedEntity.getXRot());
} else {
yaw = packet.getyRot();
pitch = packet.getxRot();
}
if (att.noPitch) {
Entity attachedEntity = ((CraftEntity) att.attached.getBukkitEntity()).getHandle();
pitch = EntityAttachmentHelper.compressAngle(attachedEntity.getXRot());
}
byte newYaw = EntityAttachmentHelper.adaptedCompressedAngle(yaw, att.positionalOffset.getYaw());
pitch = EntityAttachmentHelper.adaptedCompressedAngle(pitch, att.positionalOffset.getPitch());
POS_X_PACKTELENT.setDouble(pNew, resultPos.getX());
POS_Y_PACKTELENT.setDouble(pNew, resultPos.getY());
POS_Z_PACKTELENT.setDouble(pNew, resultPos.getZ());
YAW_PACKTELENT.setByte(pNew, newYaw);
PITCH_PACKTELENT.setByte(pNew, pitch);
if (NMSHandler.debugPackets) {
Debug.log("Attach Teleport Packet: " + pNew.getClass().getCanonicalName() + " for " + att.attached.getUUID() + " sent to " + player.getName() + " with raw yaw " + yaw + " adapted to " + newYaw);
}
}
att.visiblePositions.put(player.getUUID(), resultPos.clone());
oldManager.send(pNew);
}
}
}
if (e.passengers != null && !e.passengers.isEmpty()) {
for (Entity ent : e.passengers) {
tryProcessTeleportPacketForAttach(packet, ent, new Vector(ent.getX() - e.getX(), ent.getY() - e.getY(), ent.getZ() - e.getZ()));
}
}
}
use of org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity in project MyPet by xXKeyleXx.
the class PlatformHelper method applyTagToEntity.
@Override
public void applyTagToEntity(TagCompound tag, Entity bukkitEntity) {
net.minecraft.world.entity.Entity entity = ((CraftEntity) bukkitEntity).getHandle();
CompoundTag vanillaNBT = (CompoundTag) ItemStackNBTConverter.compoundToVanillaCompound(tag);
if (vanillaNBT != null) {
if (bukkitEntity instanceof Villager) {
net.minecraft.world.entity.npc.Villager villager = (net.minecraft.world.entity.npc.Villager) entity;
villager.readAdditionalSaveData(vanillaNBT);
} else if (bukkitEntity instanceof net.minecraft.world.entity.npc.WanderingTrader) {
net.minecraft.world.entity.npc.WanderingTrader villager = (net.minecraft.world.entity.npc.WanderingTrader) entity;
villager.addAdditionalSaveData(vanillaNBT);
}
}
}
use of org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity in project MyPet by xXKeyleXx.
the class PlatformHelper method applyTagToEntity.
@Override
public void applyTagToEntity(TagCompound tag, Entity bukkitEntity) {
net.minecraft.server.v1_12_R1.Entity entity = ((CraftEntity) bukkitEntity).getHandle();
NBTTagCompound vanillaNBT = (NBTTagCompound) ItemStackNBTConverter.compoundToVanillaCompound(tag);
// Just a temporary fix until I come up with a better solution
if (bukkitEntity instanceof Villager) {
EntityVillager villager = (EntityVillager) entity;
villager.setProfession(vanillaNBT.getInt("Profession"));
villager.riches = vanillaNBT.getInt("Riches");
ReflectionUtil.setFieldValue("bK", villager, vanillaNBT.getInt("Career"));
ReflectionUtil.setFieldValue("bL", villager, vanillaNBT.getInt("CareerLevel"));
ReflectionUtil.setFieldValue("bH", villager, vanillaNBT.getBoolean("Willing"));
if (vanillaNBT.hasKeyOfType("Offers", 10)) {
NBTTagCompound nbttaglist = vanillaNBT.getCompound("Offers");
ReflectionUtil.setFieldValue("trades", villager, new MerchantRecipeList(nbttaglist));
}
NBTTagList invTag = vanillaNBT.getList("Inventory", 10);
for (int i = 0; i < invTag.size(); ++i) {
ItemStack itemstack = new ItemStack(invTag.get(i));
villager.inventory.a(itemstack);
}
villager.m(true);
if (villager.isBaby()) {
villager.goalSelector.a(8, new PathfinderGoalPlay(villager, 0.32D));
} else if (villager.getProfession() == 0) {
villager.goalSelector.a(6, new PathfinderGoalVillagerFarm(villager, 0.6D));
}
}
// can not be used in 1.10
// entity.f(vanillaNBT);
}
use of org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity in project MyPet by xXKeyleXx.
the class PlatformHelper method entityToTag.
@Override
public TagCompound entityToTag(Entity bukkitEntity) {
net.minecraft.world.entity.Entity entity = ((CraftEntity) bukkitEntity).getHandle();
CompoundTag vanillaNBT = new CompoundTag();
if (entity instanceof net.minecraft.world.entity.LivingEntity) {
((net.minecraft.world.entity.LivingEntity) entity).addAdditionalSaveData(vanillaNBT);
} else {
Method b = ReflectionUtil.getMethod(entity.getClass(), "b", CompoundTag.class);
try {
b.invoke(entity, vanillaNBT);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
return (TagCompound) ItemStackNBTConverter.vanillaCompoundToCompound(vanillaNBT);
}
use of org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity in project MyPet by xXKeyleXx.
the class PlatformHelper method entityToTag.
@Override
public TagCompound entityToTag(Entity bukkitEntity) {
net.minecraft.server.v1_16_R3.Entity entity = ((CraftEntity) bukkitEntity).getHandle();
NBTTagCompound vanillaNBT = new NBTTagCompound();
if (entity instanceof EntityLiving) {
((EntityLiving) entity).saveData(vanillaNBT);
} else {
Method b = ReflectionUtil.getMethod(entity.getClass(), "b", NBTTagCompound.class);
try {
b.invoke(entity, vanillaNBT);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
return (TagCompound) ItemStackNBTConverter.vanillaCompoundToCompound(vanillaNBT);
}
Aggregations