Added 3 more quests

Prevented killing the npc
Made more things configurable
Moved things to the right config
This commit is contained in:
2022-06-03 00:34:02 +02:00
parent 39900153d8
commit c0cb9cae98
24 changed files with 770 additions and 60 deletions
@@ -0,0 +1,51 @@
package com.alttd.altitudequests.events;
import com.alttd.altitudequests.config.LocalConfig;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Wolf;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityPotionEffectEvent;
import org.bukkit.event.vehicle.VehicleEnterEvent;
public class DonNotMessWithNPC implements Listener {
@EventHandler
public void onVehicleEnter(VehicleEnterEvent event) {
Entity entered = event.getEntered();
if (!(entered instanceof Wolf))
return;
if (LocalConfig.activeNPC.equals(entered.getUniqueId()))
event.setCancelled(true);
}
@EventHandler
public void onVillagerPotioned(EntityPotionEffectEvent event) {
Entity entity = event.getEntity();
if (!(entity instanceof Wolf))
return;
if (LocalConfig.activeNPC.equals(entity.getUniqueId()))
event.setCancelled(true);
}
@EventHandler
public void onVillagerEntityDamage(EntityDamageByEntityEvent event) {
Entity entity = event.getEntity();
if (!(entity instanceof Wolf))
return;
if (LocalConfig.activeNPC.equals(entity.getUniqueId()))
event.setCancelled(true);
}
@EventHandler
public void onVillagerBlockDamage(EntityDamageByBlockEvent event) {
Entity entity = event.getEntity();
if (!(entity instanceof Wolf))
return;
if (LocalConfig.activeNPC.equals(entity.getUniqueId()))
event.setCancelled(true);
}
}
@@ -0,0 +1,25 @@
package com.alttd.altitudequests.events;
import com.alttd.altitudequests.objects.Quest;
import com.alttd.altitudequests.objects.quests.BreedMobsQuest;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityBreedEvent;
public class EntityBreed implements Listener {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityBreed(EntityBreedEvent event) {
if (!(event.getBreeder() instanceof Player player))
return;
Quest dailyQuest = Quest.getDailyQuest(player.getUniqueId());
if (dailyQuest == null || dailyQuest.isDone())
return;
if (dailyQuest instanceof BreedMobsQuest breedMobsQuest) {
breedMobsQuest.breed(event.getMother());
}
}
}
@@ -0,0 +1,29 @@
package com.alttd.altitudequests.events;
import com.alttd.altitudequests.objects.Quest;
import com.alttd.altitudequests.objects.quests.CollectDropsQuest;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketFillEvent;
import org.bukkit.inventory.ItemStack;
import java.util.List;
public class EntityBucketed implements Listener {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBucketFill(PlayerBucketFillEvent event) {
Player player = event.getPlayer();
Quest dailyQuest = Quest.getDailyQuest(player.getUniqueId());
if (dailyQuest == null || dailyQuest.isDone())
return;
if (dailyQuest instanceof CollectDropsQuest collectDropsQuest) {
ItemStack itemStack = event.getItemStack();
if (itemStack != null)
collectDropsQuest.collectDrops(List.of(itemStack));
}
}
}
@@ -0,0 +1,31 @@
package com.alttd.altitudequests.events;
import com.alttd.altitudequests.objects.Quest;
import com.alttd.altitudequests.objects.quests.CollectDropsQuest;
import com.alttd.altitudequests.objects.quests.KillMobsQuest;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
public class EntityDeath implements Listener {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityDeath(EntityDeathEvent event) {
LivingEntity entity = event.getEntity();
Player player = entity.getKiller();
if (player == null)
return;
Quest dailyQuest = Quest.getDailyQuest(player.getUniqueId());
if (dailyQuest == null || dailyQuest.isDone())
return;
if (dailyQuest instanceof KillMobsQuest killMobsQuest) {
killMobsQuest.kill(entity);
} else if (dailyQuest instanceof CollectDropsQuest collectDropsQuest) {
collectDropsQuest.collectDrops(event.getDrops());
}
}
}
@@ -0,0 +1,25 @@
package com.alttd.altitudequests.events;
import com.alttd.altitudequests.objects.Quest;
import com.alttd.altitudequests.objects.quests.CollectDropsQuest;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerShearEntityEvent;
import java.util.List;
public class EntitySheared implements Listener {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityShear(PlayerShearEntityEvent event) {
Player player = event.getPlayer();
Quest dailyQuest = Quest.getDailyQuest(player.getUniqueId());
if (dailyQuest == null || dailyQuest.isDone())
return;
if (dailyQuest instanceof CollectDropsQuest collectDropsQuest) {
collectDropsQuest.collectDrops(List.of(event.getItem()));
}
}
}
@@ -31,7 +31,7 @@ public class PluginMessageListener implements org.bukkit.plugin.messaging.Plugin
case "try-lock-result" -> {
if (!in.readBoolean()) {
Logger.warning("Unable to lock row");
return; //TODO handle
return;
}
UUID uuid = UUID.fromString(in.readUTF());
if (Config.DEBUG)
@@ -49,7 +49,7 @@ public class PluginMessageListener implements org.bukkit.plugin.messaging.Plugin
case "locked-queue-lock" -> {
if (!in.readBoolean()) {
Logger.warning("Got false back from locked queue lock");
return; //TODO handle
return;
}
UUID uuid = UUID.fromString(in.readUTF());
if (Config.DEBUG)
@@ -36,7 +36,5 @@ public class TalkToQuest implements Listener {
inProcess.remove(uniqueId);
}
}.runTaskAsynchronously(AQuest.getInstance());
//TODO make it so everything can be done with commands and just don't let them tab complete and do them through the book instead
//TODO in config allow a multitude of events to be prepared and randomly select from them at certain times of day?
}
}