mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2025-02-08 12:21:23 +01:00
Better handling of fake events
This commit is contained in:
parent
44d0785f73
commit
7d93031aeb
@ -65,7 +65,6 @@ public class BlockInfo {
|
||||
if (condition instanceof BlockCondition)
|
||||
conditions.add((BlockCondition) condition);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean getOption(BlockInfoOption option) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.Indyuce.mmocore.api.player.profess.event.trigger;
|
||||
|
||||
import io.lumine.mythic.lib.UtilityMethods;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
@ -17,6 +18,8 @@ public class BlockBrokenTrigger implements EventTriggerHandler {
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void a(BlockBreakEvent event) {
|
||||
if (UtilityMethods.isFake(event)) return;
|
||||
|
||||
PlayerData player = PlayerData.get(event.getPlayer());
|
||||
if (player.getProfess().hasEventTriggers("break-block"))
|
||||
player.getProfess().getEventTriggers("break-block").getTriggers().forEach(trigger -> trigger.apply(player));
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.Indyuce.mmocore.api.quest.objective;
|
||||
|
||||
import io.lumine.mythic.lib.UtilityMethods;
|
||||
import net.Indyuce.mmocore.api.quest.ObjectiveProgress;
|
||||
import net.Indyuce.mmocore.api.event.CustomBlockMineEvent;
|
||||
import net.Indyuce.mmocore.api.quest.QuestProgress;
|
||||
@ -42,6 +43,8 @@ public class MineBlockObjective extends Objective {
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void a(BlockBreakEvent event) {
|
||||
if(!getQuestProgress().getPlayer().isOnline()) return;
|
||||
if (UtilityMethods.isFake(event)) return;
|
||||
|
||||
if ((!playerPlaced) && event.getBlock().hasMetadata("player_placed"))
|
||||
return;
|
||||
if (event.getPlayer().equals(getQuestProgress().getPlayer().getPlayer()) && event.getBlock().getType() == block) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package net.Indyuce.mmocore.experience.source;
|
||||
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.UtilityMethods;
|
||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.experience.source.type.SpecificExperienceSource;
|
||||
@ -21,7 +22,7 @@ public class MineBlockExperienceSource extends SpecificExperienceSource<Material
|
||||
|
||||
/**
|
||||
* Set to false by default.
|
||||
*
|
||||
* <p>
|
||||
* When set to true, the exp source will trigger when breaking
|
||||
* blocks that were placed by players. This can be used for crops
|
||||
*/
|
||||
@ -39,12 +40,11 @@ public class MineBlockExperienceSource extends SpecificExperienceSource<Material
|
||||
|
||||
@Override
|
||||
public ExperienceSourceManager<MineBlockExperienceSource> newManager() {
|
||||
return
|
||||
new ExperienceSourceManager<MineBlockExperienceSource>() {
|
||||
return new ExperienceSourceManager<MineBlockExperienceSource>() {
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void a(BlockBreakEvent event) {
|
||||
if (event.getPlayer().getGameMode() != GameMode.SURVIVAL)
|
||||
return;
|
||||
if (event.getPlayer().getGameMode() != GameMode.SURVIVAL) return;
|
||||
if (UtilityMethods.isFake(event)) return;
|
||||
|
||||
PlayerData data = PlayerData.get(event.getPlayer());
|
||||
|
||||
|
@ -75,6 +75,9 @@ public class BlockListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
// Broken can be broken, if event is fake then skip it.
|
||||
if (UtilityMethods.isFake(event)) return;
|
||||
|
||||
boolean canBreak = true;
|
||||
ItemStack item = player.getInventory().getItemInMainHand();
|
||||
if (!MMOCore.plugin.restrictionManager.checkPermissions(item, info.getBlock())) {
|
||||
@ -148,6 +151,7 @@ public class BlockListener implements Listener {
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void unregisterPlayerPlacedBlocksTag(BlockBreakEvent event) {
|
||||
if (UtilityMethods.isFake(event)) return;
|
||||
event.getBlock().removeMetadata("player_placed", MMOCore.plugin);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user