Merging branches 1 new mission type
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
package com.massivecraft.factions.missions;
|
||||
|
||||
import com.massivecraft.factions.FactionsPlugin;
|
||||
import com.massivecraft.factions.cmd.CommandContext;
|
||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||
import com.massivecraft.factions.cmd.FCommand;
|
||||
import com.massivecraft.factions.struct.Permission;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
@@ -12,28 +15,24 @@ public class CmdMissions extends FCommand {
|
||||
this.aliases.add("objectives");
|
||||
this.aliases.add("objective");
|
||||
|
||||
this.permission = Permission.MISSIONS.node;
|
||||
|
||||
this.disableOnLock = true;
|
||||
this.disableOnSpam = true;
|
||||
|
||||
senderMustBePlayer = true;
|
||||
senderMustBeMember = true;
|
||||
senderMustBeModerator = false;
|
||||
senderMustBeAdmin = false;
|
||||
this.requirements = new CommandRequirements.Builder(Permission.MISSIONS)
|
||||
.memberOnly()
|
||||
.playerOnly()
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void perform() {
|
||||
if (myFaction == null) {
|
||||
public void perform(CommandContext context) {
|
||||
if (context.faction == null) {
|
||||
return;
|
||||
}
|
||||
final MissionGUI missionsGUI = new MissionGUI(p, fme);
|
||||
final MissionGUI missionsGUI = new MissionGUI(FactionsPlugin.getInstance(), context.fPlayer);
|
||||
missionsGUI.build();
|
||||
fme.getPlayer().openInventory(missionsGUI.getInventory());
|
||||
context.player.openInventory(missionsGUI.getInventory());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public TL getUsageTranslation() {
|
||||
return TL.COMMAND_MISSION_DESCRIPTION;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.massivecraft.factions.missions;
|
||||
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.P;
|
||||
import com.massivecraft.factions.FactionsPlugin;
|
||||
import com.massivecraft.factions.util.FactionGUI;
|
||||
import com.massivecraft.factions.util.XMaterial;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
@@ -20,12 +20,12 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MissionGUI implements FactionGUI {
|
||||
private P plugin;
|
||||
private FactionsPlugin plugin;
|
||||
private FPlayer fPlayer;
|
||||
private Inventory inventory;
|
||||
private Map<Integer, String> slots;
|
||||
|
||||
public MissionGUI(P plugin, FPlayer fPlayer) {
|
||||
public MissionGUI(FactionsPlugin plugin, FPlayer fPlayer) {
|
||||
this.slots = new HashMap<>();
|
||||
this.plugin = plugin;
|
||||
this.fPlayer = fPlayer;
|
||||
|
||||
@@ -2,9 +2,11 @@ package com.massivecraft.factions.missions;
|
||||
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.FPlayers;
|
||||
import com.massivecraft.factions.P;
|
||||
import com.massivecraft.factions.FactionsPlugin;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -12,6 +14,7 @@ import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityBreedEvent;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.event.entity.EntityTameEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent;
|
||||
|
||||
import java.util.List;
|
||||
@@ -19,9 +22,9 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class MissionHandler implements Listener {
|
||||
|
||||
private P plugin;
|
||||
private FactionsPlugin plugin;
|
||||
|
||||
public MissionHandler(P plugin) {
|
||||
public MissionHandler(FactionsPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@@ -116,12 +119,32 @@ public class MissionHandler implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerTame(EntityTameEvent event) {
|
||||
if (!(event.getOwner() instanceof Player)) {
|
||||
return;
|
||||
}
|
||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer((Player)event.getOwner());
|
||||
if (fPlayer == null) {
|
||||
return;
|
||||
}
|
||||
List<Mission> missions = fPlayer.getFaction().getMissions().values().stream().filter(mission -> mission.getType().equalsIgnoreCase("tame")).collect(Collectors.toList());
|
||||
for (Mission mission2 : missions) {
|
||||
ConfigurationSection section = plugin.getConfig().getConfigurationSection("Missions").getConfigurationSection(mission2.getName());
|
||||
if (!event.getEntityType().toString().equals(section.getConfigurationSection("Mission").getString("EntityType"))) {
|
||||
continue;
|
||||
}
|
||||
mission2.incrementProgress();
|
||||
checkIfDone(fPlayer, mission2, section);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkIfDone(FPlayer fPlayer, Mission mission, ConfigurationSection section) {
|
||||
if (mission.getProgress() < section.getConfigurationSection("Mission").getLong("Amount")) {
|
||||
return;
|
||||
}
|
||||
for (String command : section.getConfigurationSection("Reward").getStringList("Commands")) {
|
||||
P.p.getServer().dispatchCommand(P.p.getServer().getConsoleSender(), command.replace("%faction%", fPlayer.getFaction().getTag()));
|
||||
FactionsPlugin.getInstance().getServer().dispatchCommand(FactionsPlugin.getInstance().getServer().getConsoleSender(), command.replace("%faction%", fPlayer.getFaction().getTag()));
|
||||
}
|
||||
fPlayer.getFaction().getMissions().remove(mission.getName());
|
||||
fPlayer.getFaction().msg(TL.MISSION_MISSION_FINISHED, plugin.color(section.getString("Name")));
|
||||
|
||||
Reference in New Issue
Block a user