Skip to content
This repository has been archived by the owner on Dec 7, 2022. It is now read-only.

Commit

Permalink
Kits rewrite
Browse files Browse the repository at this point in the history
  • Loading branch information
Pablete1234 committed Mar 25, 2016
1 parent 92a98b7 commit 19d5a70
Show file tree
Hide file tree
Showing 32 changed files with 1,033 additions and 433 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import in.twizmwaz.cardinal.module.modules.filter.FilterModule;
import in.twizmwaz.cardinal.module.modules.filter.FilterModuleBuilder;
import in.twizmwaz.cardinal.module.modules.filter.type.logic.AllFilter;
import in.twizmwaz.cardinal.module.modules.kit.Kit;
import in.twizmwaz.cardinal.module.modules.kit.KitNode;
import in.twizmwaz.cardinal.module.modules.portal.Portal;
import in.twizmwaz.cardinal.module.modules.regions.RegionModule;
import in.twizmwaz.cardinal.module.modules.regions.RegionModuleBuilder;
Expand Down Expand Up @@ -73,7 +73,10 @@ public ModuleCollection<AppliedRegion> load(Match match) {
results.add(new UseRegion(region, getFilter(applied.getAttributeValue("use")), message));
}
if (applied.getAttributeValue("kit") != null) {
results.add(new KitRegion(region, (applied.getAttributeValue("filter") != null ? getFilter(applied.getAttributeValue("filter")) : getFilter("always")), message, Kit.getKitByName(applied.getAttributeValue("kit"))));
results.add(new KitRegion(region, (applied.getAttributeValue("filter") != null ? getFilter(applied.getAttributeValue("filter")) : getFilter("always")), message, KitNode.getKitByName(applied.getAttributeValue("kit")), false));
}
if (applied.getAttributeValue("lend-kit") != null) {
results.add(new KitRegion(region, (applied.getAttributeValue("filter") != null ? getFilter(applied.getAttributeValue("filter")) : getFilter("always")), message, KitNode.getKitByName(applied.getAttributeValue("lend-kit")), true));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package in.twizmwaz.cardinal.module.modules.appliedRegion.type;

import com.google.common.base.Optional;
import in.twizmwaz.cardinal.GameHandler;
import in.twizmwaz.cardinal.module.modules.appliedRegion.AppliedRegion;
import in.twizmwaz.cardinal.module.modules.filter.FilterModule;
import in.twizmwaz.cardinal.module.modules.filter.FilterState;
import in.twizmwaz.cardinal.module.modules.kit.Kit;
import in.twizmwaz.cardinal.module.modules.kit.KitNode;
import in.twizmwaz.cardinal.module.modules.regions.RegionModule;
import in.twizmwaz.cardinal.module.modules.team.TeamModule;
import in.twizmwaz.cardinal.util.Teams;
Expand All @@ -15,28 +16,36 @@

public class KitRegion extends AppliedRegion {

private final Kit kit;
private final KitNode kit;
private boolean lend;

public KitRegion(RegionModule region, FilterModule filter, String message, Kit kit) {
public KitRegion(RegionModule region, FilterModule filter, String message, KitNode kit, boolean lend) {
super(region, filter, message);
this.kit = kit;
this.lend = lend;
}

@EventHandler(priority = EventPriority.HIGH)
public void onPlayerMove(PlayerMoveEvent event) {
if (!GameHandler.getGameHandler().getMatch().isRunning()) return;
Optional<TeamModule> team = Teams.getTeamByPlayer(event.getPlayer());
if (event.isCancelled() || (team.isPresent() && team.get().isObserver())) return;
if (region.contains(event.getTo().toVector()) && !region.contains(event.getFrom().toVector()) && filter.evaluate(event.getPlayer(), event.getTo(), event).equals(FilterState.ALLOW)) {
kit.apply(event.getPlayer());
kit.apply(event.getPlayer(), null);
} else if (lend && region.contains(event.getFrom().toVector()) && !region.contains(event.getTo().toVector())) {
kit.remove(event.getPlayer());
}
}

@EventHandler(priority = EventPriority.HIGH)
public void onPlayerMove(PlayerTeleportEvent event) {
if (!GameHandler.getGameHandler().getMatch().isRunning()) return;
Optional<TeamModule> team = Teams.getTeamByPlayer(event.getPlayer());
if (event.isCancelled() || (team.isPresent() && team.get().isObserver())) return;
if (region.contains(event.getTo().toVector()) && !region.contains(event.getFrom().toVector()) && filter.evaluate(event.getPlayer(), event.getTo(), event).equals(FilterState.ALLOW)) {
kit.apply(event.getPlayer());
kit.apply(event.getPlayer(), null);
} else if (lend && region.contains(event.getFrom().toVector()) && !region.contains(event.getTo().toVector())) {
kit.remove(event.getPlayer());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import in.twizmwaz.cardinal.event.CardinalSpawnEvent;
import in.twizmwaz.cardinal.event.ClassChangeEvent;
import in.twizmwaz.cardinal.module.Module;
import in.twizmwaz.cardinal.module.modules.kit.Kit;
import in.twizmwaz.cardinal.module.modules.kit.KitNode;
import in.twizmwaz.cardinal.module.modules.team.TeamModule;
import in.twizmwaz.cardinal.util.Teams;
import org.bukkit.ChatColor;
Expand All @@ -32,9 +32,9 @@ public class ClassModule implements Module {
private final boolean defaultClass;
private final boolean restrict;

private final Kit kit;
private final KitNode kit;

protected ClassModule(final String name, final String description, final String longDescription, final Material icon, final boolean sticky, final boolean defaultClass, final boolean restrict, final Kit kit) {
protected ClassModule(final String name, final String description, final String longDescription, final Material icon, final boolean sticky, final boolean defaultClass, final boolean restrict, final KitNode kit) {
this.name = name;
this.description = description;
this.longDescription = longDescription;
Expand Down Expand Up @@ -89,7 +89,7 @@ public void onPgmSpawn(CardinalSpawnEvent event) {
if (!playerClass.containsKey(event.getPlayer().getUniqueId()) && (this.defaultClass || (!defaultClassPresent() && GameHandler.getGameHandler().getMatch().getModules().getModule(ClassModule.class).equals(this))))
playerClass.put(event.getPlayer().getUniqueId(), this);
if (playerClass.containsKey(event.getPlayer().getUniqueId()) && playerClass.get(event.getPlayer().getUniqueId()).equals(this)) {
if (kit != null) kit.apply(event.getPlayer());
if (kit != null) kit.apply(event.getPlayer(), null);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import in.twizmwaz.cardinal.module.ModuleBuilder;
import in.twizmwaz.cardinal.module.ModuleCollection;
import in.twizmwaz.cardinal.module.ModuleLoadTime;
import in.twizmwaz.cardinal.module.modules.kit.Kit;
import in.twizmwaz.cardinal.module.modules.kit.KitBuilder;
import in.twizmwaz.cardinal.module.modules.kit.KitNode;
import org.bukkit.Material;
import org.jdom2.Element;

Expand Down Expand Up @@ -60,7 +60,7 @@ public ModuleCollection<ClassModule> load(Match match) {
} else if (classes.getAttributeValue("restrict") != null) {
restrict = !classes.getAttributeValue("restrict").equalsIgnoreCase("false");
}
Kit kit = classElement.getChildren().size() > 0 ? KitBuilder.getKit(classElement.getChildren().get(0)) : null;
KitNode kit = classElement.getChildren().size() > 0 ? KitBuilder.getKit(classElement.getChildren().get(0)) : null;
results.add(new ClassModule(name, description, longDescription, icon, sticky, defaultClass, restrict, kit));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ public class FilterModuleBuilder implements ModuleBuilder {
* @return The filter based upon the given element
*/
public static FilterModule getFilter(Element element, Document document) {
String id = element.getAttributeValue("name") != null ? element.getAttributeValue("name") :
(element.getAttributeValue("id") != null ? element.getAttributeValue("id") : null);
switch (element.getName().toLowerCase()) {
case "block":
return new BlockFilter(new BlockFilterParser(element));
Expand Down Expand Up @@ -121,8 +123,8 @@ public static FilterModule getFilter(Element element, Document document) {
} else {
return getFilter(element.getChildren().get(0));
}
} else if (element.getAttributeValue("name") != null) {
switch (element.getAttributeValue("name").toLowerCase()) {
} else if (id != null) {
switch (id.toLowerCase()) {
case "always":
return new AllEventFilter("always", true);
case "never":
Expand Down Expand Up @@ -162,57 +164,9 @@ public static FilterModule getFilter(Element element, Document document) {
default:
for (Element filterElement : document.getRootElement().getChildren("filters")) {
for (Element givenFilter : filterElement.getChildren()) {
if (givenFilter.getAttributeValue("name").equalsIgnoreCase(element.getAttributeValue("name")))
if (givenFilter.getAttributeValue("name") != null && givenFilter.getAttributeValue("name").equalsIgnoreCase(id))
return getFilter(givenFilter.getChildren().get(0));
if (givenFilter.getAttributeValue("id").equalsIgnoreCase(element.getAttributeValue("id")))
return getFilter(givenFilter.getChildren().get(0));
}
}
}
} else if (element.getAttributeValue("id") != null) {
switch (element.getAttributeValue("id").toLowerCase()) {
case "always":
return new AllEventFilter("always", true);
case "never":
return new AllEventFilter("never", false);
case "allow-all":
return new AllEventFilter("allow-all", true);
case "deny-all":
return new AllEventFilter("deny-all", false);
case "allow-players":
return new AllPlayerFilter("allow-players", true);
case "deny-players":
return new AllPlayerFilter("deny-players", false);
case "allow-blocks":
return new AllBlockFilter("allow-blocks", true);
case "deny-blocks":
return new AllBlockFilter("deny-blocks", false);
case "allow-world":
return new AllWorldFilter("allow-world", true);
case "deny-world":
return new AllWorldFilter("deny-world", false);
case "allow-spawns":
return new AllSpawnFilter("allow-spawns", true);
case "deny-spawns":
return new AllSpawnFilter("deny-spawns", false);
case "allow-entities":
return new AllEntitiesFilter("allow-entities", true);
case "deny-entities":
return new AllEntitiesFilter("deny-entities", false);
case "allow-mobs":
return new AllMobFilter("allow-mobs", true);
case "deny-mobs":
return new AllMobFilter("deny-mobs", false);
case "allow":
return new AllowFilter(new ChildrenFilterParser(element));
case "deny":
return new DenyFilter(new ChildrenFilterParser(element));
default:
for (Element filterElement : document.getRootElement().getChildren("filters")) {
for (Element givenFilter : filterElement.getChildren()) {
if (givenFilter.getAttributeValue("name").equalsIgnoreCase(element.getAttributeValue("name")))
return getFilter(givenFilter.getChildren().get(0));
if (givenFilter.getAttributeValue("id").equalsIgnoreCase(element.getAttributeValue("id")))
if (givenFilter.getAttributeValue("id") != null && givenFilter.getAttributeValue("id").equalsIgnoreCase(id))
return getFilter(givenFilter.getChildren().get(0));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,24 @@

import in.twizmwaz.cardinal.event.CardinalDeathEvent;
import in.twizmwaz.cardinal.module.Module;
import in.twizmwaz.cardinal.module.ModuleCollection;
import in.twizmwaz.cardinal.module.modules.filter.FilterModule;
import in.twizmwaz.cardinal.module.modules.filter.FilterState;
import in.twizmwaz.cardinal.module.modules.kit.Kit;
import in.twizmwaz.cardinal.module.modules.kit.KitNode;
import in.twizmwaz.cardinal.module.modules.kit.kitTypes.KitItem;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;

public class KillReward implements Module {

private final ModuleCollection<Kit> kits;
private final ModuleCollection<FilterModule> filters;
private final KitItem item;
private final KitNode kit;
private final FilterModule filter;

protected KillReward(final ModuleCollection<Kit> kits, final ModuleCollection<FilterModule> filters) {
this.kits = kits;
this.filters = filters;
protected KillReward(KitItem item, KitNode kit, final FilterModule filter) {
this.item = item;
this.kit = kit;
this.filter = filter;
}

@Override
Expand All @@ -29,15 +31,14 @@ public void unload() {
public void onCardinalDeath(CardinalDeathEvent event) {
if (event.getKiller() != null && event.getKiller().getHealth() > 0) {
Player killer = event.getKiller();
boolean proceed = true;
for (FilterModule filter : this.filters) {
if (filter.evaluate(killer).equals(FilterState.DENY)) {
proceed = false;
}
}
if (proceed) {
for (Kit kit : kits) {
kit.apply(killer);
if (!filter.evaluate(killer).equals(FilterState.DENY)) {
if (kit != null) kit.apply(killer, null);
if (item != null) {
if (!item.hasSlot() || killer.getInventory().getItem(item.getSlot()) != null) {
killer.getInventory().addItem(item.getItem());
} else {
killer.getInventory().setItem(item.getSlot(), item.getItem());
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package in.twizmwaz.cardinal.module.modules.killReward;

import in.twizmwaz.cardinal.GameHandler;
import in.twizmwaz.cardinal.match.Match;
import in.twizmwaz.cardinal.module.ModuleBuilder;
import in.twizmwaz.cardinal.module.ModuleCollection;
import in.twizmwaz.cardinal.module.modules.filter.FilterModule;
import in.twizmwaz.cardinal.module.modules.filter.FilterModuleBuilder;
import in.twizmwaz.cardinal.module.modules.kit.Kit;
import in.twizmwaz.cardinal.module.modules.kit.KitBuilder;
import in.twizmwaz.cardinal.module.modules.kit.KitNode;
import in.twizmwaz.cardinal.module.modules.kit.kitTypes.KitItem;
import in.twizmwaz.cardinal.util.Parser;
import org.jdom2.Element;

public class KillRewardBuilder implements ModuleBuilder {
Expand All @@ -16,13 +17,20 @@ public class KillRewardBuilder implements ModuleBuilder {
public ModuleCollection<KillReward> load(Match match) {
ModuleCollection<KillReward> results = new ModuleCollection<>();
for (Element element : match.getDocument().getRootElement().getChildren("killreward")) {
ModuleCollection<Kit> kits = new ModuleCollection<>();
kits.add(KitBuilder.getKit(element, GameHandler.getGameHandler().getMatch().getDocument(), true));
ModuleCollection<FilterModule> filters = new ModuleCollection<>();
for (Element filter : element.getChildren("filter")) {
filters.add(FilterModuleBuilder.getFilter(filter.getChildren().get(0)));
KitNode kit = null;
if (element.getAttributeValue("kit") != null) kit = KitNode.getKitByName(element.getAttributeValue("kit"));
if (element.getChild("kit") != null) kit = KitBuilder.getKit(element.getChild("kit"));

KitItem item = null;
if (element.getChild("item") != null) {
item = Parser.getKitItem(element.getChild("item"));
}
results.add(new KillReward(kits, filters));

FilterModule filter = FilterModuleBuilder.getFilter("always");
if (element.getAttributeValue("filter") != null) filter = FilterModuleBuilder.getFilter(element.getAttributeValue("filter"));
if (element.getChild("filter") != null) filter = FilterModuleBuilder.getFilter(element.getChild("filter"));

results.add(new KillReward(item, kit, filter));
}
return results;
}
Expand Down
Loading

0 comments on commit 19d5a70

Please sign in to comment.