Skip to content

Commit 327fbd3

Browse files
committed
Added potion world rule #69
1 parent 94247ed commit 327fbd3

File tree

9 files changed

+53
-9
lines changed

9 files changed

+53
-9
lines changed

README.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ Please report bugs on the issues page on GitHub.
6464
- Fly
6565
- Daylight cycle
6666
- Leaves decay
67+
- Potion
6768
- You have an idea what to add? Feel free to open an issue.
6869
- **DEFAULT VALUES** Set default values for worlds without settings
6970
- **SOPHISTICATED** Easy to use, fast and mostly bug-free.
@@ -84,15 +85,15 @@ Worlds is really easy to use. Here is the command syntax:
8485
/worlds set legacy
8586
/worlds set permission <permissionstring>
8687
/worlds set gamemode <survival|creative|adventure|spectator>
87-
/worlds set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay> <true|false>
88+
/worlds set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion> <true|false>
8889
/worlds unset
89-
/worlds unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay>
90+
/worlds unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion>
9091
/worlds defaults
9192
/worlds defaults legacy
9293
/worlds defaults set permission <permissionstring>
9394
/worlds defaults set gamemode <survival|creative|adventure|spectator>
94-
/worlds defaults set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay> <true|false>
95-
/worlds defaults unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay>
95+
/worlds defaults set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion> <true|false>
96+
/worlds defaults unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion>
9697
```
9798

9899
For a full list of commands, their usage and a description what they are for, take a look at the [wiki](https://plugins.surva.net/docs/Worlds#commands).

plugin.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ website: https://plugins.surva.net/#worlds
1010
commands:
1111
worlds:
1212
description: "Worlds plugin main command"
13-
usage: "/worlds list\n/worlds create <worldname> [type]\n/worlds <remove|load|unload|tp> <worldname>\n/worlds <copy|rename> <from> <to>\n/worlds set\n/worlds set legacy\n/worlds set permission <permissionstring>\n/worlds set gamemode <survival|creative|adventure|spectator>\n/worlds set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay> <true|false>\n/worlds unset\n/worlds unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay>\n/worlds defaults\n/worlds defaults legacy\n/worlds defaults set permission <permissionstring>\n/worlds defaults set gamemode <survival|creative|adventure|spectator>\n/worlds defaults set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay> <true|false>\n/worlds defaults unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay>"
13+
usage: "/worlds list\n/worlds create <worldname> [type]\n/worlds <remove|load|unload|tp> <worldname>\n/worlds <copy|rename> <from> <to>\n/worlds set\n/worlds set legacy\n/worlds set permission <permissionstring>\n/worlds set gamemode <survival|creative|adventure|spectator>\n/worlds set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion> <true|false>\n/worlds unset\n/worlds unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion>\n/worlds defaults\n/worlds defaults legacy\n/worlds defaults set permission <permissionstring>\n/worlds defaults set gamemode <survival|creative|adventure|spectator>\n/worlds defaults set <build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion> <true|false>\n/worlds defaults unset <permission|gamemode|build|pvp|damage|interact|explode|drop|hunger|fly|daylightcycle|leavesdecay|potion>"
1414
aliases: ["ws"]
1515
permissions:
1616
worlds.list:

resources/languages/de.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ teleport:
7171
set:
7272
success: "§aDu hast §b{key} §ain §f{world} §aauf §c{value} §agesetzt."
7373
list:
74-
values: "§Einstellungen für die Welt §f{name}\n\n§eberechtigung: {permission}\n§egamemode: {gamemode}\n§ebauen: {build}\n§epvp: {pvp}\n§eschaden: {damage}\n§einteragieren: {interact}\n§eexplosionen: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efliegen: {fly}\n§etag-nacht-zyklus: {daylightcycle}\n§eblätter verwesen: {leavesdecay}\n"
74+
values: "§Einstellungen für die Welt §f{name}\n\n§eberechtigung: {permission}\n§egamemode: {gamemode}\n§ebauen: {build}\n§epvp: {pvp}\n§eschaden: {damage}\n§einteragieren: {interact}\n§eexplosionen: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efliegen: {fly}\n§etag-nacht-zyklus: {daylightcycle}\n§eblätter verwesen: {leavesdecay}\n§ezaubertränke: {potion}\n"
7575
notset: "§7nicht gesetzt"
7676
permission:
7777
notdefault: "§cDu kannst keine Berechtigung für die Standard-Welt setzen."
@@ -86,7 +86,7 @@ unset:
8686
# Defaults command
8787
defaults:
8888
list:
89-
values: "§Einstellungen für Welten auf diesem Server\n\n§eberechtigung: {permission}\n§egamemode: {gamemode}\n§ebauen: {build}\n§epvp: {pvp}\n§eschaden: {damage}\n§einteragieren: {interact}\n§eexplosionen: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efliegen: {fly}\n§etag-nacht-zyklus: {daylightcycle}\n§eblätter verwesen: {leavesdecay}\n"
89+
values: "§Einstellungen für Welten auf diesem Server\n\n§eberechtigung: {permission}\n§egamemode: {gamemode}\n§ebauen: {build}\n§epvp: {pvp}\n§eschaden: {damage}\n§einteragieren: {interact}\n§eexplosionen: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efliegen: {fly}\n§etag-nacht-zyklus: {daylightcycle}\n§eblätter verwesen: {leavesdecay}\n§ezaubertränke: {potion}\n"
9090
notset: "§7nicht gesetzt"
9191
set:
9292
success: "§aDu hast §b{key} §aauf §c{value} §aals Standard-Wert gesetzt."
@@ -111,6 +111,7 @@ forms:
111111
fly: "Fliegen"
112112
daylightcycle: "Tag-Nacht-Zyklus"
113113
leavesdecay: "Blätter verwesen"
114+
potion: "Zaubertränke"
114115
options:
115116
notset: "§7nicht eingestellt (kein Wert)"
116117
true: "§aaktiviert"

resources/languages/en.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ teleport:
7171
set:
7272
success: "§aYou've set §b{key} §ain §f{world} §ato §c{value}§a."
7373
list:
74-
values: "§cSettings for world §f{name}\n\n§epermission: {permission}\n§egamemode: {gamemode}\n§ebuild: {build}\n§epvp: {pvp}\n§edamage: {damage}\n§einteract: {interact}\n§eexplode: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efly: {fly}\n§edaylightcycle: {daylightcycle}\n§eleavesdecay: {leavesdecay}\n"
74+
values: "§cSettings for world §f{name}\n\n§epermission: {permission}\n§egamemode: {gamemode}\n§ebuild: {build}\n§epvp: {pvp}\n§edamage: {damage}\n§einteract: {interact}\n§eexplode: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efly: {fly}\n§edaylightcycle: {daylightcycle}\n§eleavesdecay: {leavesdecay}\n§epotion: {potion}\n"
7575
notset: "§7not set"
7676
permission:
7777
notdefault: "§cYou can't set a permission on the default world."
@@ -86,7 +86,7 @@ unset:
8686
# Defaults command
8787
defaults:
8888
list:
89-
values: "§cDefault settings for worlds on this server\n\n§epermission: {permission}\n§egamemode: {gamemode}\n§ebuild: {build}\n§epvp: {pvp}\n§edamage: {damage}\n§einteract: {interact}\n§eexplode: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efly: {fly}\n§edaylightcycle: {daylightcycle}\n§eleavesdecay: {leavesdecay}\n"
89+
values: "§cDefault settings for worlds on this server\n\n§epermission: {permission}\n§egamemode: {gamemode}\n§ebuild: {build}\n§epvp: {pvp}\n§edamage: {damage}\n§einteract: {interact}\n§eexplode: {explode}\n§edrop: {drop}\n§ehunger: {hunger}\n§efly: {fly}\n§edaylightcycle: {daylightcycle}\n§eleavesdecay: {leavesdecay}\n§epotion: {potion}\n"
9090
notset: "§7not set"
9191
set:
9292
success: "§aYou've set §b{key} §ato §c{value} §aas default value."
@@ -111,6 +111,7 @@ forms:
111111
fly: "Flying"
112112
daylightcycle: "Daylight cycling"
113113
leavesdecay: "Leaves decay"
114+
potion: "Potion"
114115
options:
115116
notset: "§7not set (null)"
116117
true: "§aenabled"

src/surva/worlds/EventListener.php

+22
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121
use pocketmine\event\player\PlayerDropItemEvent;
2222
use pocketmine\event\player\PlayerExhaustEvent;
2323
use pocketmine\event\player\PlayerInteractEvent;
24+
use pocketmine\event\player\PlayerItemConsumeEvent;
2425
use pocketmine\event\player\PlayerJoinEvent;
2526
use pocketmine\item\PaintingItem;
27+
use pocketmine\item\Potion;
2628
use pocketmine\item\TieredTool;
2729
use pocketmine\Player;
2830

@@ -320,6 +322,26 @@ public function onLeavesDecay(LeavesDecayEvent $event): void
320322
}
321323
}
322324

325+
/**
326+
* @param \pocketmine\event\player\PlayerItemConsumeEvent $event
327+
*/
328+
public function onPlayerItemConsume(PlayerItemConsumeEvent $event): void
329+
{
330+
$player = $event->getPlayer();
331+
$item = $event->getItem();
332+
$foldername = $player->getLevel()->getFolderName();
333+
334+
if (!($item instanceof Potion)) {
335+
return;
336+
}
337+
338+
if ($world = $this->getWorlds()->getWorldByName($foldername)) {
339+
if ($world->getPotion() === false) {
340+
$event->setCancelled();
341+
}
342+
}
343+
}
344+
323345
/**
324346
* @return Worlds
325347
*/

src/surva/worlds/commands/DefaultsCommand.php

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public function do(CommandSender $sender, array $args): bool
5353
"fly" => $this->formatBool($defaults->getFly()),
5454
"daylightcycle" => $this->formatBool($defaults->getDaylightCycle()),
5555
"leavesdecay" => $this->formatBool($defaults->getLeavesDecay()),
56+
"potion" => $this->formatBool($defaults->getPotion()),
5657
]
5758
)
5859
);

src/surva/worlds/commands/SetCommand.php

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public function do(CommandSender $sender, array $args): bool
5959
"fly" => $this->formatBool($world->getFly()),
6060
"daylightcycle" => $this->formatBool($world->getDaylightCycle()),
6161
"leavesdecay" => $this->formatBool($world->getLeavesDecay()),
62+
"potion" => $this->formatBool($world->getPotion()),
6263
]
6364
)
6465
);

src/surva/worlds/types/World.php

+11
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ class World
5454
/* @var bool|null */
5555
protected $leavesdecay;
5656

57+
/* @var bool|null */
58+
protected $potion;
59+
5760
public function __construct(Worlds $worlds, Config $config)
5861
{
5962
$this->worlds = $worlds;
@@ -135,6 +138,14 @@ public function removeValue(string $name): void
135138
$this->loadItems();
136139
}
137140

141+
/**
142+
* @return bool|null
143+
*/
144+
public function getPotion(): ?bool
145+
{
146+
return $this->potion;
147+
}
148+
138149
/**
139150
* @return bool|null
140151
*/

src/surva/worlds/utils/Flags.php

+6
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ class Flags
5252
"leavesdecay" => [
5353
"type" => self::TYPE_BOOL,
5454
],
55+
"potion" => [
56+
"type" => self::TYPE_BOOL,
57+
],
5558
];
5659

5760
public const AVAILABLE_DEFAULT_FLAGS
@@ -89,6 +92,9 @@ class Flags
8992
"leavesdecay" => [
9093
"type" => self::TYPE_BOOL,
9194
],
95+
"potion" => [
96+
"type" => self::TYPE_BOOL,
97+
],
9298
];
9399

94100
}

0 commit comments

Comments
 (0)