ThelwHelpRePaidia's post in Subclass Problem was marked as the answer
April 22, 2015
solved with this if anyone have the same problem
just copy paste it
/*
* $Header: PlayerClass.java, 24/11/2005 12:56:01 luisantonioa Exp $
*
* $Author: luisantonioa $
* $Date: 24/11/2005 12:56:01 $
* $Revision: 1 $
* $Log: PlayerClass.java,v $
* Revision 1 24/11/2005 12:56:01 luisantonioa
* Added copyright notice
*
*
* This program 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 2, or (at your option)
* any later version.
*
* This program 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.gameserver.model.base;
import static com.l2jfrozen.gameserver.model.base.ClassLevel.First;
import static com.l2jfrozen.gameserver.model.base.ClassLevel.Fourth;
import static com.l2jfrozen.gameserver.model.base.ClassLevel.Second;
import static com.l2jfrozen.gameserver.model.base.ClassLevel.Third;
import static com.l2jfrozen.gameserver.model.base.ClassType.Fighter;
import static com.l2jfrozen.gameserver.model.base.ClassType.Mystic;
import static com.l2jfrozen.gameserver.model.base.ClassType.Priest;
import static com.l2jfrozen.gameserver.model.base.PlayerRace.DarkElf;
import static com.l2jfrozen.gameserver.model.base.PlayerRace.Dwarf;
import static com.l2jfrozen.gameserver.model.base.PlayerRace.Human;
import static com.l2jfrozen.gameserver.model.base.PlayerRace.LightElf;
import static com.l2jfrozen.gameserver.model.base.PlayerRace.Orc;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Set;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
/**
* This class ...
*
* @author programmos, l2jfrozen dev
* @version $Revision: 1.2.1 $ $Date: 2009/04/13 02:01:21 $
*/
public enum PlayerClass
{
HumanFighter(Human, Fighter, First),
Warrior(Human, Fighter, Second),
Gladiator(Human, Fighter, Third),
Warlord(Human, Fighter, Third),
HumanKnight(Human, Fighter, Second),
Paladin(Human, Fighter, Third),
DarkAvenger(Human, Fighter, Third),
Rogue(Human, Fighter, Second),
TreasureHunter(Human, Fighter, Third),
Hawkeye(Human, Fighter, Third),
HumanMystic(Human, Mystic, First),
HumanWizard(Human, Mystic, Second),
Sorceror(Human, Mystic, Third),
Necromancer(Human, Mystic, Third),
Warlock(Human, Mystic, Third),
Cleric(Human, Priest, Second),
Bishop(Human, Priest, Third),
Prophet(Human, Priest, Third),
ElvenFighter(LightElf, Fighter, First),
ElvenKnight(LightElf, Fighter, Second),
TempleKnight(LightElf, Fighter, Third),
Swordsinger(LightElf, Fighter, Third),
ElvenScout(LightElf, Fighter, Second),
Plainswalker(LightElf, Fighter, Third),
SilverRanger(LightElf, Fighter, Third),
ElvenMystic(LightElf, Mystic, First),
ElvenWizard(LightElf, Mystic, Second),
Spellsinger(LightElf, Mystic, Third),
ElementalSummoner(LightElf, Mystic, Third),
ElvenOracle(LightElf, Priest, Second),
ElvenElder(LightElf, Priest, Third),
DarkElvenFighter(DarkElf, Fighter, First),
PalusKnight(DarkElf, Fighter, Second),
ShillienKnight(DarkElf, Fighter, Third),
Bladedancer(DarkElf, Fighter, Third),
Assassin(DarkElf, Fighter, Second),
AbyssWalker(DarkElf, Fighter, Third),
PhantomRanger(DarkElf, Fighter, Third),
DarkElvenMystic(DarkElf, Mystic, First),
DarkElvenWizard(DarkElf, Mystic, Second),
Spellhowler(DarkElf, Mystic, Third),
PhantomSummoner(DarkElf, Mystic, Third),
ShillienOracle(DarkElf, Priest, Second),
ShillienElder(DarkElf, Priest, Third),
OrcFighter(Orc, Fighter, First),
OrcRaider(Orc, Fighter, Second),
Destroyer(Orc, Fighter, Third),
OrcMonk(Orc, Fighter, Second),
Tyrant(Orc, Fighter, Third),
OrcMystic(Orc, Mystic, First),
OrcShaman(Orc, Mystic, Second),
Overlord(Orc, Mystic, Third),
Warcryer(Orc, Mystic, Third),
DwarvenFighter(Dwarf, Fighter, First),
DwarvenScavenger(Dwarf, Fighter, Second),
BountyHunter(Dwarf, Fighter, Third),
DwarvenArtisan(Dwarf, Fighter, Second),
Warsmith(Dwarf, Fighter, Third),
dummyEntry1(null, null, null),
dummyEntry2(null, null, null),
dummyEntry3(null, null, null),
dummyEntry4(null, null, null),
dummyEntry5(null, null, null),
dummyEntry6(null, null, null),
dummyEntry7(null, null, null),
dummyEntry8(null, null, null),
dummyEntry9(null, null, null),
dummyEntry10(null, null, null),
dummyEntry11(null, null, null),
dummyEntry12(null, null, null),
dummyEntry13(null, null, null),
dummyEntry14(null, null, null),
dummyEntry15(null, null, null),
dummyEntry16(null, null, null),
dummyEntry17(null, null, null),
dummyEntry18(null, null, null),
dummyEntry19(null, null, null),
dummyEntry20(null, null, null),
dummyEntry21(null, null, null),
dummyEntry22(null, null, null),
dummyEntry23(null, null, null),
dummyEntry24(null, null, null),
dummyEntry25(null, null, null),
dummyEntry26(null, null, null),
dummyEntry27(null, null, null),
dummyEntry28(null, null, null),
dummyEntry29(null, null, null),
dummyEntry30(null, null, null),
/*
* (3rd classes)
*/
duelist(Human, Fighter, Fourth),
dreadnought(Human, Fighter, Fourth),
phoenixKnight(Human, Fighter, Fourth),
hellKnight(Human, Fighter, Fourth),
sagittarius(Human, Fighter, Fourth),
adventurer(Human, Fighter, Fourth),
archmage(Human, Mystic, Fourth),
soultaker(Human, Mystic, Fourth),
arcanaLord(Human, Mystic, Fourth),
cardinal(Human, Mystic, Fourth),
hierophant(Human, Mystic, Fourth),
evaTemplar(LightElf, Fighter, Fourth),
swordMuse(LightElf, Fighter, Fourth),
windRider(LightElf, Fighter, Fourth),
moonlightSentinel(LightElf, Fighter, Fourth),
mysticMuse(LightElf, Mystic, Fourth),
elementalMaster(LightElf, Mystic, Fourth),
evaSaint(LightElf, Mystic, Fourth),
shillienTemplar(DarkElf, Fighter, Fourth),
spectralDancer(DarkElf, Fighter, Fourth),
ghostHunter(DarkElf, Fighter, Fourth),
ghostSentinel(DarkElf, Fighter, Fourth),
stormScreamer(DarkElf, Mystic, Fourth),
spectralMaster(DarkElf, Mystic, Fourth),
shillienSaint(DarkElf, Mystic, Fourth),
titan(Orc, Fighter, Fourth),
grandKhauatari(Orc, Fighter, Fourth),
dominator(Orc, Mystic, Fourth),
doomcryer(Orc, Mystic, Fourth),
fortuneSeeker(Dwarf, Fighter, Fourth),
maestro(Dwarf, Fighter, Fourth);
private PlayerRace _race;
private ClassLevel _level;
private ClassType _type;
private static final Set<PlayerClass> mainSubclassSet;
private static final EnumMap<PlayerClass, Set<PlayerClass>> subclassSetMap = new EnumMap<PlayerClass, Set<PlayerClass>>(PlayerClass.class);
static
{
Set<PlayerClass> subclasses = getSet(null, Third);
mainSubclassSet = subclasses;
}
PlayerClass(PlayerRace pRace, ClassType pType, ClassLevel pLevel)
{
_race = pRace;
_level = pLevel;
_type = pType;
}
public final Set<PlayerClass> getAvailableSubclasses(L2PcInstance player)
{
Set<PlayerClass> subclasses = null;
if(_level == Third)
{
subclasses = EnumSet.copyOf(mainSubclassSet);
subclasses.remove(this);
}
return subclasses;
}
public static final EnumSet<PlayerClass> getSet(PlayerRace race, ClassLevel level)
{
EnumSet<PlayerClass> allOf = EnumSet.noneOf(PlayerClass.class);
for(PlayerClass playerClass : EnumSet.allOf(PlayerClass.class))
{
if(race == null || playerClass.isOfRace(race))
{
if(level == null || playerClass.isOfLevel(level))
{
allOf.add(playerClass);
}
}
}
return allOf;
}
public final boolean isOfRace(PlayerRace pRace)
{
return _race == pRace;
}
public final boolean isOfType(ClassType pType)
{
return _type == pType;
}
public final boolean isOfLevel(ClassLevel pLevel)
{
return _level == pLevel;
}
public final ClassLevel getLevel()
{
return _level;
}
}