/* * This file is part of MyPet * * Copyright © 2011-2016 Keyle * MyPet is licensed under the GNU Lesser General Public License. * * MyPet is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MyPet is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package de.Keyle.MyPet.repository; import com.google.common.base.Optional; import de.Keyle.MyPet.api.entity.MyPet; import de.Keyle.MyPet.api.entity.StoredMyPet; import de.Keyle.MyPet.api.event.MyPetLoadEvent; import de.Keyle.MyPet.api.skill.SkillInstance; import de.Keyle.MyPet.api.util.NBTStorage; import de.Keyle.MyPet.entity.InactiveMyPet; import de.Keyle.MyPet.entity.MyPetClass; import de.keyle.knbt.TagCompound; import org.bukkit.Bukkit; import java.util.Collection; public class MyPetManager extends de.Keyle.MyPet.api.repository.MyPetManager { // Inactive ----------------------------------------------------------------- public StoredMyPet getInactiveMyPetFromMyPet(StoredMyPet myPet) { InactiveMyPet inactiveMyPet = new InactiveMyPet(myPet.getOwner()); inactiveMyPet.setUUID(myPet.getUUID()); inactiveMyPet.setPetName(myPet.getPetName()); inactiveMyPet.setExp(myPet.getExp()); inactiveMyPet.setHealth(myPet.getHealth()); inactiveMyPet.setSaturation(myPet.getSaturation()); inactiveMyPet.setRespawnTime(myPet.getRespawnTime()); inactiveMyPet.setSkills(myPet.getSkillInfo()); inactiveMyPet.setInfo(myPet.getInfo()); inactiveMyPet.setPetType(myPet.getPetType()); inactiveMyPet.setSkilltree(myPet.getSkilltree()); inactiveMyPet.setWorldGroup(myPet.getWorldGroup()); inactiveMyPet.setLastUsed(myPet.getLastUsed()); inactiveMyPet.wantsToRespawn = myPet.wantsToRespawn(); return inactiveMyPet; } // All ---------------------------------------------------------------------- public Optional<MyPet> activateMyPet(StoredMyPet storedMyPet) { if (!storedMyPet.getOwner().isOnline()) { return Optional.absent(); } if (storedMyPet.getOwner().hasMyPet()) { if (!deactivateMyPet(storedMyPet.getOwner(), true)) { return Optional.absent(); } } MyPetLoadEvent event = new MyPetLoadEvent(storedMyPet); Bukkit.getServer().getPluginManager().callEvent(event); MyPet myPet = MyPetClass.getByMyPetType(storedMyPet.getPetType()).getNewMyPetInstance(storedMyPet.getOwner()); myPet.setUUID(storedMyPet.getUUID()); myPet.setPetName(storedMyPet.getPetName()); myPet.setRespawnTime(storedMyPet.getRespawnTime()); myPet.setWorldGroup(storedMyPet.getWorldGroup()); myPet.setInfo(storedMyPet.getInfo()); myPet.setLastUsed(storedMyPet.getLastUsed()); myPet.setWantsToRespawn(storedMyPet.wantsToRespawn()); myPet.getExperience().setExp(storedMyPet.getExp()); myPet.setSkilltree(storedMyPet.getSkilltree()); Collection<SkillInstance> skills = myPet.getSkills().getSkills(); if (skills.size() > 0) { for (SkillInstance skill : skills) { if (skill instanceof NBTStorage) { NBTStorage storageSkill = (NBTStorage) skill; if (storedMyPet.getSkillInfo().getCompoundData().containsKey(skill.getName())) { storageSkill.load(storedMyPet.getSkillInfo().getAs(skill.getName(), TagCompound.class)); } } } } myPet.setHealth(storedMyPet.getHealth()); myPet.setSaturation(storedMyPet.getSaturation()); mActivePetsPlayer.put(myPet, myPet.getOwner()); return Optional.of(myPet); } }