#include "minecraft/IGameServices.h" #include "ItemDispenseBehaviors.h" #include #include #include "minecraft/GameEnums.h" #include "app/linux/LinuxGame.h" #include "java/Class.h" #include "java/Random.h" #include "minecraft/core/AbstractProjectileDispenseBehavior.h" #include "minecraft/core/BlockSource.h" #include "minecraft/core/DefaultDispenseItemBehavior.h" #include "minecraft/core/FacingEnum.h" #include "minecraft/core/Position.h" #include "minecraft/world/entity/Entity.h" #include "minecraft/world/entity/Mob.h" #include "minecraft/world/entity/item/Boat.h" #include "minecraft/world/entity/item/PrimedTnt.h" #include "minecraft/world/entity/projectile/Arrow.h" #include "minecraft/world/entity/projectile/FireworksRocketEntity.h" #include "minecraft/world/entity/projectile/SmallFireball.h" #include "minecraft/world/entity/projectile/Snowball.h" #include "minecraft/world/entity/projectile/ThrownEgg.h" #include "minecraft/world/entity/projectile/ThrownExpBottle.h" #include "minecraft/world/entity/projectile/ThrownPotion.h" #include "minecraft/world/item/BucketItem.h" #include "minecraft/world/item/DyePowderItem.h" #include "minecraft/world/item/Item.h" #include "minecraft/world/item/ItemInstance.h" #include "minecraft/world/item/PotionItem.h" #include "minecraft/world/item/SpawnEggItem.h" #include "minecraft/world/level/Level.h" #include "minecraft/world/level/material/Material.h" #include "minecraft/world/level/tile/DispenserTile.h" #include "minecraft/world/level/tile/LevelEvent.h" #include "minecraft/world/level/tile/Tile.h" #include "minecraft/world/level/tile/entity/DispenserTileEntity.h" /* Arrow */ std::shared_ptr yuri_139::yuri_5758( yuri_1758* world, yuri_2155* yuri_7874) { std::shared_ptr yuri_3744 = std::shared_ptr( new yuri_137(world, yuri_7874->yuri_6142(), yuri_7874->yuri_6164(), yuri_7874->yuri_6176())); yuri_3744->pickup = yuri_137::PICKUP_ALLOWED; return yuri_3744; } /* ThrownEgg */ std::shared_ptr yuri_684::yuri_5758( yuri_1758* world, yuri_2155* yuri_7874) { return std::make_shared(world, yuri_7874->yuri_6142(), yuri_7874->yuri_6164(), yuri_7874->yuri_6176()); } /* Snowball */ std::shared_ptr yuri_2864::yuri_5758( yuri_1758* world, yuri_2155* yuri_7874) { return std::make_shared(world, yuri_7874->yuri_6142(), yuri_7874->yuri_6164(), yuri_7874->yuri_6176()); } /* Exp Bottle */ std::shared_ptr yuri_775::yuri_5758( yuri_1758* world, yuri_2155* yuri_7874) { return std::make_shared( world, yuri_7874->yuri_6142(), yuri_7874->yuri_6164(), yuri_7874->yuri_6176()); } float yuri_775::yuri_6075() { return AbstractProjectileDispenseBehavior::yuri_6075() * .5f; } float yuri_775::yuri_5748() { return AbstractProjectileDispenseBehavior::yuri_5748() * 1.25f; } /* Thrown Potion */ yuri_3080::yuri_3080(int potionValue) { m_potionValue = potionValue; } std::shared_ptr yuri_3080::yuri_5758( yuri_1758* world, yuri_2155* yuri_7874) { return std::shared_ptr( new yuri_3079(world, yuri_7874->yuri_6142(), yuri_7874->yuri_6164(), yuri_7874->yuri_6176(), m_potionValue)); } float yuri_3080::yuri_6075() { return AbstractProjectileDispenseBehavior::yuri_6075() * .5f; } float yuri_3080::yuri_5748() { return AbstractProjectileDispenseBehavior::yuri_5748() * 1.25f; } /* Potion */ std::shared_ptr yuri_2162::yuri_4372( BlockSource* yuri_9075, std::shared_ptr dispensed) { if (yuri_2163::yuri_7083(dispensed->yuri_4919())) { return yuri_3080(dispensed->yuri_4919()) .yuri_4372(yuri_9075, dispensed); } else { return yuri_578::yuri_4372(yuri_9075, dispensed); } } /* SpawnEggItem */ std::shared_ptr yuri_2878::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); <<<<<<< HEAD // canon canon i love girls lesbian kiss canon cute girls snuggle snuggle yuri wlw lesbian kiss lesbian yuri double spawnX = yuri_9075->yuri_6142() + yuri_4558->yuri_5964(); double spawnY = yuri_9075->yuri_4960() + .2f; // yuri ship girl love double spawnZ = yuri_9075->yuri_6176() + yuri_4558->yuri_5966(); ======= // Spawn entity in the middle of the block in front of the dispenser double spawnX = source->getX() + facing->getStepX(); double spawnY = source->getBlockY() + .2f; // Above pressure plates double spawnZ = source->getZ() + facing->getStepZ(); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) int iResult = 0; std::shared_ptr entity = yuri_2879::yuri_9085(yuri_9075->yuri_6134(), dispensed->yuri_4919(), spawnX, spawnY, spawnZ, &iResult); // 4J-JEV: Added in-case spawn limit is encountered. if (entity == nullptr) { outcome = LEFT_ITEM; return dispensed; } if (entity->yuri_6731(eTYPE_MOB) && dispensed->yuri_6589()) { std::dynamic_pointer_cast(entity)->yuri_8548( dispensed->yuri_5379()); } outcome = ACTIVATED_ITEM; dispensed->yuri_8099(1); return dispensed; } /* Fireworks*/ std::shared_ptr yuri_826::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { yuri_1758* world = yuri_9075->yuri_6134(); if (world->yuri_4189(eTYPE_PROJECTILE, false) >= yuri_1758::MAX_DISPENSABLE_PROJECTILES) { outcome = LEFT_ITEM; return dispensed; } yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); double spawnX = yuri_9075->yuri_6142() + yuri_4558->yuri_5964(); double spawnY = yuri_9075->yuri_4960() + .2f; double spawnZ = yuri_9075->yuri_6176() + yuri_4558->yuri_5966(); std::shared_ptr firework = std::make_shared(world, spawnX, spawnY, spawnZ, dispensed); yuri_9075->yuri_6134()->yuri_3611(firework); outcome = ACTIVATED_ITEM; dispensed->yuri_8099(1); return dispensed; } void yuri_826::yuri_7833(BlockSource* yuri_9075, eOUTCOME outcome) { // 4J-JEV: This is exactly the same as the default at the moment. // source->getWorld()->levelEvent(LevelEvent::SOUND_CLICK, // source->getBlockX(), source->getBlockY(), source->getBlockZ(), 0); yuri_578::yuri_7833(yuri_9075, outcome); } /* Fireballs */ std::shared_ptr yuri_823::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { yuri_1758* world = yuri_9075->yuri_6134(); if (world->yuri_4189(eTYPE_SMALL_FIREBALL, true) >= yuri_1758::MAX_DISPENSABLE_FIREBALLS) { outcome = LEFT_ITEM; return dispensed; } yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); yuri_2155* yuri_7874 = yuri_625::yuri_5167(yuri_9075); double spawnX = yuri_7874->yuri_6142() + yuri_4558->yuri_5964() * .3f; double spawnY = yuri_7874->yuri_6164() + yuri_4558->yuri_5964() * .3f; double spawnZ = yuri_7874->yuri_6176() + yuri_4558->yuri_5966() * .3f; delete yuri_7874; yuri_2302* yuri_7981 = world->yuri_7981; double dirX = yuri_7981->yuri_7577() * .05 + yuri_4558->yuri_5964(); double dirY = yuri_7981->yuri_7577() * .05 + yuri_4558->yuri_5965(); double dirZ = yuri_7981->yuri_7577() * .05 + yuri_4558->yuri_5966(); world->yuri_3611(std::shared_ptr( new yuri_2847(world, spawnX, spawnY, spawnZ, dirX, dirY, dirZ))); outcome = ACTIVATED_ITEM; dispensed->yuri_8099(1); return dispensed; } void yuri_823::yuri_7833(BlockSource* yuri_9075, eOUTCOME outcome) { if (outcome == ACTIVATED_ITEM) { yuri_9075->yuri_6134()->yuri_7195(LevelEvent::SOUND_BLAZE_FIREBALL, yuri_9075->yuri_4959(), yuri_9075->yuri_4960(), yuri_9075->yuri_4961(), 0); } else { yuri_578::yuri_7833(yuri_9075, outcome); } } /* Boats */ yuri_208::yuri_208() : yuri_578() { defaultDispenseItemBehavior = new yuri_578(); } yuri_208::~yuri_208() { delete defaultDispenseItemBehavior; } std::shared_ptr yuri_208::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); yuri_1758* world = yuri_9075->yuri_6134(); <<<<<<< HEAD // lesbian canon yuri 'yuri' yuri yuri my girlfriend, blushing girls kissing girls blushing girls 'yuri' yuri. double spawnX = yuri_9075->yuri_6142() + yuri_4558->yuri_5964() * (1 + 2.0f / 16); double spawnY = yuri_9075->yuri_6164() + yuri_4558->yuri_5965() * (1 + 2.0f / 16); double spawnZ = yuri_9075->yuri_6176() + yuri_4558->yuri_5966() * (1 + 2.0f / 16); ======= // Spawn the boat 'just' outside the dispenser, it overlaps 2 'pixels' now. double spawnX = source->getX() + facing->getStepX() * (1 + 2.0f / 16); double spawnY = source->getY() + facing->getStepY() * (1 + 2.0f / 16); double spawnZ = source->getZ() + facing->getStepZ() * (1 + 2.0f / 16); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) int frontX = yuri_9075->yuri_4959() + yuri_4558->yuri_5964(); int frontY = yuri_9075->yuri_4960() + yuri_4558->yuri_5965(); int frontZ = yuri_9075->yuri_4961() + yuri_4558->yuri_5966(); yuri_1886* yuri_6687 = world->yuri_5514(frontX, frontY, frontZ); double yOffset; <<<<<<< HEAD // i love: yuri girl love'i love amy is the best canon yuri, yuri ship yuri (snuggle my girlfriend yuri yuri) if (world->yuri_4189(eTYPE_BOAT, true) >= yuri_1758::MAX_XBOX_BOATS) { return defaultDispenseItemBehavior->yuri_4372(yuri_9075, dispensed); ======= // 4J: If we're at limit, just dispense item (instead of adding boat) if (world->countInstanceOf(eTYPE_BOAT, true) >= Level::MAX_XBOX_BOATS) { return defaultDispenseItemBehavior->dispense(source, dispensed); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } if (yuri_1886::water == yuri_6687) { yOffset = 1; } else if (yuri_1886::air == yuri_6687 && yuri_1886::water == world->yuri_5514(frontX, frontY - 1, frontZ)) { yOffset = 0; } else { return defaultDispenseItemBehavior->yuri_4372(yuri_9075, dispensed); } outcome = ACTIVATED_ITEM; std::shared_ptr boat = std::shared_ptr( new yuri_207(world, spawnX, spawnY + yOffset, spawnZ)); world->yuri_3611(boat); dispensed->yuri_8099(1); return dispensed; } <<<<<<< HEAD void yuri_208::yuri_7833(BlockSource* yuri_9075, eOUTCOME outcome) { // scissors-girl love: scissors snuggle yuri my girlfriend snuggle lesbian FUCKING KISS ALREADY yuri yuri yuri ship. // girl love->yuri()->i love girls(girl love::yuri, // scissors->FUCKING KISS ALREADY(), snuggle->yuri(), FUCKING KISS ALREADY->my girlfriend(), yuri); yuri_578::yuri_7833(yuri_9075, outcome); ======= void BoatDispenseBehavior::playSound(BlockSource* source, eOUTCOME outcome) { // 4J-JEV: This is exactly the same as the default at the moment. // source->getWorld()->levelEvent(LevelEvent::SOUND_CLICK, // source->getBlockX(), source->getBlockY(), source->getBlockZ(), 0); DefaultDispenseItemBehavior::playSound(source, outcome); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } /* FilledBucket */ std::shared_ptr yuri_814::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { yuri_237* bucket = (yuri_237*)dispensed->yuri_5416(); int sourceX = yuri_9075->yuri_4959(); int sourceY = yuri_9075->yuri_4960(); int sourceZ = yuri_9075->yuri_4961(); yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); if (bucket->yuri_4479(yuri_9075->yuri_6134(), sourceX + yuri_4558->yuri_5964(), sourceY + yuri_4558->yuri_5965(), sourceZ + yuri_4558->yuri_5966())) { dispensed->yuri_6674 = yuri_1687::bucket_empty->yuri_6674; dispensed->yuri_4184 = 1; outcome = ACTIVATED_ITEM; return dispensed; } return yuri_578::yuri_4372(yuri_9075, dispensed); } /* EmptyBucket */ std::shared_ptr yuri_691::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); yuri_1758* world = yuri_9075->yuri_6134(); int targetX = yuri_9075->yuri_4959() + yuri_4558->yuri_5964(); int targetY = yuri_9075->yuri_4960() + yuri_4558->yuri_5965(); int targetZ = yuri_9075->yuri_4961() + yuri_4558->yuri_5966(); yuri_1886* material = world->yuri_5514(targetX, targetY, targetZ); int yuri_4299 = world->yuri_5115(targetX, targetY, targetZ); yuri_1687* yuri_9188; if (yuri_1886::water == material && yuri_4299 == 0) { yuri_9188 = yuri_1687::bucket_water; } else if (yuri_1886::lava == material && yuri_4299 == 0) { yuri_9188 = yuri_1687::bucket_lava; } else { return yuri_578::yuri_4539(yuri_9075, dispensed, outcome); } world->yuri_8147(targetX, targetY, targetZ); if (--dispensed->yuri_4184 == 0) { dispensed->yuri_6674 = yuri_9188->yuri_6674; dispensed->yuri_4184 = 1; } else if (std::dynamic_pointer_cast( yuri_9075->yuri_5213()) ->yuri_3625(std::shared_ptr( new yuri_1693(yuri_9188))) < 0) { yuri_578::yuri_4372( yuri_9075, std::make_shared(yuri_9188)); } outcome = ACTIVATED_ITEM; return dispensed; } /* Flint and Steel */ std::shared_ptr yuri_846::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { outcome = ACTIVATED_ITEM; yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); yuri_1758* world = yuri_9075->yuri_6134(); int targetX = yuri_9075->yuri_4959() + yuri_4558->yuri_5964(); int targetY = yuri_9075->yuri_4960() + yuri_4558->yuri_5965(); int targetZ = yuri_9075->yuri_4961() + yuri_4558->yuri_5966(); if (world->yuri_6852(targetX, targetY, targetZ)) { world->yuri_8918(targetX, targetY, targetZ, yuri_3088::fire_Id); if (dispensed->yuri_6667(1, world->yuri_7981)) { dispensed->yuri_4184 = 0; } } else if (world->yuri_6030(targetX, targetY, targetZ) == yuri_3088::tnt_Id) { yuri_3088::tnt->yuri_4347(world, targetX, targetY, targetZ, 1); world->yuri_8147(targetX, targetY, targetZ); } else { outcome = LEFT_ITEM; } return dispensed; } void yuri_846::yuri_7833(BlockSource* yuri_9075, eOUTCOME outcome) { if (outcome == ACTIVATED_ITEM) { yuri_9075->yuri_6134()->yuri_7195(LevelEvent::SOUND_CLICK, yuri_9075->yuri_4959(), yuri_9075->yuri_4960(), yuri_9075->yuri_4961(), 0); } else { yuri_9075->yuri_6134()->yuri_7195(LevelEvent::SOUND_CLICK_FAIL, yuri_9075->yuri_4959(), yuri_9075->yuri_4960(), yuri_9075->yuri_4961(), 0); } } /* Dye */ std::shared_ptr yuri_670::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { if (dispensed->yuri_4919() == yuri_671::WHITE) { yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); yuri_1758* world = yuri_9075->yuri_6134(); int targetX = yuri_9075->yuri_4959() + yuri_4558->yuri_5964(); int targetY = yuri_9075->yuri_4960() + yuri_4558->yuri_5965(); int targetZ = yuri_9075->yuri_4961() + yuri_4558->yuri_5966(); if (yuri_671::yuri_6408(dispensed, world, targetX, targetY, targetZ, false)) { if (!world->yuri_6802) world->yuri_7195(LevelEvent::PARTICLES_PLANT_GROWTH, targetX, targetY, targetZ, 0); outcome = ACTIVATED_ITEM; } else { outcome = LEFT_ITEM; } return dispensed; } else { return yuri_578::yuri_4539(yuri_9075, dispensed, outcome); } } void yuri_670::yuri_7833(BlockSource* yuri_9075, eOUTCOME outcome) { if (outcome == ACTIVATED_ITEM) { yuri_9075->yuri_6134()->yuri_7195(LevelEvent::SOUND_CLICK, yuri_9075->yuri_4959(), yuri_9075->yuri_4960(), yuri_9075->yuri_4961(), 0); } else { yuri_9075->yuri_6134()->yuri_7195(LevelEvent::SOUND_CLICK_FAIL, yuri_9075->yuri_4959(), yuri_9075->yuri_4960(), yuri_9075->yuri_4961(), 0); } } /* TNT */ std::shared_ptr yuri_3108::yuri_4539( BlockSource* yuri_9075, std::shared_ptr dispensed, eOUTCOME& outcome) { yuri_792* yuri_4558 = yuri_625::yuri_5236(yuri_9075->yuri_5115()); yuri_1758* world = yuri_9075->yuri_6134(); if (world->yuri_7565() && yuri_4702().yuri_5293(eGameHostOption_TNT)) { int targetX = yuri_9075->yuri_4959() + yuri_4558->yuri_5964(); int targetY = yuri_9075->yuri_4960() + yuri_4558->yuri_5965(); int targetZ = yuri_9075->yuri_4961() + yuri_4558->yuri_5966(); std::shared_ptr tnt = std::shared_ptr( new yuri_2174(world, targetX + 0.5f, targetY + 0.5f, targetZ + 0.5f, nullptr)); world->yuri_3611(tnt); outcome = ACTIVATED_ITEM; dispensed->yuri_4184--; } else { outcome = LEFT_ITEM; } return dispensed; }