Mineplex/GOD DAMN COSMETICS/gadget/gadgets/gamemodifiers/GameCosmeticManager.java
Daniel Waggner 38a20f98c2 Removed Files
These two directories contain code that was removed from the src and dependencies of the compiled files. They were removed due to being either a. unnecessary or b. a royal pain in my booty.
2021-05-23 18:13:37 -07:00

215 lines
4.6 KiB
Java

package mineplex.core.gadget.gadgets.gamemodifiers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.Predicate;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import mineplex.core.MiniPlugin;
import mineplex.core.ReflectivelyCreateMiniPlugin;
import mineplex.core.gadget.event.GadgetChangeEvent;
import mineplex.core.gadget.event.GadgetChangeEvent.GadgetState;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GameModifierGadget;
import mineplex.core.game.GameDisplay;
@ReflectivelyCreateMiniPlugin
// TODO Remove all the string literals for cosmetic categories
public class GameCosmeticManager extends MiniPlugin
{
private final Map<GameCosmeticType, List<GameCosmeticCategory>> _cosmetics;
private GameCosmeticManager()
{
super("Game Cosmetics");
_cosmetics = new HashMap<>();
}
public void addCosmeticType(GameCosmeticType type, List<GameCosmeticCategory> cosmetics)
{
_cosmetics.put(type, cosmetics);
}
@EventHandler
public void gadgetEquip(GadgetChangeEvent event)
{
if (event.getGadgetState() != GadgetState.ENABLED)
{
return;
}
Gadget gadget = event.getGadget();
if (!(gadget instanceof GameModifierGadget))
{
return;
}
GameCosmeticCategory category = ((GameModifierGadget) gadget).getCategory();
if (category.isAllowingMultiple())
{
return;
}
// Disable all other gadgets if not allowing multiple.
category.getGadgets().stream()
.filter(gadget1 -> !gadget.equals(gadget1))
.forEach(gadget1 -> gadget1.disable(event.getPlayer()));
}
public GameModifierGadget getActiveCosmetic(Player player, GameDisplay gameType, String categoryName)
{
return getActiveCosmetic(player, gameType, categoryName, null);
}
public GameModifierGadget getActiveCosmetic(Player player, GameDisplay gameType, String categoryName, Predicate<GameModifierGadget> selector)
{
GameCosmeticCategory category = getCategoryFrom(gameType, categoryName);
if (category == null)
{
return null;
}
List<GameModifierGadget> gadgets = category.getGadgets();
if (gadgets == null)
{
return null;
}
for (GameModifierGadget gadget : gadgets)
{
if (selector != null && !selector.test(gadget))
{
continue;
}
if (gadget.isActive(player))
{
return gadget;
}
}
return null;
}
public List<GameModifierGadget> getActiveCosmetics(Player player, GameDisplay gameType, String categoryName)
{
return getActiveCosmetics(player, gameType, categoryName, null);
}
public List<GameModifierGadget> getActiveCosmetics(Player player, GameDisplay gameType, String categoryName, Predicate<GameModifierGadget> selector)
{
GameCosmeticCategory category = getCategoryFrom(gameType, categoryName);
if (category == null)
{
return null;
}
List<GameModifierGadget> gadgets = category.getGadgets();
if (gadgets == null)
{
return null;
}
List<GameModifierGadget> gadgetsCloned = new ArrayList<>(gadgets);
gadgetsCloned.removeIf(gadget -> !gadget.isActive(player));
if (selector != null)
{
gadgets.removeIf(gadget -> !selector.test(gadget));
}
return gadgetsCloned;
}
public GameCosmeticCategory getCategoryFrom(GameDisplay gameType, String categoryName)
{
if (gameType == null || categoryName == null)
{
return null;
}
for (Entry<GameCosmeticType, List<GameCosmeticCategory>> entry : _cosmetics.entrySet())
{
GameCosmeticType type = entry.getKey();
if (type.getGame() != gameType)
{
continue;
}
for (GameCosmeticCategory category : entry.getValue())
{
if (!category.getCategoryName().equals(categoryName))
{
continue;
}
return category;
}
}
return null;
}
public GameModifierGadget getGadgetFrom(String name)
{
for (List<GameCosmeticCategory> categories : _cosmetics.values())
{
for (GameCosmeticCategory category : categories)
{
for (GameModifierGadget gadget : category.getGadgets())
{
if (gadget.getName().equals(name))
{
return gadget;
}
}
}
}
return null;
}
public List<GameModifierGadget> getGadgetsFrom(GameDisplay gameType)
{
List<GameModifierGadget> gadgets = new ArrayList<>();
GameCosmeticType type = null;
for (GameCosmeticType cosmeticType : _cosmetics.keySet())
{
if (cosmeticType.getGame() == gameType)
{
type = cosmeticType;
break;
}
}
if (type == null)
{
return gadgets;
}
type.getCategories().forEach(category -> gadgets.addAll(category.getGadgets()));
return gadgets;
}
public Map<GameCosmeticType, List<GameCosmeticCategory>> getTypes()
{
return _cosmetics;
}
}