Skip to content

Commit

Permalink
add a bugworkaround for clicks event doublefiring
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Aug 12, 2019
1 parent 4f3bdc6 commit 7b2d254
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
2 changes: 2 additions & 0 deletions plugin/src/main/java/com/denizenscript/denizen/Denizen.java
Expand Up @@ -6,6 +6,7 @@
import com.denizenscript.denizen.events.core.CuboidEnterExitSmartEvent;
import com.denizenscript.denizen.events.core.FlagSmartEvent;
import com.denizenscript.denizen.events.core.NPCNavigationSmartEvent;
import com.denizenscript.denizen.events.player.PlayerRightClicksEntityScriptEvent;
import com.denizenscript.denizen.flags.FlagManager;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.NPCTag;
Expand Down Expand Up @@ -422,6 +423,7 @@ public void run() {
getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
PlayerRightClicksEntityScriptEvent.instance.clickedThisFrame.clear();
DenizenCore.tick(50); // Sadly, minecraft has no delta timing, so a tick is always 50ms.
}
}, 1, 1);
Expand Down
Expand Up @@ -40,7 +40,7 @@ public class PlayerItemTakesDamageScriptEvent extends BukkitScriptEvent implemen
//
// -->

PlayerItemTakesDamageScriptEvent instance;
public static PlayerItemTakesDamageScriptEvent instance;
PlayerItemDamageEvent event;
ElementTag damage;
ItemTag item;
Expand Down
Expand Up @@ -15,6 +15,9 @@
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.EquipmentSlot;

import java.util.HashSet;
import java.util.UUID;


public class PlayerRightClicksEntityScriptEvent extends BukkitScriptEvent implements Listener {

Expand All @@ -40,7 +43,7 @@ public class PlayerRightClicksEntityScriptEvent extends BukkitScriptEvent implem
//
// -->

PlayerRightClicksEntityScriptEvent instance;
public static PlayerRightClicksEntityScriptEvent instance;
PlayerInteractEntityEvent event;
EntityTag entity;
ItemTag item;
Expand Down Expand Up @@ -120,10 +123,17 @@ public void playerRightClicksEntity(PlayerInteractEntityEvent event) {
playerRightClicksEntityHandler(event);
}

public HashSet<UUID> clickedThisFrame = new HashSet<>();

public void playerRightClicksEntityHandler(PlayerInteractEntityEvent event) {
if (event.getHand() == EquipmentSlot.OFF_HAND) {
return;
}
// Event tends to double-fire, use cooldown to prevent that
if (clickedThisFrame.contains(event.getPlayer().getUniqueId())) {
return;
}
clickedThisFrame.add(event.getPlayer().getUniqueId());
entity = new EntityTag(event.getRightClicked());
item = new ItemTag(event.getPlayer().getItemInHand());
location = new LocationTag(event.getRightClicked().getLocation());
Expand Down

0 comments on commit 7b2d254

Please sign in to comment.