Skip to content
This repository has been archived by the owner on May 26, 2024. It is now read-only.

Commit

Permalink
Improve anticheat: ReachV3
Browse files Browse the repository at this point in the history
  • Loading branch information
xqwtxon committed Sep 11, 2023
1 parent edcadff commit ef0a2b0
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 92 deletions.
4 changes: 2 additions & 2 deletions resources/server.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ motd:
- "{PREFIX} {ARROW}  &aVote Us!"
maintenance-motd: "{PREFIX} {ARROW}  &cMaintenance Mode"
resource-packs:
22f2f484-706e-c415-02eb-e6e89da3babd: 1oWGsIObwFPlr8mqQMre7dFXNvEClerx # https://github.com/PrideMC/PridePack
22f2f58f-706a-c415-02eb-e6e89da3babd: YQkpiQnMoq2aKws9cULTMSemvI5umfxX # https://github.com/PrideMC/PridePackRTX
22f2f484-706e-c415-02eb-e6e89da3babd: G8DGq670qvMJ3ZFqVL3RyVuw7oLY8jcj # https://github.com/PrideMC/PridePack
22f2f58f-706a-c415-02eb-e6e89da3babd: L8ToxEb6i0OHg3bmKiRtpQ7j7iD4qKtk # https://github.com/PrideMC/PridePackRTX
serverStatus: offline # change it if on ready production...
maintenanceBypass:
- xqwtxon # staff and admin teams?
Expand Down
6 changes: 3 additions & 3 deletions src/CortexPE/DiscordWebhookAPI/Webhook.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

namespace CortexPE\DiscordWebhookAPI;

use CortexPE\DiscordWebhookAPI\task\DiscordWebhookSendTask;
use pocketmine\Server;
use libasynCurl\Curl;
use function json_encode;
use function filter_var;

class Webhook {
Expand All @@ -51,6 +51,6 @@ public function isValid() : bool{
}

public function send(Message $message) : void{
Server::getInstance()->getAsyncPool()->submitTask(new DiscordWebhookSendTask($this->getUrl(), $message));
Curl::postRequest($this->getURL(), json_encode($message), 10, ["Content-Type: application/json"]);
}
}
73 changes: 0 additions & 73 deletions src/CortexPE/DiscordWebhookAPI/task/DiscordWebhookSendTask.php

This file was deleted.

12 changes: 0 additions & 12 deletions src/PrideCore/Anticheat/Modules/NoClip.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,11 @@
namespace PrideCore\Anticheat\Modules;

use pocketmine\block\BlockTypeIds;
use pocketmine\event\entity\EntityTeleportEvent;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\math\Vector3;
use pocketmine\player\GameMode;
use PrideCore\Anticheat\Anticheat;
use PrideCore\Core;
use PrideCore\Player\Player;

class NoClip extends Anticheat implements Listener
{
Expand All @@ -49,22 +46,13 @@ public function __construct()
Core::getInstance()->getServer()->getPluginManager()->registerEvents($this, Core::getInstance());
}

private array $lastMoveUpdates = [];

public function onMove(PlayerMoveEvent $event) {
$id = $event->getPlayer()->getWorld()->getBlock($event->getPlayer()->getLocation())->getTypeId();
if ($event->getPlayer()->getWorld()->getBlock($event->getPlayer()->getLocation()->add(0, 1, 0))->isSolid() && $id !== BlockTypeIds::SAND && $id !== BlockTypeIds::GRAVEL && $event->getPlayer()->getGamemode() !== GameMode::SPECTATOR()) {
$event->cancel();
$this->fail($event->getPlayer());
$event->getPlayer()->teleport(new Vector3($event->getPlayer()->getLocation()->getX(), ($event->getPlayer()->getWorld()->getHighestBlockAt($event->getPlayer()->getLocation()->getX(), $event->getPlayer()->getLocation()->getZ()) + 1), $event->getPlayer()->getLocation()->getZ()));
return;
}
$this->lastMoveUpdates[$event->getPlayer()->getName()] = $event->getTo();
}

public function onTeleport(EntityTeleportEvent $event) {
if (!$event->getEntity() instanceof Player) return;
$this->lastMoveUpdates[$event->getEntity()->getName()] = $event->getTo();
}

}
26 changes: 24 additions & 2 deletions src/PrideCore/Anticheat/Modules/Reach.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,11 @@

namespace PrideCore\Anticheat\Modules;

use pocketmine\event\block\BlockBreakEvent;
use pocketmine\event\entity\EntityDamageByEntityEvent;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\player\GameMode;
use PrideCore\Anticheat\Anticheat;
use PrideCore\Core;
Expand All @@ -44,13 +46,17 @@ class Reach extends Anticheat implements Listener {
public const MAX_PLAYER_REACH = 8.1;
public const MAX_PLAYER_REACH_V2 = 4.0;

private const MAX_REACH_DISTANCE_CREATIVE_V3 = 13;
private const MAX_REACH_DISTANCE_SURVIVAL_V3 = 7;
private const MAX_REACH_DISTANCE_ENTITY_INTERACTION_V3 = 8;

public function __construct()
{
parent::__construct(Anticheat::REACH);
Core::getInstance()->getServer()->getPluginManager()->registerEvents($this, Core::getInstance());
}

public function handleEvent(EntityDamageByEntityEvent $event) : void{
public function reachV1(EntityDamageByEntityEvent $event) : void{
if(($player = $event->getEntity()) instanceof Player && ($damager = $event->getDamager()) instanceof Player){
if($damager->getRankId() === Rank::OWNER) return;
if($damager->getGamemode()->equals(GameMode::CREATIVE())) return;
Expand All @@ -62,7 +68,7 @@ public function handleEvent(EntityDamageByEntityEvent $event) : void{
}

// V2 - just check again...
public function onDamage(EntityDamageEvent $event){
public function reachV2(EntityDamageEvent $event){
if($event instanceof EntityDamageByEntityEvent && $event->getEntity() instanceof Player && $event->getDamager() instanceof Player){
if($event->getDamager()->getRankId() === Rank::OWNER) return;
if($event->getDamager()->getGamemode()->equals(GameMode::CREATIVE())) return;
Expand All @@ -72,4 +78,20 @@ public function onDamage(EntityDamageEvent $event){
}
}
}

// V3 - just checking again
public function reachV3(EntityDamageEvent $event){
if($event instanceof EntityDamageByEntityEvent && $event->getEntity() instanceof Player && $event->getDamager() instanceof Player){
if($event->getDamager()->getRankId() === Rank::OWNER) return;
if(!$event->getDamager()->canInteract($event->getEntity()->getLocation()->add(0.5, 0.5, 0.5), $event->getEntity()->isCreative() ? self::MAX_REACH_DISTANCE_CREATIVE_V3 : self::MAX_REACH_DISTANCE_SURVIVAL_V3)){
$this->fail($event->getDamager());
}
}
}

public function reachBlockV1(PlayerInteractEvent $event) : void{
if(!$event->getPlayer()->canInteract($event->getBlock()->getPosition()->add(0.5, 0.5, 0.5), $event->getPlayer()->isCreative() ? self::MAX_REACH_DISTANCE_CREATIVE_V3 : self::MAX_REACH_DISTANCE_SURVIVAL_V3)){
$this->fail($event->getPlayer());
}
}
}

0 comments on commit ef0a2b0

Please sign in to comment.