diff --git a/changelogs/3.9.md b/changelogs/3.9.md index 4fa55b5b8..1f8f68545 100644 --- a/changelogs/3.9.md +++ b/changelogs/3.9.md @@ -37,3 +37,10 @@ Plugin developers should **only** update their required API to this version if y - `RemoveEntityPacket` (not to be confused with the old one) - `StructureTemplateDataExportRequestPacket` - `StructureTemplateDataExportResponsePacket` + +# 3.9.1 +- Fixed resource packs not working on 1.12 clients. +- Fixed some particles displaying incorrectly (some still don't render at all). +- Fixed `Entity->setFireTicks()` with a value of `0` setting the on-fire flag. +- Silenced a debug message which appeared every time a player right-clicked a block. +- Updated constants for `LevelSoundEventPacket`. diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index eb4042146..d1cb95802 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -759,7 +759,7 @@ abstract class Entity extends Location implements EntityIds{ $this->setFireTicks($ticks); } - $this->setGenericFlag(EntityMetadataFlags::ONFIRE, true); + $this->setGenericFlag(EntityMetadataFlags::ONFIRE, $this->isOnFire()); } /** diff --git a/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php b/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php index dca96ce6d..7a21f2b9e 100644 --- a/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php +++ b/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php @@ -444,6 +444,8 @@ class InGamePacketHandler extends PacketHandler{ case PlayerActionPacket::ACTION_STOP_SWIMMING: //TODO: handle this when it doesn't spam every damn tick (yet another spam bug!!) break; + case PlayerActionPacket::ACTION_INTERACT_BLOCK: //ignored (for now) + break; default: $this->session->getLogger()->debug("Unhandled/unknown player action type " . $packet->action); return false; diff --git a/src/pocketmine/network/mcpe/protocol/LevelSoundEventPacket.php b/src/pocketmine/network/mcpe/protocol/LevelSoundEventPacket.php index 957e4da4b..503622c02 100644 --- a/src/pocketmine/network/mcpe/protocol/LevelSoundEventPacket.php +++ b/src/pocketmine/network/mcpe/protocol/LevelSoundEventPacket.php @@ -292,8 +292,8 @@ class LevelSoundEventPacket extends DataPacket implements ClientboundPacket, Ser public const SOUND_STUN = 261; public const SOUND_BLOCK_SWEET_BERRY_BUSH_HURT = 262; public const SOUND_BLOCK_SWEET_BERRY_BUSH_PICK = 263; - public const SOUND_UI_CARTOGRAPHY_TABLE_TAKE_RESULT = 264; - public const SOUND_UI_STONECUTTER_TAKE_RESULT = 265; + public const SOUND_BLOCK_CARTOGRAPHY_TABLE_USE = 264; + public const SOUND_BLOCK_STONECUTTER_USE = 265; public const SOUND_BLOCK_COMPOSTER_EMPTY = 266; public const SOUND_BLOCK_COMPOSTER_FILL = 267; public const SOUND_BLOCK_COMPOSTER_FILL_SUCCESS = 268; @@ -302,7 +302,14 @@ class LevelSoundEventPacket extends DataPacket implements ClientboundPacket, Ser public const SOUND_BLOCK_BARREL_CLOSE = 271; public const SOUND_RAID_HORN = 272; public const SOUND_BLOCK_LOOM_USE = 273; - public const SOUND_UNDEFINED = 274; + public const SOUND_AMBIENT_IN_RAID = 274; + public const SOUND_UI_CARTOGRAPHY_TABLE_TAKE_RESULT = 275; + public const SOUND_UI_STONECUTTER_TAKE_RESULT = 276; + public const SOUND_UI_LOOM_TAKE_RESULT = 277; + public const SOUND_BLOCK_SMOKER_SMOKE = 278; + public const SOUND_BLOCK_BLASTFURNACE_FIRE_CRACKLE = 279; + public const SOUND_BLOCK_SMITHING_TABLE_USE = 280; + public const SOUND_UNDEFINED = 281; public static function create(int $sound, ?Vector3 $pos, int $extraData = -1, string $entityType = ":", bool $isBabyMob = false) : self{ $result = new self; diff --git a/src/pocketmine/network/mcpe/protocol/PlayerActionPacket.php b/src/pocketmine/network/mcpe/protocol/PlayerActionPacket.php index 2d9e662e4..c79ddd25b 100644 --- a/src/pocketmine/network/mcpe/protocol/PlayerActionPacket.php +++ b/src/pocketmine/network/mcpe/protocol/PlayerActionPacket.php @@ -56,6 +56,7 @@ class PlayerActionPacket extends DataPacket implements ServerboundPacket{ public const ACTION_STOP_SWIMMING = 22; public const ACTION_START_SPIN_ATTACK = 23; public const ACTION_STOP_SPIN_ATTACK = 24; + public const ACTION_INTERACT_BLOCK = 25; /** @var int */ public $entityRuntimeId; diff --git a/src/pocketmine/network/mcpe/protocol/ResourcePackDataInfoPacket.php b/src/pocketmine/network/mcpe/protocol/ResourcePackDataInfoPacket.php index a1ff6baa5..a9e824d47 100644 --- a/src/pocketmine/network/mcpe/protocol/ResourcePackDataInfoPacket.php +++ b/src/pocketmine/network/mcpe/protocol/ResourcePackDataInfoPacket.php @@ -28,6 +28,7 @@ namespace pocketmine\network\mcpe\protocol; use pocketmine\network\mcpe\handler\PacketHandler; +use pocketmine\network\mcpe\protocol\types\ResourcePackType; class ResourcePackDataInfoPacket extends DataPacket implements ClientboundPacket{ public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_DATA_INFO_PACKET; @@ -45,7 +46,7 @@ class ResourcePackDataInfoPacket extends DataPacket implements ClientboundPacket /** @var bool */ public $isPremium = false; /** @var int */ - public $packType = 0; //TODO: check the values for this + public $packType = ResourcePackType::RESOURCES; //TODO: check the values for this public static function create(string $packId, int $maxChunkSize, int $chunkCount, int $compressedPackSize, string $sha256sum) : self{ $result = new self; diff --git a/src/pocketmine/network/mcpe/protocol/types/ParticleIds.php b/src/pocketmine/network/mcpe/protocol/types/ParticleIds.php index 271ddd3a0..6c0e1a6e4 100644 --- a/src/pocketmine/network/mcpe/protocol/types/ParticleIds.php +++ b/src/pocketmine/network/mcpe/protocol/types/ParticleIds.php @@ -25,57 +25,66 @@ namespace pocketmine\network\mcpe\protocol\types; interface ParticleIds{ public const BUBBLE = 1; - public const CRITICAL = 2; - public const BLOCK_FORCE_FIELD = 3; - public const SMOKE = 4; - public const EXPLODE = 5; - public const EVAPORATION = 6; - public const FLAME = 7; - public const LAVA = 8; - public const LARGE_SMOKE = 9; - public const REDSTONE = 10; - public const RISING_RED_DUST = 11; - public const ITEM_BREAK = 12; - public const SNOWBALL_POOF = 13; - public const HUGE_EXPLODE = 14; - public const HUGE_EXPLODE_SEED = 15; - public const MOB_FLAME = 16; - public const HEART = 17; - public const TERRAIN = 18; - public const SUSPENDED_TOWN = 19, TOWN_AURA = 19; - public const PORTAL = 20; - public const SPLASH = 21, WATER_SPLASH = 21; - public const WATER_WAKE = 22; - public const DRIP_WATER = 23; - public const DRIP_LAVA = 24; - public const FALLING_DUST = 25, DUST = 25; - public const MOB_SPELL = 26; - public const MOB_SPELL_AMBIENT = 27; - public const MOB_SPELL_INSTANTANEOUS = 28; - public const INK = 29; - public const SLIME = 30; - public const RAIN_SPLASH = 31; - public const VILLAGER_ANGRY = 32; - public const VILLAGER_HAPPY = 33; - public const ENCHANTMENT_TABLE = 34; - public const TRACKING_EMITTER = 35; - public const NOTE = 36; - public const WITCH_SPELL = 37; - public const CARROT = 38; - //39 unknown - public const END_ROD = 40; - public const DRAGONS_BREATH = 41; - public const SPIT = 42; - public const TOTEM = 43; - public const FOOD = 44; - public const FIREWORKS_STARTER = 45; - public const FIREWORKS_SPARK = 46; - public const FIREWORKS_OVERLAY = 47; - public const BALLOON_GAS = 48; - public const COLORED_FLAME = 49; - public const SPARKLER = 50; - public const CONDUIT = 51; - public const BUBBLE_COLUMN_UP = 52; - public const BUBBLE_COLUMN_DOWN = 53; - public const SNEEZE = 54; + //2 same as 1 + public const CRITICAL = 3; + public const BLOCK_FORCE_FIELD = 4; + public const SMOKE = 5; + public const EXPLODE = 6; + public const EVAPORATION = 7; + public const FLAME = 8; + public const LAVA = 9; + public const LARGE_SMOKE = 10; + public const REDSTONE = 11; + public const RISING_RED_DUST = 12; + //62 same as 12 + public const ITEM_BREAK = 13; + public const SNOWBALL_POOF = 14; + public const HUGE_EXPLODE = 15; + //60 same as 15 + public const HUGE_EXPLODE_SEED = 16; + public const MOB_FLAME = 17; + public const HEART = 18; + public const TERRAIN = 19; + public const SUSPENDED_TOWN = 20, TOWN_AURA = 20; + //61 same as 20 + public const PORTAL = 21; + //22 same as 21 + public const SPLASH = 23, WATER_SPLASH = 23; + //24 same as 23 + public const WATER_WAKE = 25; + public const DRIP_WATER = 26; + public const DRIP_LAVA = 27; + public const FALLING_DUST = 28, DUST = 28; + public const MOB_SPELL = 29; + public const MOB_SPELL_AMBIENT = 30; + public const MOB_SPELL_INSTANTANEOUS = 31; + public const INK = 32; + public const SLIME = 33; + public const RAIN_SPLASH = 34; + public const VILLAGER_ANGRY = 35; + //59 same as 35 + public const VILLAGER_HAPPY = 36; + public const ENCHANTMENT_TABLE = 37; + public const TRACKING_EMITTER = 38; + public const NOTE = 39; + public const WITCH_SPELL = 40; + public const CARROT = 41; + //42 unknown + public const END_ROD = 43; + //58 same as 43 + public const DRAGONS_BREATH = 44; + public const SPIT = 45; + public const TOTEM = 46; + public const FOOD = 47; + public const FIREWORKS_STARTER = 48; + public const FIREWORKS_SPARK = 49; + public const FIREWORKS_OVERLAY = 50; + public const BALLOON_GAS = 51; + public const COLORED_FLAME = 52; + public const SPARKLER = 53; + public const CONDUIT = 54; + public const BUBBLE_COLUMN_UP = 55; + public const BUBBLE_COLUMN_DOWN = 56; + public const SNEEZE = 57; + } diff --git a/src/pocketmine/network/mcpe/protocol/types/ResourcePackType.php b/src/pocketmine/network/mcpe/protocol/types/ResourcePackType.php new file mode 100644 index 000000000..9efaced08 --- /dev/null +++ b/src/pocketmine/network/mcpe/protocol/types/ResourcePackType.php @@ -0,0 +1,38 @@ +