CortexPE / TeaSpoon

☕ A PLUGIN to Extend PMMP's Functionality without completely changing it.
GNU Affero General Public License v3.0
144 stars 100 forks source link

Support PMMP 3.0.0 #277

Closed YassLV closed 6 years ago

YassLV commented 6 years ago

Added:

Fixed:

This pull request is not finished! Changes are still coming on this pull request to fix the various bugs there might be

xXNiceYT commented 6 years ago

Did u fixed MobSpawner/Lightning

CortexPE commented 6 years ago

Save MobSpawners in HardDisk

This'd be kinda hacky, but would it be appropriate to do so?

CortexPE commented 6 years ago

haven't touched minecraft for a while now xd

YassLV commented 6 years ago

If we don't do that, each time the server restarts the content of the mobs spawners will be restored: It's like leaving our minecraft survival world, and our farm for the Mobs disappears xD

CortexPE commented 6 years ago

that means the NBT data isn't being saved... there's a correct way of doing this however, I'm not quite sure how it is right now because PMMP has changed so much within the past few weeks xD

YassLV commented 6 years ago

Mmm, the mobs spawners appears at the reboot of the server but without the mobs inside, I fix that tonight

ghost commented 6 years ago

fix losted nbt when chunk is unloaded

YassLV commented 6 years ago

Losted nbt ?

ghost commented 6 years ago

add a mob to spawner and restart server, bum, spawner is empty.

YassLV commented 6 years ago

I already fixed that, you should try again with a newer version of this pull request.

YassLV commented 6 years ago

234

YassLV commented 6 years ago

I think I fixed the major bugs, there must remain some bug I'm not seen but I would fix it in the meantime . This pull request can be merged I think

rdstonech commented 6 years ago

Settling potions doesn't work

rdstonech commented 6 years ago

to fix Lingering Potion necessary use onHit(ProjectileHitEvent $event) : void instead of onUpdate().

YassLV commented 6 years ago

@rdstonech Can you be more specific? What's the problem with the potions so I can fix this?

rdstonech commented 6 years ago

@MineBuilderFR now potion doesn't destroy when falling

YassLV commented 6 years ago

@rdstonech Ok i test this , and I'm fixing it, thanks for reporting the bug.

YassLV commented 6 years ago

@rdstonech What version of PocketMine do you use? you don't use Fork? And what kind of potions bug?

rdstonech commented 6 years ago

No, I use https://github.com/pmmp/PocketMine-MP/releases/tag/3.0.1. The bug was that LingeringPotion doesn't destroy and AreaEffectCloud doesn't spawn I found that isCollided and isOnGround always false. To fix it I changed onUpdate() function to onHit()

YassLV commented 6 years ago

Effectively , isCollided and isOnGround is always false because the projectile has already hit the ground , bug fixed thx

teracube commented 6 years ago

@MineBuilderFR @CortexPE i have an issue with this latest commit when i use a phar version generated with DevTools i have not the TeaSpoon animation on the log and teaender and nether were not loading no problem with zip version do you know why could you test attached phar file thanks TeaSpoon_v1.0.0.phar.zip

thanks

tested with https://jenkins.pmmp.io/job/PocketMine-MP/1216/artifact/PocketMine-MP.phar

YassLV commented 6 years ago

@teracube This is not a bug, it is because the .phar plugins of TeaSpoon not generated by poggit are automatically disabled when the server starts. I will add a'Dev_mode' in the evening to be able to test the .phar of TeaSpoon.

teracube commented 6 years ago

@MineBuilderFR could you please give me a download link to phar version with 'Dev_mode' thanks

teracube commented 6 years ago

@MineBuilderFR i made a phar with Devtools and 9bc52aa i have not the TeaSpoon animation on the log and teaender and nether were not loading may i change a config on pmmp ? no problem with zip version see attached phar

TeaSpoon_v1.0.0.phar.zip

YassLV commented 6 years ago

@teracube Pass constant "DEV_MODE" to true and recreate a .phar with DevTools

Matthww commented 6 years ago

Tridents can be picked up after you throw them but it's not going out of your inventory. So you can basically dupe them.

CortexPE commented 6 years ago

thats why I disabled them in the first place xd

YassLV commented 6 years ago

I'll fix it tomorrow morning ^^ I would also reformat the code/indentation (PHPStorm doesn't do its job well apparently)

teracube commented 6 years ago

@MineBuilderFR i Pass constant "DEV_MODE" to true and recreate a .phar with DevTools i tested https://jenkins.pmmp.io/job/PocketMine-MP/1224/artifact/PocketMine-MP.phar but i have this issue

2018-06-30 [08:33:31] [Server thread/INFO]: Loading TeaSpoon v1.0.0
2018-06-30 [08:33:31] [Server thread/INFO]: [TeaSpoon] Loading Resources...
2018-06-30 [08:33:31] [Server thread/CRITICAL]: ErrorException: "Undefined index: fromCommit" (EXCEPTION) in "TeaSpoon_v1.0.0.phar/src/CortexPE/Main" at line 304
2018-06-30 [08:33:31] [Server thread/DEBUG]: #0 TeaSpoon_v1.0.0.phar/src/CortexPE/Main(304): pocketmine\utils\Utils::errorExceptionHandler(integer 8, string Undefined index: fromCommit, string phar:///home/myservertest/plugins/TeaSpoon_v1.0.0.phar/src/CortexPE/Main.php, integer 304, array Array())
2018-06-30 [08:33:31] [Server thread/DEBUG]: #1 src/pocketmine/plugin/PluginBase(72): CortexPE\Main->onLoad()
2018-06-30 [08:33:31] [Server thread/DEBUG]: #2 src/pocketmine/plugin/PluginManager(203): pocketmine\plugin\PluginBase->__construct(pocketmine\plugin\PharPluginLoader object, pocketmine\Server object, pocketmine\plugin\PluginDescription object, string /home/myservertest/plugin_data/TeaSpoon, string phar:///home/myservertest/plugins/TeaSpoon_v1.0.0.phar)
2018-06-30 [08:33:31] [Server thread/DEBUG]: #3 src/pocketmine/plugin/PluginManager(349): pocketmine\plugin\PluginManager->loadPlugin(string /home/myservertest/plugins/TeaSpoon_v1.0.0.phar, array Array())
2018-06-30 [08:33:31] [Server thread/DEBUG]: #4 src/pocketmine/Server(1654): pocketmine\plugin\PluginManager->loadPlugins(string /home/myservertest/plugins/)
2018-06-30 [08:33:31] [Server thread/DEBUG]: #5 src/pocketmine/PocketMine(237): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /home/myservertest/, string /home/myservertest/plugins/)
2018-06-30 [08:33:31] [Server thread/DEBUG]: #6 /home/myservertest/PocketMine-MP.phar(1): require(string phar:///home/myservertest/PocketMine-MP.phar/src/pocketmine/PocketMine.php)
2018-06-30 [08:33:31] [Server thread/CRITICAL]: Could not load plugin 'TeaSpoon'
ghost commented 6 years ago

image image

You don't fixed bug.

If you create mob spawner with a egg and a spawner, and you restart server, them is empty.

Actually, is client-side bug, not server side. nbt is saved on server, but it's not handled by client because if you "put" again egg, mob spawner is not updated, so nbt already exist.

Can you fix that?

ghost commented 6 years ago
[13:56:03] [Server thread/CRITICAL]: Error: "Undefined class constant 'SOURCE_TYPE_ANVIL_MATERIAL'" (EXCEPTION) in "TeaSpoon-master/src/CortexPE/network/types/NetworkInventoryAction" at line 250
[13:56:03] [Server thread/DEBUG]: #0 src/pocketmine/Player(2284): CortexPE\network\types\NetworkInventoryAction->createInventoryAction(pocketmine\Player object)
[13:56:03] [Server thread/DEBUG]: #1 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(132): pocketmine\Player->handleInventoryTransaction(CortexPE\network\InventoryTransactionPacket object)
[13:56:03] [Server thread/DEBUG]: #2 TeaSpoon-master/src/CortexPE/network/InventoryTransactionPacket(163): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleInventoryTransaction(CortexPE\network\InventoryTransactionPacket object)
[13:56:03] [Server thread/DEBUG]: #3 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(92): CortexPE\network\InventoryTransactionPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object)
[13:56:03] [Server thread/DEBUG]: #4 src/pocketmine/network/mcpe/protocol/BatchPacket(114): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(CortexPE\network\InventoryTransactionPacket object)
[13:56:03] [Server thread/DEBUG]: #5 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(92): pocketmine\network\mcpe\protocol\BatchPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object)
[13:56:03] [Server thread/DEBUG]: #6 src/pocketmine/Player(3032): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object)
[13:56:03] [Server thread/DEBUG]: #7 src/pocketmine/network/mcpe/RakLibInterface(158): pocketmine\Player->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object)
[13:56:03] [Server thread/DEBUG]: #8 vendor/pocketmine/raklib/src/server/ServerHandler(98): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string 86.126.186.28 49206, raklib\protocol\EncapsulatedPacket object, integer 0)
[13:56:03] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/RakLibInterface(103): raklib\server\ServerHandler->handlePacket()
[13:56:03] [Server thread/DEBUG]: #10 src/pocketmine/network/Network(94): pocketmine\network\mcpe\RakLibInterface->process()
[13:56:03] [Server thread/DEBUG]: #11 src/pocketmine/network/mcpe/RakLibInterface(80): pocketmine\network\Network->processInterface(pocketmine\network\mcpe\RakLibInterface object)
[13:56:03] [Server thread/DEBUG]: #12 vendor/pocketmine/snooze/src/SleeperHandler(120): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}()
[13:56:03] [Server thread/DEBUG]: #13 vendor/pocketmine/snooze/src/SleeperHandler(82): pocketmine\snooze\SleeperHandler->processNotifications()
[13:56:03] [Server thread/DEBUG]: #14 src/pocketmine/Server(2258): pocketmine\snooze\SleeperHandler->sleepUntil(double 1530726963.6407)
[13:56:03] [Server thread/DEBUG]: #15 src/pocketmine/Server(2129): pocketmine\Server->tickProcessor()
[13:56:03] [Server thread/DEBUG]: #16 src/pocketmine/Server(1710): pocketmine\Server->start()
[13:56:03] [Server thread/DEBUG]: #17 src/pocketmine/PocketMine(237): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /root/build/, string /root/build/plugins/)
[13:56:03] [Server thread/DEBUG]: #18 /root/build/PocketMine-MP.phar(1): require(string phar:///root/build/PocketMine-MP.phar/src/pocketmine/PocketMine.php)

Error when i want use Anvil for changing name of x64 Mob Spawners. I want mention i was on Creative Mode, but actually is by packet so it's useless to debug because is code error, not bug by coding.

TDMidkwhatisxd commented 6 years ago

Just a report: I cant turn off Hopper transaction (btw it seems that all dupes are fixed from hopper). All api load, if i turn it on it give a error( about construct ) .... Elytra gets pulled back by antifly... And a known bug: trident dupe xd

Otherwise the plugin works well, good job ...

TDMidkwhatisxd commented 6 years ago

[Server thread/CRITICAL]: InvalidStateException: "Cannot schedule update on garbage entity CortexPE\entity\projectile\FishingHook" (EXCEPTION) in "src/pocketmine/entity/Entity" at line 1381 [14:19:23] [Server thread/DEBUG]: #0 src/pocketmine/entity/Entity(1981): pocketmine\entity\Entity->scheduleUpdate() [14:19:23] [Server thread/DEBUG]: #1 TeaSpoon-b8dabf09729a13a46f80bb80347a1d0c84647940/src/CortexPE/item/FishingRod(144): pocketmine\entity\Entity->flagForDespawn() [14:19:23] [Server thread/DEBUG]: #2 src/pocketmine/Player(2456): CortexPE\item\FishingRod->onClickAir(pocketmine\Player object, pocketmine\math\Vector3 object) [14:19:23] [Server thread/DEBUG]: #3 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(132): pocketmine\Player->handleInventoryTransaction(CortexPE\network\InventoryTransactionPacket object)

TDMidkwhatisxd commented 6 years ago

Error: Value 38475 is too large! File: vendor/pocketmine/nbt/src/tag/ShortTag Line: 42 Type: InvalidArgumentException

Code: [33] private $value; [34] [35] /* [36] @param string $name [37] @param int $value [38] / [39] public function construct(string $name = "", int $value = 0){ [40] parent::construct($name); [41] if($value < -0x8000 or $value > 0x7fff){ [42] throw new \InvalidArgumentException("Value $value is too large!"); [43] } [44] $this->value = $value; [45] } [46] [47] public function getType() : int{ [48] return NBT::TAG_Short; [49] } [50] [51] public function read(NBTStream $nbt) : void{ [52] $this->value = $nbt->getSignedShort();

Backtrace:

0 vendor/pocketmine/nbt/src/tag/CompoundTag(304): pocketmine\nbt\tag\ShortTag->__construct(string Age, integer 38475)

1 src/pocketmine/entity/projectile/Projectile(126): pocketmine\nbt\tag\CompoundTag->setShort(string Age, integer 38475)

2 src/pocketmine/level/format/io/region/Anvil(70): pocketmine\entity\projectile\Projectile->saveNBT()

3 src/pocketmine/level/format/io/region/McRegion(373): pocketmine\level\format\io\region\Anvil->nbtSerialize(pocketmine\level\format\Chunk object)

4 src/pocketmine/level/format/io/BaseLevelProvider(163): pocketmine\level\format\io\region\McRegion->writeChunk(pocketmine\level\format\Chunk object)

5 src/pocketmine/level/Level(1053): pocketmine\level\format\io\BaseLevelProvider->saveChunk(pocketmine\level\format\Chunk object)

6 src/pocketmine/level/Level(1042): pocketmine\level\Level->saveChunks()

7 src/pocketmine/Server(2401): pocketmine\level\Level->save(boolean )

8 src/pocketmine/Server(2541): pocketmine\Server->doAutoSave()

9 src/pocketmine/Server(2255): pocketmine\Server->tick()

10 src/pocketmine/Server(2129): pocketmine\Server->tickProcessor()

11 src/pocketmine/Server(1710): pocketmine\Server->start()

12 src/pocketmine/PocketMine(237): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /root/, string /root/plugins/)

13 /root/PocketMine-MP.phar(1): require(string phar:///root/PocketMine-MP.phar/src/pocketmine/PocketMine.php)


Trident projectile :o crash

TDMidkwhatisxd commented 6 years ago

i think this is ded :))

ghost commented 6 years ago
 [Server thread/CRITICAL]: Error: "Call to undefined method pocketmine\Server::getScheduler()" (EXCEPTION) in "TeaSpoon-master/src/CortexPE/item/Fireworks" at line 127
teracube commented 6 years ago

up

@MineBuilderFR @CortexPE @LagHD

i tried this configuration with latest build 1.5.0

https://github.com/pmmp/PocketMine-MP/tree/mc-broken-ed-1.5 https://github.com/MineBuilderFR/TeaSpoon

server crash

PocketMine-MP Crash Dump Tue Jul 10 21:19:07 CEST 2018

Error: Declaration of CortexPE\network\CraftingDataPacket::decodePayload() must be compatible with pocketmine\network\mcpe\protocol\CraftingDataPacket::decodePayload(): void
File: TeaSpoon-master/src/CortexPE/network/CraftingDataPacket
Line: 240
Type: E_COMPILE_ERROR

THIS CRASH WAS CAUSED BY A PLUGIN
BAD PLUGIN: TeaSpoon v1.0.0

Code:
[231]       }
[232] 
[233]       $this->putBool($this->cleanRecipes);
[234]   }
[235] 
[236]   public function handle(NetworkSession $session): bool{
[237]       return $session->handleCraftingData($this);
[238]   }
[239] 
[240] }
[241] 
[242] 
[243] 
[244] 
[245] 
[246] 
[247] 
[248] 
[249] 
[250] 

Backtrace:

PocketMine-MP version: 4.0.0+dev.1242 [Protocol 274]
Git commit: bafc397749b9abda7cc3f5317f7cf5326ae48b74
uname -a: Linux g1 4.5.0-0.bpo.2-amd64 #1 SMP Debian 4.5.4-1~bpo8+1 (2016-05-13) x86_64
PHP Version: 7.2.4
Zend version: 3.2.0
OS : Linux, linux
Adam1609 commented 6 years ago

Please try #285 as the pull request hasn't actived for a while now....

teracube commented 6 years ago

@Adam1609 I can't test #285 because i have this issue with latest PMMP build how to solve that thanks

rror: Declaration of CortexPE\network\CraftingDataPacket::decodePayload() must be compatible with pocketmine\network\mcpe\protocol\CraftingDataPacket::decodePayload(): void
File: TeaSpoon-master/src/CortexPE/network/CraftingDataPacket
Line: 240
Type: E_COMPILE_ERROR

THIS CRASH WAS CAUSED BY A PLUGIN
BAD PLUGIN: TeaSpoon v1.0.0

Code:
[231]       }
[232] 
[233]       $this->putBool($this->cleanRecipes);
[234]   }
[235] 
[236]   public function handle(NetworkSession $session): bool{
[237]       return $session->handleCraftingData($this);
[238]   }
[239] 
[240] }
[241] 
[242] 
[243] 
[244] 
[245] 
[246] 
[247] 
[248] 
[249] 
[250] 
nicsmith78 commented 6 years ago

please update to 3.0.0 ALPHA 10