Skip to content

Commit

Permalink
Lang rework 25
Browse files Browse the repository at this point in the history
Removed custom Tag implementation - paper already provides the information
Description of actions to Map of Components
Updated Effect Action to use the new paper implementation
Redtext of BroadcastAction to MessageType
time MenuItem parses input properly
Moved methods from utils to more intuitive locations
removed paperlib import/shading
Fix Loadout action equip on Trigger not working
RandomFillingAction uses BlockData now
  • Loading branch information
FireInstall committed Feb 22, 2024
1 parent 7c7b3bb commit 5241a57
Show file tree
Hide file tree
Showing 191 changed files with 2,093 additions and 2,108 deletions.
12 changes: 0 additions & 12 deletions Minigames/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,6 @@
<version>3.0.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.papermc</groupId>
<artifactId>paperlib</artifactId>
<version>1.0.7</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.seeseemelk</groupId>
<artifactId>MockBukkit-v1.20</artifactId>
Expand Down Expand Up @@ -197,7 +191,6 @@
<artifactSet>
<includes>
<include>org.bstats:*</include>
<include>io.papermc:paperlib</include>
<include>org.kitteh:paste-gg-api</include>
</includes>
</artifactSet>
Expand All @@ -206,11 +199,6 @@
<pattern>org.bstats</pattern>
<shadedPattern>au.com.mineauz.minigames</shadedPattern>
</relocation>
<relocation>
<pattern>io.papermc.lib</pattern>
<shadedPattern>au.com.mineauz.minigames.paperlib
</shadedPattern> <!-- Replace this -->
</relocation>
<relocation>
<pattern>org.kitteh.pastegg</pattern>
<shadedPattern>au.com.mineauz.minigames.pastegg</shadedPattern>
Expand Down
53 changes: 28 additions & 25 deletions Minigames/src/main/java/au/com/mineauz/minigames/Events.java
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ public void playerInteract(@NotNull PlayerInteractEvent event) {

ItemStack item = event.getItem();
//nullcheck in isMinigameTool()
if (MinigameUtils.isMinigameTool(item) && mgPlayer.getPlayer().hasPermission("minigame.tool")) {
if (MinigameTool.isMinigameTool(item) && mgPlayer.getPlayer().hasPermission("minigame.tool")) {
MinigameTool tool = new MinigameTool(item);
event.setCancelled(true);

Expand Down Expand Up @@ -500,7 +500,7 @@ else if (mgPlayer.isInMinigame() && mgPlayer.getMinigame().getState() == Minigam
if (event.getDamager() instanceof Player player) {
MinigamePlayer mgPlayer = pdata.getMinigamePlayer(player);
ItemStack item = player.getEquipment().getItemInMainHand();
if (MinigameUtils.isMinigameTool(item) && player.hasPermission("minigame.tool")) {
if (MinigameTool.isMinigameTool(item) && player.hasPermission("minigame.tool")) {
if (mgPlayer.isInMinigame()) {
MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MinigameLangKey.TOOL_ERROR_INMINIGAME);
return;
Expand All @@ -520,7 +520,7 @@ private void playerRightClickEntity(@NotNull PlayerInteractEntityEvent event) {
Player player = event.getPlayer();
MinigamePlayer mgPlayer = pdata.getMinigamePlayer(player);
ItemStack item = player.getEquipment().getItemInMainHand();
if (MinigameUtils.isMinigameTool(item) && player.hasPermission("minigame.tool")) {
if (MinigameTool.isMinigameTool(item) && player.hasPermission("minigame.tool")) {
if (mgPlayer.isInMinigame()) {
MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MinigameLangKey.TOOL_ERROR_INMINIGAME);
return;
Expand Down Expand Up @@ -777,19 +777,20 @@ private void breakScoreboard(@NotNull BlockBreakEvent event) {

@EventHandler(ignoreCancelled = true)
private void potionAffectsPlayer(@NotNull PotionSplashEvent event) {
if (!(event.getPotion().getShooter() instanceof Player)) return;
MinigamePlayer mgPlayer = pdata.getMinigamePlayer((Player) event.getPotion().getShooter());
if (!mgPlayer.isInMinigame()) return;
if (mgPlayer.getMinigame().friendlyFireSplashPotions()) return;
List<Player> list = event.getAffectedEntities().stream()
.filter(p -> p instanceof Player)
.filter(p -> pdata.getMinigamePlayer((Player) p).isInMinigame())
.filter(p -> pdata.getMinigamePlayer((Player) p).getMinigame() == mgPlayer.getMinigame())
.map(p -> (Player) p)
.toList();
if (list.isEmpty()) return;
List<PotionEffectType> effects = event.getPotion().getEffects().stream().map(PotionEffect::getType).toList();
list.stream().filter(Predicate.not(p -> isEffectApplicable(effects, mgPlayer, pdata.getMinigamePlayer(p)))).forEach(p -> event.setIntensity(p, 0.0));
if (event.getPotion().getShooter() instanceof Player player) {
MinigamePlayer mgPlayer = pdata.getMinigamePlayer(player);
if (!mgPlayer.isInMinigame()) return;
if (mgPlayer.getMinigame().friendlyFireSplashPotions()) return;
List<Player> list = event.getAffectedEntities().stream()
.filter(e -> e instanceof Player)
.map(p -> (Player) p)
.filter(p -> pdata.getMinigamePlayer(p).isInMinigame())
.filter(p -> pdata.getMinigamePlayer(p).getMinigame() == mgPlayer.getMinigame())
.toList();
if (list.isEmpty()) return;
List<PotionEffectType> effects = event.getPotion().getEffects().stream().map(PotionEffect::getType).toList();
list.stream().filter(Predicate.not(p -> isEffectApplicable(effects, mgPlayer, pdata.getMinigamePlayer(p)))).forEach(p -> event.setIntensity(p, 0.0));
}
}

@EventHandler(ignoreCancelled = true)
Expand All @@ -810,16 +811,18 @@ private void effectAreaAffectsPlayer(@NotNull AreaEffectCloudApplyEvent event) {
event.getAffectedEntities().removeAll(list.stream().filter(Predicate.not(p -> isEffectApplicable(effects, mgPlayer, pdata.getMinigamePlayer(p)))).toList());
}

private boolean isEffectApplicable(@NotNull Collection<@NotNull PotionEffectType> effectTypes, @NotNull MinigamePlayer mgPlayerEffecting, @NotNull MinigamePlayer mgPlayerReceiving) {
if (!mgPlayerEffecting.getMinigame().isTeamGame()) {
if (mgPlayerEffecting == mgPlayerReceiving) {
return !MinigameTag.NEGATIVE_POTION_EFFECT.allTagged(effectTypes);
private boolean isEffectApplicable(@NotNull Collection<@NotNull PotionEffectType> effectTypes,
@NotNull MinigamePlayer mgPlayerEffecting, @NotNull MinigamePlayer mgPlayerReceiving) {
if (mgPlayerEffecting.getMinigame().isTeamGame()) {
if (mgPlayerEffecting.getTeam() == mgPlayerReceiving.getTeam()) {
return effectTypes.stream().noneMatch(s -> s.getEffectCategory() == PotionEffectType.Category.HARMFUL);
} else {
return effectTypes.stream().anyMatch(s -> s.getEffectCategory() == PotionEffectType.Category.BENEFICIAL);
}
return !MinigameTag.POSITIVE_POTION_EFFECT.allTagged(effectTypes);
}
if (mgPlayerEffecting.getTeam() == mgPlayerReceiving.getTeam()) {
return !MinigameTag.NEGATIVE_POTION_EFFECT.allTagged(effectTypes);
} else if (mgPlayerEffecting == mgPlayerReceiving) {
return effectTypes.stream().noneMatch(s -> s.getEffectCategory() == PotionEffectType.Category.HARMFUL);
} else {
return effectTypes.stream().noneMatch(s -> s.getEffectCategory() == PotionEffectType.Category.BENEFICIAL);
}
return !MinigameTag.POSITIVE_POTION_EFFECT.allTagged(effectTypes);
}
}
124 changes: 0 additions & 124 deletions Minigames/src/main/java/au/com/mineauz/minigames/MinigameTag.java

This file was deleted.

105 changes: 9 additions & 96 deletions Minigames/src/main/java/au/com/mineauz/minigames/MinigameUtils.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,28 @@
package au.com.mineauz.minigames;

import au.com.mineauz.minigames.managers.MinigameMessageManager;
import au.com.mineauz.minigames.managers.language.MinigameMessageType;
import au.com.mineauz.minigames.managers.language.MinigamePlaceHolderKey;
import au.com.mineauz.minigames.managers.language.langkeys.MinigameLangKey;
import au.com.mineauz.minigames.objects.MinigamePlayer;
import au.com.mineauz.minigames.tool.MinigameTool;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.time.Duration;
import java.util.List;
import java.util.Stack;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MinigameUtils {
private static final @NotNull Pattern PERIOD_PATTERN = Pattern.compile("(\\d+)\\s*((ms)|[tsmhdw])", Pattern.CASE_INSENSITIVE);
private static final @NotNull Pattern PERIOD_PATTERN = Pattern.compile("(\\d+)\\s*((?:ms)|[tsmhdw])", Pattern.CASE_INSENSITIVE);
private static final @NotNull Pattern LONG_PATTERN = Pattern.compile("-?[0-9]+");

/**
* Try to get a time period of a string.
Expand All @@ -37,6 +35,10 @@ public class MinigameUtils {
Matcher matcher = PERIOD_PATTERN.matcher(periodStr);
Long millis = null;

if (LONG_PATTERN.matcher(periodStr).matches()) {
return TimeUnit.SECONDS.toMillis(Long.parseLong(periodStr));
}

while (matcher.find()) {
// we got a match.
if (millis == null) {
Expand Down Expand Up @@ -163,95 +165,6 @@ public static String createLocationID(Location location) {
return location.getBlockX() + ":" + location.getBlockY() + ":" + location.getBlockZ() + ":" + location.getWorld().getName();
}

/**
* Gives the defined player a Minigame tool.
*
* @param player - The player to give the tool to.
* @return The Minigame Tool
*/
public static MinigameTool giveMinigameTool(MinigamePlayer player) {
Material toolMat = Material.matchMaterial(Minigames.getPlugin().getConfig().getString("tool"));
if (toolMat == null) {
toolMat = Material.BLAZE_ROD;
MinigameMessageManager.sendMgMessage(player, MinigameMessageType.ERROR, MinigameLangKey.MINIGAME_ERROR_NODEFAULTTOOL);
}

ItemStack tool = new ItemStack(toolMat);
MinigameTool mgTool = new MinigameTool(tool);

player.getPlayer().getInventory().addItem(mgTool.getTool());

return mgTool;
}

/**
* Checks if a player has a Minigame tool.
*
* @param player The player to check
* @return false if the player doesn't have one.
*/
public static boolean hasMinigameTool(MinigamePlayer player) {
for (ItemStack i : player.getPlayer().getInventory().getContents()) {
if (i != null && i.getItemMeta() != null &&
i.getItemMeta().getDisplayName().equals(ChatColor.GREEN + "Minigame Tool")) {
return true;
}
}
return false;
}

/**
* Checks if a specific item is a Minigame tool
*
* @param item The item to check
* @return false if the item was not a Minigame tool
*/
public static boolean isMinigameTool(@Nullable ItemStack item) {
return item != null && item.getItemMeta() != null && item.getItemMeta().displayName() != null && item.getItemMeta().getDisplayName().equals(ChatColor.GREEN + "Minigame Tool");
}

/**
* Gets the item, Minigames considers as a Minigame tool, from the players inventory
* It will prefer the item in main/offhand
*
* @param player The player to get the tool from
* @return null if no tool was found
*/
public static @Nullable MinigameTool getMinigameTool(@NotNull MinigamePlayer player) {
ItemStack inHand = player.getPlayer().getInventory().getItemInMainHand();
if (isMinigameTool(inHand)) {
return new MinigameTool(inHand);
}

inHand = player.getPlayer().getInventory().getItemInOffHand();
if (isMinigameTool(inHand)) {
return new MinigameTool(inHand);
}

//was not in hands, search in inventory.
for (ItemStack item : player.getPlayer().getInventory().getContents()) {
if (isMinigameTool(item)) {
return new MinigameTool(item);
}
}
return null;
}

/**
* Automatically assembles a tab complete array for the use in commands, matching a given string.
*
* @param orig The full list to match the string to
* @param match The string used to match
* @return A list of possible tab completions
*/
public static List<String> tabCompleteMatch(List<String> orig, String match) {
if (match.isEmpty()) {
return orig;
} else {
return orig.stream().filter(m -> m.toLowerCase().startsWith(match.toLowerCase())).toList();
}
}

/**
* Loads a short location (x, y, z, world) from a configuration section
*
Expand Down
Loading

0 comments on commit 5241a57

Please sign in to comment.