Compare commits

..

65 Commits

Author SHA1 Message Date
beddbe42dd Merge branch 'main' into merge-branch-between-main-and-dev 2023-07-11 12:12:09 -05:00
fefb750b47 Merge branch 'development' of https://github.com/AtlasMediaGroup/TotalFreedomMod into development 2023-07-11 12:11:25 -05:00
bd5edc3156 Merge branch 'main' of https://github.com/AtlasMediaGroup/TotalFreedomMod 2023-07-11 12:10:51 -05:00
cc13d9cf49 Remove UUID from vanished list on removal (#298)
Co-authored-by: Ryan <Wild1145@users.noreply.github.com>
Co-authored-by: Paldiu <pawereus@gmail.com>
2023-07-11 12:07:18 -05:00
96be5f1149 Bump worldedit-bukkit from 7.2.12 to 7.2.15
Bumps worldedit-bukkit from 7.2.12 to 7.2.15.

---
updated-dependencies:
- dependency-name: com.sk89q.worldedit:worldedit-bukkit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-11 12:07:18 -05:00
d7da199d26 Bump actions/setup-java from 3.6.0 to 3.9.0 (#291)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.6.0 to 3.9.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3.6.0...v3.9.0)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ryan <Wild1145@users.noreply.github.com>
2023-07-11 12:07:14 -05:00
64f4fbfe18 Add logging to ro command - FS-233 (#282)
* Add logging to ro command - FS-233

* Create a variable for API instead of calling method every time

Co-authored-by: Paldiu <pawereus@gmail.com>
Co-authored-by: Ryan <Wild1145@users.noreply.github.com>
2023-07-11 12:07:14 -05:00
fa1b6dde4c Go fuck yourself Codacy
Codacy complained about me forgetting a "default" case in my rewrite of /moblimiter, so I have to do this shit.
2023-07-11 12:06:59 -05:00
6a5b5c241e A few more changes
- Cleans up /potion a tiny bit
- Rewrites part of /moblimiter
- Resolves FS-346 by cleaning up /setlever
- Modernizes /opall a bit
- Changes more components to use Adventure
2023-07-11 12:06:59 -05:00
cec506f148 Too much shit to list in the commit name
- Removes ancient unused code
- General code cleanup in some places
- Rewrites a few components to use Adventure (testing needed)
- Rewrites a few commands to use more modern Java features like Streams
- Fixes oversight where vanishing still worked by names and not UUIDs
- Removes unused Pterodactyl integration
- Removes AutoEject's IP range banning functionality
- Does some minor cleanup to HTTPD's list & players modules
- Fixes ages-old bug in the AntiSpam that caused it to falsely mute players
2023-07-11 12:06:59 -05:00
4602e2246b Remove indefinite wording for bans with expiry 2023-07-11 12:06:58 -05:00
3ac893db50 Remove ParseException from IConfig 2023-07-11 12:06:58 -05:00
bcf8c2f04a Add expiry to indefinite bans 2023-07-11 12:06:58 -05:00
88eceab480 Codacy is incredibly picky and I hope it burns in hell 2023-07-11 12:06:58 -05:00
df756d43ef Completely rewrites the Block Inspector, fixes bug in BukkitTelnetBridge caused when Essentials is not installed 2023-07-11 12:06:58 -05:00
91c4153037 Resolves FS-464
Banners had a cap in them to mitigate the effects of chunk bans back in like 2019. This removes that ancient broken cap.
2023-07-11 12:06:58 -05:00
c5f0886df6 Resolves FS-339 by aggressively rewriting /list and removing ancient unused code 2023-07-11 12:06:58 -05:00
ca990bc526 Resolves FS-321 by aggressively rewriting /plugincontrol 2023-07-11 12:06:58 -05:00
546827cd5a Resolves FS-320 and fixes FS-471 2023-07-11 12:06:57 -05:00
e7e08c060e Attempts to resolve FS-311 and mitigates FS-396 2023-07-11 12:06:57 -05:00
eb6a91323d Resolves FS-322 2023-07-11 12:06:57 -05:00
2fbd7578ab Resolves FS-331 2023-07-11 12:06:57 -05:00
75cd1864f6 God fucking dammit 2023-07-11 12:06:57 -05:00
a420339017 Resolves FS-348 2023-07-11 12:06:57 -05:00
2b5ea048cc Resolves FS-340 and improves some surrounding code a bit 2023-07-11 12:06:57 -05:00
20f341ea45 Resolves FS-338 2023-07-11 12:06:57 -05:00
eadbc504e5 Resolves FS-337 2023-07-11 12:06:57 -05:00
760ab3c622 Resolves FS-333 2023-07-11 12:06:56 -05:00
b804459dcc Resolves FS-325 2023-07-11 12:06:56 -05:00
63f805935f Resolves FS-341 2023-07-11 12:06:56 -05:00
1937a3d4de Resolves FS-318 by rewriting the /mute command
This has the fortunate side-effect of also fixing several bugs present in the original command.
2023-07-11 12:06:56 -05:00
36663385ab Resolves FS-316 by aggressively rewriting /blockedit
Disclaimer: I did this whilst sleep deprvied.
I didn't know how the fuck NPath is calculated so to play it safe I aggressively rewrote the command. I also took the opportunity to make some of the command's messages more consistent with eachother (using restrict/restore instead of block/unblock).
2023-07-11 12:06:56 -05:00
5d4085ab07 Fixes FS-323 by rewriting ride modes to make sense 2023-07-11 12:06:53 -05:00
0686419ce3 Fixes FS-349 2023-07-11 12:06:53 -05:00
9998392b1a Fixes FS-343 2023-07-11 12:06:53 -05:00
90c276668b Bump codacy/codacy-analysis-cli-action from 4.1.0 to 4.2.0 (#269)
Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases)
- [Commits](https://github.com/codacy/codacy-analysis-cli-action/compare/v4.1.0...v4.2.0)

---
updated-dependencies:
- dependency-name: codacy/codacy-analysis-cli-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ryan <Wild1145@users.noreply.github.com>
2023-07-11 12:06:53 -05:00
19db8a14dc Remove unused imports, variables and other minor oversights in the Discord bridge (#280)
* Fix player names not being deformatted

* Remove unused imports and variables

* Rectify usage of deprecated methods

* Clarify comment

* Update JDA plugin warning repository URL

* Fix possible NPEs

Co-authored-by: Ryan <Wild1145@users.noreply.github.com>
2023-07-11 12:06:53 -05:00
7f0eeab09c Remove Broken Downstream Merge Action (#281)
This never worked, let's just remove it.
2023-07-11 12:06:53 -05:00
410f26f76f Bump actions/setup-java from 3.5.1 to 3.6.0 (#279)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.5.1 to 3.6.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3.5.1...v3.6.0)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-11 12:06:53 -05:00
2d918fe17b Removes /nh and code associated with it (except this time its based on the right branch) 2023-07-11 12:06:53 -05:00
44bae8ab00 Remove /sit command
FS-460
2023-07-11 12:06:53 -05:00
6cc9b26661 Removes TFGuilds integration (#264)
TFGuilds was shitcanned the other day (good riddence), so there's no point in bridging it anymore.

Co-authored-by: Allink <44676012+allinkdev@users.noreply.github.com>
Co-authored-by: Ryan <Wild1145@users.noreply.github.com>
2023-07-11 12:06:52 -05:00
6761ab8035 Bump actions/setup-java from 3.3.0 to 3.5.1 (#271)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.3.0 to 3.5.1.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3.3.0...v3.5.1)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-11 12:06:52 -05:00
9490dacf36 Bump junit-jupiter from 5.8.2 to 5.9.0
Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.8.2 to 5.9.0.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.8.2...r5.9.0)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-11 12:06:46 -05:00
173f37d55e Bump javassist from 3.29.0-GA to 3.29.1-GA
Bumps [javassist](https://github.com/jboss-javassist/javassist) from 3.29.0-GA to 3.29.1-GA.
- [Release notes](https://github.com/jboss-javassist/javassist/releases)
- [Changelog](https://github.com/jboss-javassist/javassist/blob/master/Changes.md)
- [Commits](https://github.com/jboss-javassist/javassist/commits)

---
updated-dependencies:
- dependency-name: org.javassist:javassist
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-11 12:06:46 -05:00
25c8c0b654 Bump EssentialsX from 2.19.4 to 2.19.6
Bumps [EssentialsX](https://github.com/EssentialsX/Essentials) from 2.19.4 to 2.19.6.
- [Release notes](https://github.com/EssentialsX/Essentials/releases)
- [Commits](https://github.com/EssentialsX/Essentials/compare/2.19.4...2.19.6)

---
updated-dependencies:
- dependency-name: net.essentialsx:EssentialsX
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-11 12:06:46 -05:00
217e5fd62e Bump worldedit-bukkit from 7.2.10 to 7.2.12
Bumps worldedit-bukkit from 7.2.10 to 7.2.12.

---
updated-dependencies:
- dependency-name: com.sk89q.worldedit:worldedit-bukkit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-11 12:06:46 -05:00
2eef02ef13 Fix beds exploding in the Nether & End dimensions with explosions off 2023-07-11 12:06:32 -05:00
41cf62c8c0 Merge pull request #333 from AtlasMediaGroup/Paldiu-patch-1
Update plugin.yml
2023-07-11 11:49:44 -05:00
268b71f8a3 Update plugin.yml 2023-07-11 11:38:45 -05:00
a84a47980a Merge pull request #331 from AtlasMediaGroup/manual-patch-conflict-1
Update pom.xml
2023-07-11 11:33:47 -05:00
3a502713ea Merge branch 'main' into manual-patch-conflict-1 2023-07-11 09:18:06 -05:00
5dc5e5dcc5 Merge pull request #332 from AtlasMediaGroup/manual-patch-conflict-2
Update plugin.yml
2023-07-11 09:17:54 -05:00
171daf25a4 Update plugin.yml 2023-07-11 09:06:11 -05:00
2fa7b6855b Update pom.xml 2023-07-11 09:05:04 -05:00
38de6f9e67 Merge branch 'main' of https://github.com/AtlasMediaGroup/TotalFreedomMod 2023-07-11 08:02:35 -05:00
c5f24b46d5 Merge pull request #327 from AtlasMediaGroup/ver/1.19.3-main
Update to 1.19.4
2023-07-04 17:37:37 -05:00
3016c57e3e Merge branch 'main' into ver/1.19.3-main 2023-07-04 17:25:10 -05:00
00351f1163 Merge pull request #326 from AtlasMediaGroup/fix/movement-validator
Miscellaneous improvements to the movement validator
2023-07-04 17:24:55 -05:00
0e7a2d9bce Update to 1.19.4 2023-06-20 04:32:45 +01:00
dcebf7bbe7 Use Adventure for kick message 2023-06-17 20:23:54 +01:00
d30e335f57 Disallow custom spawns that are out of bounds 2023-06-17 20:23:24 +01:00
cca95dc3f1 Add dedicated method for checking if a position is out of bounds 2023-06-17 20:23:18 +01:00
42b68011ea Improve distance check 2023-06-17 20:09:22 +01:00
87d7ba19de Remove inventory checks in MovementValidator 2023-06-17 20:06:56 +01:00
4 changed files with 37 additions and 110 deletions

View File

@ -108,7 +108,7 @@
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.13.0</version>
<version>2.11.0</version>
<scope>compile</scope>
</dependency>

View File

@ -1,25 +1,17 @@
package me.totalfreedom.totalfreedommod;
import com.google.common.collect.Multimap;
import io.papermc.lib.PaperLib;
import java.util.Collection;
import java.util.Map;
import java.util.Objects;
import org.bukkit.ChatColor;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
public class MovementValidator extends FreedomService
{
@ -41,67 +33,36 @@ public class MovementValidator extends FreedomService
public void onPlayerTeleport(PlayerTeleportEvent event)
{
// Check absolute value to account for negatives
if (Math.abs(Objects.requireNonNull(event.getTo()).getX()) >= MAX_XYZ_COORD || Math.abs(event.getTo().getZ()) >= MAX_XYZ_COORD || Math.abs(event.getTo().getY()) >= MAX_XYZ_COORD)
if (isOutOfBounds(event.getTo()))
{
event.setCancelled(true); // illegal position, cancel it
}
}
private boolean isOutOfBounds(final Location position)
{
return Math.abs(position.getX()) >= MAX_XYZ_COORD || Math.abs(position.getY()) >= MAX_XYZ_COORD || Math.abs(position.getZ()) >= MAX_XYZ_COORD;
}
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerMove(PlayerMoveEvent event)
{
final Player player = event.getPlayer();
Location from = event.getFrom();
Location to = event.getTo();
assert to != null;
if (to.getX() >= from.getX() + MAX_DISTANCE_TRAVELED || to.getY() >= from.getY() + MAX_DISTANCE_TRAVELED || to.getZ() >= from.getZ() + MAX_DISTANCE_TRAVELED)
double distance = from.distanceSquared(to);
if (distance >= MAX_DISTANCE_TRAVELED)
{
event.setCancelled(true);
player.kickPlayer(ChatColor.RED + "You were moving too quickly!");
player.kick(Component.text("You were moving too quickly!", NamedTextColor.RED));
}
// Check absolute value to account for negatives
if (Math.abs(event.getTo().getX()) >= MAX_XYZ_COORD || Math.abs(event.getTo().getZ()) >= MAX_XYZ_COORD || Math.abs(event.getTo().getY()) >= MAX_XYZ_COORD)
if (isOutOfBounds(event.getTo()))
{
event.setCancelled(true);
PaperLib.teleportAsync(player, player.getWorld().getSpawnLocation());
}
if (exploitItem(event.getPlayer().getInventory().getHelmet()))
{
event.getPlayer().getInventory().setHelmet(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your helmet slot.");
event.setCancelled(true);
}
if (exploitItem(event.getPlayer().getInventory().getBoots()))
{
event.getPlayer().getInventory().setBoots(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your boots slot.");
event.setCancelled(true);
}
if (exploitItem(event.getPlayer().getInventory().getLeggings()))
{
event.getPlayer().getInventory().setLeggings(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your leggings slot.");
event.setCancelled(true);
}
if (exploitItem(event.getPlayer().getInventory().getChestplate()))
{
event.getPlayer().getInventory().setChestplate(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your chestplate slot.");
event.setCancelled(true);
}
if (exploitItem(event.getPlayer().getInventory().getItemInMainHand()))
{
event.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your hand.");
event.setCancelled(true);
}
if (exploitItem(event.getPlayer().getInventory().getItemInOffHand()))
{
event.getPlayer().getInventory().setItemInOffHand(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your offhand.");
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.HIGH)
@ -110,72 +71,28 @@ public class MovementValidator extends FreedomService
final Player player = event.getPlayer();
// Validate position
if (Math.abs(player.getLocation().getX()) >= MAX_XYZ_COORD || Math.abs(player.getLocation().getZ()) >= MAX_XYZ_COORD || Math.abs(player.getLocation().getY()) >= MAX_XYZ_COORD)
if (isOutOfBounds(player.getLocation()))
{
PaperLib.teleportAsync(player, player.getWorld().getSpawnLocation()); // Illegal position, teleport to spawn
}
}
@EventHandler
public void onPlayerHoldItem(PlayerItemHeldEvent event)
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerSpawn(PlayerSpawnLocationEvent event)
{
if (exploitItem(event.getPlayer().getInventory().getItemInMainHand()))
{
event.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your hand.");
}
if (exploitItem(event.getPlayer().getInventory().getItemInOffHand()))
{
event.getPlayer().getInventory().setItemInOffHand(new ItemStack(Material.AIR));
event.getPlayer().sendMessage(ChatColor.RED + "An item with both negative infinity and positive infinity attributes was cleared from your offhand.");
}
}
final Location playerSpawn = event.getSpawnLocation();
final Location worldSpawn = event.getPlayer().getWorld().getSpawnLocation();
private Boolean exploitItem(ItemStack item)
{
if (item == null)
// If the player's spawn is equal to the world's spawn, there is no need to check.
// This will also prevent any possible feedback loops pertaining to setting an out of bounds world spawn to the same world spawn.
if (playerSpawn == worldSpawn)
{
return false;
return;
}
ItemMeta meta = item.getItemMeta();
if (meta != null)
if (isOutOfBounds(worldSpawn))
{
Multimap<Attribute, AttributeModifier> attributes = meta.getAttributeModifiers();
if (attributes != null)
{
Map<Attribute, Collection<AttributeModifier>> attrMap = attributes.asMap();
// For every attribute...
for (Attribute attr : attributes.keySet())
{
// Default values
boolean posInf = false;
boolean negInf = false;
// For every AttributeModifier...
for (AttributeModifier modifier : attrMap.get(attr))
{
// Are they ∞ or -∞?
if (modifier.getAmount() == Double.POSITIVE_INFINITY)
{
posInf = true;
}
else if (modifier.getAmount() == Double.NEGATIVE_INFINITY)
{
negInf = true;
}
}
// Are both values set as true?
if (posInf && negInf)
{
return true;
}
}
}
event.setSpawnLocation(worldSpawn);
}
return false;
}
}

View File

@ -108,6 +108,16 @@ public class EventBlocker extends FreedomService
event.setRadius(ConfigEntry.EXPLOSIVE_RADIUS.getDouble().floatValue());
}
@EventHandler(priority = EventPriority.HIGH)
public void onBlockExplode(BlockExplodeEvent event) {
if(!ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) {
event.setCancelled(true);
return;
}
event.setYield(ConfigEntry.EXPLOSIVE_RADIUS.getDouble().floatValue());
}
@EventHandler(priority = EventPriority.HIGH)
public void onBlockExplode(BlockExplodeEvent event)

View File

@ -18,4 +18,4 @@ libraries:
- org.apache.commons:commons-lang3:3.12.0
- commons-io:commons-io:2.11.0
- org.jetbrains:annotations:23.0.0
- org.javassist:javassist:3.29.1-GA
- org.javassist:javassist:3.29.1-GA