Skip to content

Instantly share code, notes, and snippets.

@PEMapModder
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PEMapModder/cdf6be4333d22113b6bc to your computer and use it in GitHub Desktop.
Save PEMapModder/cdf6be4333d22113b6bc to your computer and use it in GitHub Desktop.
Simple ice bucket challenge plugin in PocketMine/ModPE xD
var others = [
"sheep",
"pig",
"cow",
"chicken",
"zombie",
"skeleton",
"spider",
"creeper",
"zombie pigman",
"mooshroom",
"wolf",
"slime",
"silverfish",
"enderman"
];
function useItem(x, y, z, item, block){
if(block == 79){
var damage = Player.getCarriedItemData();
if(item == 325){
if(damage == 0){
Level.setTile(Player.getX(), Player.getY() + 1, Player.getZ(), 9);
Level.setTile(Player.getX(), Player.getY(), Player.getZ(), 79);
var msg = "You have accepted the ice bucket challenge! Now, nominate " + getThreeRandom() + "!";
clientMessage(msg);
}
}
}
}
function getThreeRandom(){
var clone = others;
var out = "";
var i0 = getRandomIn(clone);
out += clone[i0];
out += ", ";
clone = unshiftFromArray(clone, i0);
var i1 = getRandomIn(clone);
out += clone[i1];
out += " and ";
clone = unshiftFromArray(clone, i1);
out += arr[getRandomIn(clone)];
return out;
}
function getRandomIn(arr){
var rand = Math.random();
rand *= arr.length;
return rand;
}
function unshiftFromArray(arr, id){
var ret = [];
for(var i = 0; i < arr.length; i++){
if(i != id){
ret[ret.length] = arr[i];
}
}
return ret;
}
<?php
namespace pemapmodder\icebucketchallenge;
use pocketmine\Player;
use pocketmine\block\Air;
use pocketmine\block\Block;
use pocketmine\event\Listener;
use pocketmine\event\entity\EntityDamageByEntityEvent;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\item\Item;
use pocketmine\plugin\PluginBase;
class IceBucketChallenge extends PluginBase implements Listener{
/** int[][] */
private $ibc = [];
public function onEnable(){
$this->getServer()->getPluginManager()->registerEvents($this, $this);
}
public function onInteract(PlayerInteractEvent $ev){
$it = $ev->getItem();
if($it->getID() === Item::BUCKET and $it->getDamage() === 0){
$it->setDamage(8);
$p = $ev->getPlayer();
$this->ibc[$p->getName()][$p->getInventory()->getHeldItemSlot()] = true;
$p->sendMessage("You have selected the ice bucket!");
$p->getLevel()->setBlock($ev->getBlock(), new Air, true, false);
$ev->setCancelled();
}
elseif($it->getID() === Item::BUCKET and $it->getDamage() === 8){
if(isset($this->ibc[$ev->getPlayer()->getName()][$ev->getPlayer()->getInventory()->getHeldItemSlot()])){
$ev->setCancelled();
$ev->getPlayer()->sendMessage("Send the ice bucket out!");
}
}
}
public function onHit(EntityDamageByEntityEvent $ev){
$damager = $ev->getDamager();
$victim = $ev->getEntity();
if(($damager instanceof Player) and ($victim instanceof Player)){
if(isset($this->ibc[$damager->getName()][$slot = $damager->getInventory()->getHeldItemSlot()])){
$item = $damager->getInventory()->getItem($slot);
if($item->getID() === Item::BUCKET and $item->getDamage() === 8){
$ev->setCancelled();
$this->getServer()->broadcastMessage($victim->getName() . " has accepted the ice bucket challenge!");
$victim->getLevel()->setBlock($victim, Block::get(9), true, false);
unset($this->ibc[$damager->getName()][$slot]);
$damager->getInventory()->getItem($slot)->setDamage(0);
}
else{
unset($this->ibc[$damager->getName()][$slot]); // :( won't track the bucket
}
}
}
}
}
@PEMapModder
Copy link
Author

Test it ;)

@DaPigGuy
Copy link

Why? lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment