Skip to content

Commit fb72ef8

Browse files
authored
Add files via upload
1 parent f7ee3fb commit fb72ef8

27 files changed

+3684
-0
lines changed

plugin.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: spectronV2
2+
main: TheWindows\spectron\Loader
3+
api: 5.0.0
4+
author: TheWindows
5+
description: "ReCreated By TheWindows"
6+
version: 2.0.1
7+
8+
permissions:
9+
spectron.command.spectron:
10+
description: "Control fake player"
11+
default: op

resources/config.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
kill-chat-enabled: true
2+
kill-chat-messages:
3+
- "gg"
4+
- "loser"
5+
- "LOL"
6+
- "Get rekt!"
7+
- "Too easy!"
8+
- "Nice try!"
9+
- "Owned!"
10+
- "TheWindows is goat!"
11+
- "HAHAHAHA"
12+
- "Blud died to a bot"
13+
- "shush"
14+
max-fake-players: 10
15+
default-behaviors:
16+
spectron:auto_equip_armor: []
17+
spectron:auto_equip_sword: []
18+
spectron:pvp:
19+
reach_distance: 4
20+
pvp_idle_time: 500
21+
auto-spawn-on-start: true
22+
configured-players-add-delay: 20
23+
pvp-enabled: true
24+
random-walk-enabled: true
25+
pvp-reach-distance: 4
26+
pvp-damage-cooldown: 10
27+
pvp-difficulty: normal

resources/players.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"dbd5485b-425c-3336-97fe-a3f5c947e6e0": {
3+
"xuid": "2535448890738751",
4+
"gamertag": "SpectronBot",
5+
"extra_data": {
6+
"DeviceId": "ea78448a-6b33-3bbd-0e04-22dc3fb9f250",
7+
"DeviceModel": "PocketMine-Spectron",
8+
"DeviceOS": 7
9+
},
10+
"behaviours": {
11+
"spectron:auto_equip_armor": {},
12+
"spectron:pvp": {
13+
"reach_distance": 4.0,
14+
"pvp_idle_time": 500
15+
}
16+
}
17+
}
18+
}

resources/skin.rgba

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TheWindows\spectron;
6+
7+
use TheWindows\spectron\listener\spectronListener;
8+
use TheWindows\spectron\network\spectronNetworkSession;
9+
use TheWindows\spectron\network\listener\ClosurespectronPacketListener;
10+
use pocketmine\network\mcpe\NetworkSession;
11+
use pocketmine\network\mcpe\protocol\ChangeDimensionPacket;
12+
use pocketmine\network\mcpe\protocol\ClientboundPacket;
13+
use pocketmine\network\mcpe\protocol\PlayerActionPacket;
14+
use pocketmine\network\mcpe\protocol\PlayStatusPacket;
15+
use pocketmine\network\mcpe\protocol\RespawnPacket;
16+
use pocketmine\network\mcpe\protocol\serializer\PacketSerializer;
17+
use pocketmine\network\mcpe\protocol\SetLocalPlayerAsInitializedPacket;
18+
use pocketmine\network\mcpe\protocol\types\BlockPosition;
19+
use pocketmine\network\mcpe\protocol\types\PlayerAction;
20+
use pocketmine\player\Player;
21+
use pocketmine\scheduler\ClosureTask;
22+
use pocketmine\network\mcpe\protocol\ProtocolInfo;
23+
24+
final class DefaultspectronListener implements spectronListener{
25+
26+
public function __construct(
27+
private Loader $plugin
28+
){}
29+
30+
public function onPlayerAdd(Player $player) : void{
31+
$session = $player->getNetworkSession();
32+
assert($session instanceof spectronNetworkSession);
33+
34+
$entity_runtime_id = $player->getId();
35+
$session->registerSpecificPacketListener(PlayStatusPacket::class, new ClosurespectronPacketListener(function(ClientboundPacket $packet, NetworkSession $session) use($entity_runtime_id) : void{
36+
assert($packet instanceof PlayStatusPacket);
37+
if($packet->status === PlayStatusPacket::PLAYER_SPAWN){
38+
$this->plugin->getScheduler()->scheduleDelayedTask(new ClosureTask(static function() use($session, $entity_runtime_id) : void{
39+
if($session->isConnected()){
40+
$packet = SetLocalPlayerAsInitializedPacket::create($entity_runtime_id);
41+
$serializer = PacketSerializer::encoder(ProtocolInfo::CURRENT_PROTOCOL);
42+
$packet->encode($serializer);
43+
$session->handleDataPacket($packet, $serializer->getBuffer());
44+
}
45+
}), 40);
46+
}
47+
}));
48+
49+
$session->registerSpecificPacketListener(RespawnPacket::class, new ClosurespectronPacketListener(function(ClientboundPacket $packet, NetworkSession $session) : void{
50+
$this->plugin->getScheduler()->scheduleDelayedTask(new ClosureTask(function() use($session) : void{
51+
if($session->isConnected()){
52+
/** @var Player $player */
53+
$player = $session->getPlayer();
54+
$player->respawn();
55+
$fake_player = $this->plugin->getspectron($player);
56+
foreach($fake_player->getBehaviours() as $behaviour){
57+
$behaviour->onRespawn($fake_player);
58+
}
59+
}
60+
}), 40);
61+
}));
62+
63+
$session->registerSpecificPacketListener(ChangeDimensionPacket::class, new ClosurespectronPacketListener(function(ClientboundPacket $packet, NetworkSession $session) : void{
64+
$this->plugin->getScheduler()->scheduleDelayedTask(new ClosureTask(function() use($session) : void{
65+
if($session->isConnected()){
66+
$player = $session->getPlayer();
67+
if($player !== null){
68+
$packet = PlayerActionPacket::create(
69+
$player->getId(),
70+
PlayerAction::DIMENSION_CHANGE_ACK,
71+
BlockPosition::fromVector3($player->getPosition()->floor()),
72+
BlockPosition::fromVector3($player->getPosition()->floor()),
73+
0
74+
);
75+
76+
$serializer = PacketSerializer::encoder(ProtocolInfo::CURRENT_PROTOCOL);
77+
$packet->encode($serializer);
78+
$session->handleDataPacket($packet, $serializer->getBuffer());
79+
}
80+
}
81+
}), 40);
82+
}));
83+
}
84+
85+
public function onPlayerRemove(Player $player) : void{
86+
}
87+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TheWindows\spectron;
6+
7+
use pocketmine\network\mcpe\PacketSender;
8+
9+
final class FakePacketSender implements PacketSender{
10+
11+
public function send(string $payload, bool $immediate, ?int $receiptId) : void{
12+
}
13+
14+
public function close(string $reason = "unknown reason") : void{
15+
}
16+
}

0 commit comments

Comments
 (0)