Skip to content

Commit

Permalink
Patched "Sword + Golden Apple" and canceled the crystal placement wit…
Browse files Browse the repository at this point in the history
…h offhand while eating
  • Loading branch information
ciruu1 committed Apr 11, 2021
1 parent 126aeeb commit b164d6d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 6 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>me.ciruu</groupId>
<artifactId>offhandpatch</artifactId>
<version>1.0</version>
<version>1.1</version>
<packaging>jar</packaging>

<name>OffhandPatch</name>
Expand Down
32 changes: 27 additions & 5 deletions src/main/java/me/ciruu/offhandpatch/Offhandpatch.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

Expand All @@ -26,12 +28,32 @@ public void onEntityAttack(EntityDamageByEntityEvent event) {
Player player = (Player) event.getDamager();
ItemStack mainHand = player.getInventory().getItemInMainHand();
ItemStack offHand = player.getInventory().getItemInOffHand();
if (player.getActiveItem().getType() == Material.GOLDEN_APPLE &&
((offHand.getType() == Material.END_CRYSTAL && mainHand.getType() == Material.GOLDEN_APPLE) ||
(mainHand.getType() == Material.END_CRYSTAL && offHand.getType() == Material.GOLDEN_APPLE))
) {
if (cancelAttack(mainHand.getType(), offHand.getType(), player))
event.setCancelled(true);
}
}
}

@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Player player = event.getPlayer();
ItemStack mainHand = player.getInventory().getItemInMainHand();
ItemStack offHand = player.getInventory().getItemInOffHand();

// Make sure that the player is interacting with an end crystal
if (event.getMaterial() == Material.END_CRYSTAL && cancelPlace(mainHand.getType(), offHand.getType(), player))
event.setCancelled(true);
}
}

private boolean cancelAttack(Material mainHand, Material offHand, Player player) {
return ((mainHand == Material.GOLDEN_APPLE && offHand == Material.END_CRYSTAL) ||
((mainHand == Material.END_CRYSTAL || mainHand == Material.DIAMOND_SWORD) && offHand == Material.GOLDEN_APPLE)
&& player.getActiveItem().getType() == Material.GOLDEN_APPLE);
}

private boolean cancelPlace(Material mainHand, Material offHand, Player player) {
return (mainHand == Material.GOLDEN_APPLE && offHand == Material.END_CRYSTAL) ||
(mainHand == Material.END_CRYSTAL && offHand == Material.GOLDEN_APPLE && player.getActiveItem().getType() == Material.GOLDEN_APPLE);
}
}

0 comments on commit b164d6d

Please sign in to comment.