diff --git a/Plugins/.idea/codeStyleSettings.xml b/Plugins/.idea/codeStyleSettings.xml
index 8e890f86b..44295e3d8 100644
--- a/Plugins/.idea/codeStyleSettings.xml
+++ b/Plugins/.idea/codeStyleSettings.xml
@@ -37,6 +37,7 @@
+
\ No newline at end of file
diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/loot/ChestLoot.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/loot/ChestLoot.php
new file mode 100644
index 000000000..ea91a17cb
--- /dev/null
+++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/loot/ChestLoot.php
@@ -0,0 +1,61 @@
+totalLoot = 0;
+ }
+
+ function addItem(int $id, int $chance, int $size, String $name)
+ {
+ $this->addLoot(new RandomItem(new Item($id, 0, 1, $name), $chance, $size, $size));
+ }
+
+ function addItemFull(int $id, int $chance, int $min, int $max, String $name)
+ {
+ $this->addLoot(new RandomItem(new Item($id, 0, 1, $name), $chance, $min, $max));
+ }
+
+ function addLoot(RandomItem $ri)
+ {
+ array_push($this->randomItems, $ri);
+ $this->totalLoot += $ri->getChance();
+ }
+
+ function getLoot()
+ {
+ $num = UtilMath::random($this->totalLoot);
+
+ foreach ($this->randomItems as $ri)
+ {
+ if ($ri instanceof RandomItem)
+ {
+ $num -= $ri->getChance();
+
+ if ($num < 0)
+ {
+ return $ri->getItem();
+ }
+ }
+ }
+
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/loot/RandomItem.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/loot/RandomItem.php
new file mode 100644
index 000000000..c8865b64a
--- /dev/null
+++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/loot/RandomItem.php
@@ -0,0 +1,39 @@
+chance = $chance;
+ $this->item = $item;
+ $this->min = $min;
+ $this->max = $max;
+ }
+
+ function getChance()
+ {
+ return $this->chance;
+ }
+
+ function getItem()
+ {
+ return new Item($this->item->getId(), 0, UtilMath::randBetween($this->min, $this-max), $this->item->getName());
+ }
+
+}
\ No newline at end of file
diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/world/WorldComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/world/WorldComponent.php
index f0e613b8a..e948a761e 100644
--- a/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/world/WorldComponent.php
+++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/components/world/WorldComponent.php
@@ -295,7 +295,7 @@ class WorldComponent implements Listener, BenchTask
//This will return a UID for the game
public function getNewGameId()
{
- return rand(0, 999999); //Make this acutally unique
+ return rand(0, 999999); //Make this actually unique
}
public function isWorldReady()
diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/games/sg/ChestComponent.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/games/sg/ChestComponent.php
index 278baceb0..f877ff456 100644
--- a/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/games/sg/ChestComponent.php
+++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/gameengine/game/games/sg/ChestComponent.php
@@ -1,7 +1,7 @@
arena = $arena;
$this->worldComponent = $worldComponent;
Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin());
- //Don't to game start stuff here cause there might be other components not enabled yet
+
+ $this->loot = new ChestLoot();
+
+ //Food
+ $this->loot->addItemFull(Item::BAKED_POTATO, 30, 1, 3, "Baked Potato");
+ $this->loot->addItemFull(Item::COOKED_BEEF, 30, 1, 2, "Steak");
+ $this->loot->addItemFull(Item::COOKED_CHICKEN, 30, 1, 2, "Cooked Chicken");
+ $this->loot->addItemFull(Item::CARROT, 30, 1, 3, "Carrot");
+ $this->loot->addItemFull(Item::MUSHROOM_STEW, 15, 1, 1, "Mushroom Stew");
+ $this->loot->addItemFull(Item::WHEAT, 30, 1, 6, "Wheat");
+ $this->loot->addItemFull(Item::APPLE, 30, 1, 4, "Apple");
+ $this->loot->addItemFull(Item::RAW_PORKCHOP, 30, 1, 4, "Pork");
+
+ //Weapons
+ $this->loot->addItem(Item::WOODEN_AXE, 80, 1, "Wooden Axe");
+ $this->loot->addItem(Item::WOODEN_SWORD, 70, 1, "Wooden Sword");
+ $this->loot->addItem(Item::STONE_AXE, 60, 1, "Stone Axe");
+ $this->loot->addItem(Item::STONE_SWORD, 30, 1, "Stone Sword");
+
+ //Leather Armour
+ $this->loot->addItem(Item::LEATHER_BOOTS, 30, 1, "Leather Boots");
+ $this->loot->addItem(Item::LEATHER_CAP, 30, 1, "Leather Cap");
+ $this->loot->addItem(Item::LEATHER_PANTS, 30, 1, "Leather Pants");
+ $this->loot->addItem(Item::LEATHER_TUNIC, 30, 1, "Leather Boots");
+
+ //Gold Armour
+ $this->loot->addItem(Item::GOLD_CHESTPLATE, 25, 1, "");
+ $this->loot->addItem(Item::GOLD_LEGGINGS, 25, 1, "");
+ $this->loot->addItem(Item::GOLD_BOOTS, 25, 1, "");
+ $this->loot->addItem(Item::GOLD_HELMET, 25, 1, "");
+
+ //Chain Armour
+ $this->loot->addItem(Item::CHAIN_BOOTS, 20, 1, "");
+ $this->loot->addItem(Item::CHAIN_CHESTPLATE, 20, 1, "");
+ $this->loot->addItem(Item::CHAIN_LEGGINGS, 20, 1, "");
+ $this->loot->addItem(Item::CHAIN_HELMET, 20, 1, "");
+
+ //Throwable
+ $this->loot->addItem(Item::BOW, 20, 1, "");
+ $this->loot->addItemFull(Item::ARROW, 20, 1, 3, "");
+ $this->loot->addItemFull(Item::SNOWBALL, 30, 1, 2, "");
+ $this->loot->addItemFull(Item::EGG, 30, 1, 2, "");
+
+ //Misc
+ $this->loot->addItem(Item::COMPASS, 20, 1, "");
+ $this->loot->addItemFull(Item::STICK, 30, 1, 2, "");
+ $this->loot->addItem(Item::FLINT, 30, 1, 2, "");
+ $this->loot->addItem(Item::FEATHER, 30, 1, 2, "");
+ $this->loot->addItem(Item::GOLD_INGOT, 20, 1, "");
}
function onStart(ArenaStartEvent $event)
@@ -52,6 +105,31 @@ class ChestComponent implements Listener {
return;
//Called after the world is loaded
+
+ foreach ($this->worldComponent->getData("54") as $loc)
+ {
+ $block = $loc->getLevel()->getBlock($loc);
+ if ($block instanceof Chest)
+ {
+ $inv = $block->getInventory();
+
+ $items = 2;
+ if (UtilMath::random(100) > 50)
+ ++$items;
+ if (UtilMath::random(100) > 65)
+ ++$items;
+ if (UtilMath::random(100) > 80)
+ ++$items;
+ if (UtilMath::random(100) > 95)
+ ++$items;
+
+ for ($i = 0; $i < $items; $i++)
+ {
+ $chosenItem = $this->loot->getLoot();
+ $inv->setItem(UtilMath::random(27), $chosenItem);
+ }
+ }
+ }
}
function onStateChange(GameStateChangeEvent $event)
diff --git a/Pocket/plugins/Mineplex/src/mineplex/plugin/util/UtilMath.php b/Pocket/plugins/Mineplex/src/mineplex/plugin/util/UtilMath.php
new file mode 100644
index 000000000..fe1df676b
--- /dev/null
+++ b/Pocket/plugins/Mineplex/src/mineplex/plugin/util/UtilMath.php
@@ -0,0 +1,33 @@
+