Compare commits

...
30 Commits
Author SHA1 Message Date
version-bump[github-action] 67f27359e8 Bump version from 5.0.11-SNAPSHOT4 to 5.0.12 2025-02-17 21:23:55 +00:00
Tigerpanzer_02andversion-bump[github-action] 6ff5236241 #patch Back to stability 2.0 (#95)
* Bump version from 5.0.11 to 5.0.11-SNAPSHOT0

* Fixed a bug on gtb where players were getting points for guess even when they wrote the theme on chat when it was already shown by the plugin

* Updated config to match core version 5

* Fixed block destroy drops

* Fixed gtb Arena CleanUp which results in first round issues at selection of theme etc.

* Fixed gtb options menu is not showing up for every builder

* Fixed gtb plot reset

* Bump version from 5.0.11-SNAPSHOT0 to 5.0.11-SNAPSHOT1

* Updated MiniGamesBox

* Bump version from 5.0.11-SNAPSHOT1 to 5.0.11-SNAPSHOT2

* Fixed ItemSpawn on Plotarea also for dropped items by not player related drops

* Bump version from 5.0.11-SNAPSHOT2 to 5.0.11-SNAPSHOT3

* Fixed players are collidable on normal made

* Updated CHANGELOG.md

* Updated CHANGELOG.md

* Bump version from 5.0.11-SNAPSHOT3 to 5.0.11-SNAPSHOT4

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2025-02-17 22:23:08 +01:00
Tigerpanzer_02 7d0157a3ce Update deploy-master.yml 2025-02-12 19:13:48 +01:00
Tigerpanzer_02 c5b204f12d Update deploy-development.yml 2025-02-12 19:13:17 +01:00
Tigerpanzer_02 e7303d7b5d Fixed spectator counts on gtb guess 2025-01-27 23:17:35 +01:00
Tigerpanzer_02 3b6871bdfb Fixed bba settheme not working, now works
if executed in lobby: skip voting when game starts
and allow executing it all the time after game started so admin can change theme anytime
2025-01-27 23:14:33 +01:00
Tigerpanzer_02 4a00729153 Misc changed stained glass pane naming to ??? 2025-01-27 22:27:29 +01:00
Tigerpanzer_02 acc6d9bea4 Fixed PlayerHeads on 1.20+ 2025-01-27 22:26:58 +01:00
Tigerpanzer_02 8dc6ece9f7 Fixed clearing of dropped items on 1.21+ 2025-01-27 22:26:24 +01:00
Tigerpanzer_02 52013964be Added notice for Mob.Spawn that it also contains Armour Stands 2025-01-27 22:24:24 +01:00
Tigerpanzer_02 1566119559 Updated Gradle 2025-01-27 22:24:06 +01:00
Tigerpanzer_02 c1bdf92925 Fixed Biomes on 1.21 2025-01-27 22:23:34 +01:00
Tigerpanzer_02 588e6fb0f3 Fixed Banner Building on 1.20+ 2025-01-27 22:23:16 +01:00
Tigerpanzer_02 4257e7ba53 Fixed Creature Spawning outside plots in same world 2025-01-27 22:12:57 +01:00
version-bump[github-action] 4305660bff Bump version from 5.0.10-SNAPSHOT1 to 5.0.11 2024-07-12 23:49:14 +00:00
Tigerpanzer_02andversion-bump[github-action] 2beeb74559 #patch Fixed 1.20.6 & 1.21 (#89)
* Bump version from 5.0.10 to 5.0.10-SNAPSHOT0

* Changed ServerVersion as 1.20.6+ removed package nms

* Bump version from 5.0.10-SNAPSHOT0 to 5.0.10-SNAPSHOT1

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2024-07-13 01:48:22 +02:00
version-bump[github-action] 66e556003e Bump version from 5.0.9-SNAPSHOT1 to 5.0.10 2024-07-10 23:15:17 +00:00
Tigerpanzer_02andversion-bump[github-action] a3e590ce07 #patch Fixed a plugin crash on none paperspigot software servers (#88)
* Bump version from 5.0.9 to 5.0.9-SNAPSHOT0

* Updated to minigamesbox 1.3.12

* Bump version from 5.0.9-SNAPSHOT0 to 5.0.9-SNAPSHOT1

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2024-07-11 01:14:21 +02:00
version-bump[github-action] a81d21d4ec Bump version from 5.0.8-SNAPSHOT2 to 5.0.9 2024-07-09 20:13:37 +00:00
bc575c26d2 #patch Fixed several issues (#87)
Special thanks to https://github.com/Waterman1001

* Bump version from 5.0.7-SNAPSHOT1 to 5.0.8

* Fixed many bugs in BuildBattle plugin (#86)

* Updated plugin.yml to prevent invalid file error on startup

* Changed version of dependency MiniGamesBox to circumvent build issues

* Fixed error in time change menu

* Fixed issue with %player% placeholder (should be lowercase)

* Bump version from 5.0.7-SNAPSHOT1 to 5.0.8

* Fixed problem in place rewards

* Cancelled BlockExplodeEvent to prevent blocks such as Respawn Anchor explode and damage the arena.

* Fixed BuildBattle menu item not working because API was used at 2 different places. Added bb menu command and used registerSpecialItem to fix.

* Disabled enderpearl throwing while in arena because it allows to teleport to other players plots or outside the arena map, even during voting stage.

* Changed back version number of MiniGamesBox to 1.3.10

* Fixed small error if non-player threw projectile.

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>

* Bump version from 5.0.8 to 5.0.8-SNAPSHOT0

* fix: fixed ChunkManager.sendMapChunk

* Bump version from 5.0.8-SNAPSHOT0 to 5.0.8-SNAPSHOT1

* Updated to minigamesbox 1.3.11

* Bump version from 5.0.8-SNAPSHOT1 to 5.0.8-SNAPSHOT2

* Update CHANGELOG.md

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
Co-authored-by: Onno <emailodg@gmail.com>
Co-authored-by: Lagggpixel <lagggpixel@gmail.com>
2024-07-09 22:12:43 +02:00
version-bump[github-action] 4fb500c015 Bump version from 5.0.7-SNAPSHOT1 to 5.0.8 2024-06-24 09:18:23 +00:00
Wanbin Caoandversion-bump[github-action] 86202128d2 #patch bumped minigames box version (#85)
* Bump version from 5.0.7 to 5.0.7-SNAPSHOT0

* feat: bumped minigames box version

* Bump version from 5.0.7-SNAPSHOT0 to 5.0.7-SNAPSHOT1

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2024-06-24 10:17:07 +01:00
version-bump[github-action] 83fc1a5904 Bump version from 5.0.6-SNAPSHOT1 to 5.0.7 2024-06-21 16:10:21 +00:00
Wanbin Caoandversion-bump[github-action] ecc34b0816 #patch API update and minor improvements (#84)
* Bump version from 5.0.6 to 5.0.6-SNAPSHOT0

* feat: added new API compatibility

* feat: optimised scoreboard

* feat: added allowing disabling of super votes
https://github.com/Sowgro

* Bump version from 5.0.6-SNAPSHOT0 to 5.0.6-SNAPSHOT1

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2024-06-21 17:09:17 +01:00
version-bump[github-action] 980defa641 Bump version from 5.0.5-SNAPSHOT1 to 5.0.6 2024-04-23 23:23:03 +00:00
Tigerpanzer_02andversion-bump[github-action] ddbc20a599 #patch General optimization (#81)
* Bump version from 5.0.5 to 5.0.5-SNAPSHOT0

* Updated to minigamesbox 1.3.8

* Bump version from 5.0.5-SNAPSHOT0 to 5.0.5-SNAPSHOT1

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2024-04-24 01:21:49 +02:00
version-bump[github-action] b79439d225 Bump version from 5.0.4-SNAPSHOT2 to 5.0.5 2024-01-15 22:36:58 +00:00
Tigerpanzer_02andversion-bump[github-action] e3a69aca1b #patch Minigamesbox 1.3.7 (#80)
* Bump version from 5.0.4 to 5.0.4-SNAPSHOT0

* Fetched latest changes from minigamesbox

* Bump version from 5.0.4-SNAPSHOT0 to 5.0.4-SNAPSHOT1

* Updated to minigamesbox 1.3.7

* Bump version from 5.0.4-SNAPSHOT1 to 5.0.4-SNAPSHOT2

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2024-01-15 23:36:06 +01:00
version-bump[github-action] 9ca6a7b364 Bump version from 5.0.3-SNAPSHOT1 to 5.0.4 2024-01-13 01:38:53 +00:00
Tigerpanzer_02andversion-bump[github-action] b99e2ee4db #patch General improvements / code maintenance (#79)
* Bump version from 5.0.3 to 5.0.3-SNAPSHOT0

* Fetched minigamesbox 1.3.6

* Bump version from 5.0.3-SNAPSHOT0 to 5.0.3-SNAPSHOT1

---------

Co-authored-by: version-bump[github-action] <41898282+version-bump[github-action]@users.noreply.github.com>
2024-01-13 02:37:59 +01:00
45 changed files with 489 additions and 356 deletions

No files matched your search

+45 -1
View File
@@ -10,6 +10,50 @@ deploy webhooks to print changelog successfully
That's all, matcher will stop when detects next line started with `###` match
### 5.0.12 Release (17.02.2025)
* Fixed ItemSpawn on Plotarea also for dropped items by not player related drops
* Fixed gtb plot reset
* Fixed gtb Arena CleanUp which results in first round issues at selection of theme etc.
* Fixed gtb options menu is not showing up for every builder
* Fixed block destroy drops
* Fixed a bug on gtb where players were getting points for guess even when they wrote the theme on chat when it was already shown by the plugin
* Fixed spectator counts on gtb guess
* Fixed bba settheme command
* Fixed PlayerHeads on 1.20+
* Fixed clearing of dropped items on 1.21+
* Fixed Biomes on 1.21
* Fixed Banner Building on 1.20+
* Fixed Creature Spawning outside plots in same world
* Fixed players are collidable on normal mode
* Changed stained glass pane naming to ???
* Updated to minigamesbox 1.3.16
### 5.0.9 Release (09.07.2024)
* Updated to minigamesbox 1.3.11
* Fixed ChunkManager.sendMapChunk
* Fixed error in time change menu
* Fixed issue with %player% placeholder (should be lowercase)
* Fixed problem in place rewards
* Fixed small error if non-player threw projectile.
* Added Cancel of BlockExplodeEvent to prevent blocks such as Respawn Anchor explode and damage the arena
* Added Disabled enderpearl throwing while in arena because it allows to teleport to other players plots or outside the arena map, even during voting stage.
### 5.0.8 Release (25.06.2024)
* Updated to minigamesbox 1.3.9
### 5.0.7 Release (18.06.2024)
* API update
### 5.0.6 Release (24.04.2024)
* Updated to minigamesbox 1.3.8
### 5.0.5 Release (15.01.2024)
* Updated to minigamesbox 1.3.7
### 5.0.4 Release (13.01.2024)
* Updated to minigamesbox 1.3.6
### 5.0.3 Release (03.01.2024)
* Added new command /bba locale <locale> to set your locale
* Fixed GameProfile API 1.20 change
@@ -621,4 +665,4 @@ it will have BEDROCK value if absent
### 3.0.0 Release (14.05.2018 - 01.06.2018)
* Add everything here
* Add everything here
+5 -5
View File
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Latest Commit
uses: actions/checkout@v3
uses: actions/checkout@v4.2.2
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Bump Version
@@ -25,14 +25,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Latest Commit
uses: actions/checkout@v3
uses: actions/checkout@v4.2.2
with:
ref: 'development'
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4.6.0
with:
distribution: 'temurin'
java-version: '17'
java-version: '21'
java-package: jdk
- name: Grant execute permission for gradlew
run: chmod +x gradlew
@@ -40,4 +40,4 @@ jobs:
run: ./gradlew publishMavenPublicationToSnapshotsRepository
env:
MAVEN_USERNAME: ${{ secrets.SNAPSHOTSUSERNAME }}
MAVEN_PASSWORD: ${{ secrets.SNAPSHOTSPASSWORD }}
MAVEN_PASSWORD: ${{ secrets.SNAPSHOTSPASSWORD }}
+5 -5
View File
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Latest Commit
uses: actions/checkout@v3
uses: actions/checkout@v4.2.2
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Bump Version
@@ -28,14 +28,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Latest Commit
uses: actions/checkout@v3
uses: actions/checkout@v4.2.2
with:
ref: 'master'
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4.6.0
with:
distribution: 'temurin'
java-version: '17'
java-version: '21'
java-package: jdk
- name: Grant execute permission for gradlew
run: chmod +x gradlew
@@ -43,4 +43,4 @@ jobs:
run: ./gradlew publishMavenPublicationToReleasesRepository
env:
MAVEN_USERNAME: ${{ secrets.RELEASESUSERNAME }}
MAVEN_PASSWORD: ${{ secrets.RELEASESPASSWORD }}
MAVEN_PASSWORD: ${{ secrets.RELEASESPASSWORD }}
+9 -5
View File
@@ -1,3 +1,4 @@
/*
*
* BuildBattle - Ultimate building competition minigame
@@ -21,7 +22,7 @@
plugins {
id("signing")
`maven-publish`
id("com.github.johnrengelman.shadow") version "8.1.1"
id ("com.gradleup.shadow") version "9.0.0-beta5"
java
}
@@ -30,7 +31,10 @@ repositories {
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
maven("https://oss.sonatype.org/content/repositories/snapshots")
maven("https://oss.sonatype.org/content/repositories/central")
maven(uri("https://papermc.io/repo/repository/maven-public/"))
maven {
name = "papermc"
url = uri("https://repo.papermc.io/repository/maven-public/")
}
maven(uri("https://maven.plugily.xyz/releases"))
maven(uri("https://maven.plugily.xyz/snapshots"))
maven(uri("https://repo.citizensnpcs.co/"))
@@ -38,14 +42,14 @@ repositories {
}
dependencies {
implementation("plugily.projects:MiniGamesBox-Classic:1.3.5") { isTransitive = false }
compileOnly("org.spigotmc:spigot-api:1.19.3-R0.1-SNAPSHOT")
implementation("plugily.projects:MiniGamesBox-Classic:1.3.16") { isTransitive = false }
compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT")
compileOnly("net.citizensnpcs:citizensapi:2.0.31-SNAPSHOT")
compileOnly("org.jetbrains:annotations:24.0.1")
}
group = "plugily.projects"
version = "5.0.3"
version = "5.0.12"
description = "BuildBattle"
java {
+2 -21
View File
@@ -1,26 +1,7 @@
#
#
# BuildBattle - Ultimate building competition minigame
# Copyright (C) 2022 Plugily Projects - maintained by Tigerpanzer_02 and contributors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
@@ -20,8 +20,6 @@
package plugily.projects.buildbattle;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPluginLoader;
import org.jetbrains.annotations.TestOnly;
import plugily.projects.buildbattle.arena.ArenaEvents;
import plugily.projects.buildbattle.arena.ArenaManager;
@@ -43,8 +41,6 @@ import plugily.projects.minigamesbox.classic.handlers.setup.SetupInventory;
import plugily.projects.minigamesbox.classic.handlers.setup.categories.PluginSetupCategoryManager;
import plugily.projects.minigamesbox.classic.utils.services.metrics.Metrics;
import java.io.File;
/**
* Created by Tom on 17/08/2015.
* Updated by Tigerpanzer_02 on 03.12.2021
@@ -66,11 +62,6 @@ public class Main extends PluginMain {
super();
}
@TestOnly
protected Main(JavaPluginLoader loader, PluginDescriptionFile description, File dataFolder, File file) {
super(loader, description, dataFolder, file);
}
@Override
public void onEnable() {
long start = System.currentTimeMillis();
@@ -23,7 +23,7 @@ package plugily.projects.buildbattle.api.event.guess;
import org.bukkit.event.HandlerList;
import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.buildbattle.handlers.themes.BBTheme;
import plugily.projects.minigamesbox.classic.api.event.PlugilyEvent;
import plugily.projects.minigamesbox.api.events.PlugilyEvent;
/**
@@ -25,7 +25,7 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.classic.api.event.PlugilyEvent;
import plugily.projects.minigamesbox.api.events.PlugilyEvent;
public class PlotPlayerChooseEvent extends PlugilyEvent implements Cancellable {
@@ -23,7 +23,7 @@ package plugily.projects.buildbattle.api.event.plot;
import org.bukkit.event.HandlerList;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.classic.api.event.PlugilyEvent;
import plugily.projects.minigamesbox.api.events.PlugilyEvent;
/**
* @author Plajer
@@ -23,7 +23,7 @@ package plugily.projects.buildbattle.api.event.plot;
import org.bukkit.event.HandlerList;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.classic.api.event.PlugilyEvent;
import plugily.projects.minigamesbox.api.events.PlugilyEvent;
/**
* @author Plajer
@@ -32,7 +32,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.block.*;
import org.bukkit.event.entity.*;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
@@ -43,8 +42,8 @@ import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.inventory.ItemStack;
import plugily.projects.buildbattle.Main;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.classic.arena.PluginArenaEvents;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.utils.version.ServerVersion;
@@ -74,7 +73,7 @@ public class ArenaEvents extends PluginArenaEvents {
if(arena == null) {
return;
}
if(arena.getArenaState() != ArenaState.IN_GAME || (arena instanceof BuildArena && arena.getArenaInGameState() == BaseArena.ArenaInGameState.PLOT_VOTING)
if(arena.getArenaState() != IArenaState.IN_GAME || (arena instanceof BuildArena && arena.getArenaInGameState() == BaseArena.ArenaInGameState.PLOT_VOTING)
|| plugin.getBlacklistManager().getItemList().contains(event.getBlock().getType())) {
event.setCancelled(true);
return;
@@ -84,18 +83,42 @@ public class ArenaEvents extends PluginArenaEvents {
if(buildPlot != null && buildPlot.getCuboid() != null && buildPlot.getCuboid().isIn(event.getBlock().getLocation())) {
plugin.getUserManager().getUser(event.getPlayer()).adjustStatistic("BLOCKS_BROKEN", 1);
if(event.isDropItems()) {
event.getBlock().getDrops().clear();
}
return;
}
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.HIGH)
public void onItemSpawn(ItemSpawnEvent event) {
if (!plugin.getArenaRegistry().getArenaWorlds().contains(event.getLocation().getWorld())) {
return;
}
plugin.getArenaRegistry().getArenas().forEach(arena -> {
if(!(arena instanceof BaseArena)) {
return;
}
if(((BaseArena) arena).getArenaInGameState() != BaseArena.ArenaInGameState.BUILD_TIME || plugin.getBlacklistManager().getItemList().contains(event.getEntity().getItemStack().getType())) {
return;
}
for(Plot buildPlot : ((BaseArena) arena).getPlotManager().getPlots()) {
if(buildPlot.getCuboid() != null && buildPlot.getCuboid().isInWithMarge(event.getLocation(), 1)) {
event.setCancelled(true);
}
}
});
}
@EventHandler(priority = EventPriority.HIGH)
public void onPlace(BlockPlaceEvent event) {
BaseArena arena = plugin.getArenaRegistry().getArena(event.getPlayer());
if(arena == null) {
return;
}
if(arena.getArenaState() != ArenaState.IN_GAME || plugin.getBlacklistManager().getItemList().contains(event.getBlock().getType())
if(arena.getArenaState() != IArenaState.IN_GAME || plugin.getBlacklistManager().getItemList().contains(event.getBlock().getType())
|| (arena instanceof BuildArena && arena.getArenaInGameState() == BaseArena.ArenaInGameState.PLOT_VOTING)) {
event.setCancelled(true);
return;
@@ -119,7 +142,7 @@ public class ArenaEvents extends PluginArenaEvents {
if(event.getRightClicked().getType() == EntityType.ITEM_FRAME && ((ItemFrame) event.getRightClicked()).getItem().getType() != Material.AIR) {
Location entityLocation = event.getRightClicked().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -146,7 +169,7 @@ public class ArenaEvents extends PluginArenaEvents {
BaseArena arena = plugin.getArenaRegistry().getArena(event.getPlayer());
if(arena == null || arena.getArenaState() != ArenaState.IN_GAME) {
if(arena == null || arena.getArenaState() != IArenaState.IN_GAME) {
return;
}
@@ -189,7 +212,7 @@ public class ArenaEvents extends PluginArenaEvents {
if(playerPlot != null) {
// Prevent "Legacy material support initialisation"
playerPlot.changeFloor(material, ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12_R1) ? hand.getData().getData() : 0);
playerPlot.changeFloor(material, ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12) ? hand.getData().getData() : 0);
new MessageBuilder("MENU_OPTION_CONTENT_FLOOR_CHANGED").asKey().player(event.getPlayer()).sendPlayer();
}
}
@@ -204,7 +227,7 @@ public class ArenaEvents extends PluginArenaEvents {
return;
}
if(arena.getArenaState() != ArenaState.IN_GAME || event.getClickedBlock().getType() == XMaterial.ENDER_CHEST.parseMaterial()) {
if(arena.getArenaState() != IArenaState.IN_GAME || event.getClickedBlock().getType() == XMaterial.ENDER_CHEST.parseMaterial()) {
event.setCancelled(true);
}
}
@@ -215,7 +238,7 @@ public class ArenaEvents extends PluginArenaEvents {
if(vehicle.getType() != EntityType.MINECART) {
return;
}
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -232,7 +255,7 @@ public class ArenaEvents extends PluginArenaEvents {
public void onIgniteEvent(BlockIgniteEvent event) {
Location blockLocation = event.getBlock().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -248,7 +271,7 @@ public class ArenaEvents extends PluginArenaEvents {
public void onPistonRetractEvent(BlockPistonRetractEvent event) {
Location blockLocation = event.getBlock().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -266,7 +289,7 @@ public class ArenaEvents extends PluginArenaEvents {
public void onLeavesDecay(LeavesDecayEvent event) {
Location blockLocation = event.getBlock().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -301,7 +324,7 @@ public class ArenaEvents extends PluginArenaEvents {
int maxMobPerPlot = plugin.getConfig().getInt("Mob.Max-Amount", 20);
Location entityLoc = event.getEntity().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -317,13 +340,13 @@ public class ArenaEvents extends PluginArenaEvents {
continue;
}
if(event.getEntity().getType() == EntityType.WITHER || !plugin.getConfigPreferences().getOption("MOB_SPAWN")) {
event.setCancelled(true);
return;
}
for(Plot plot : baseArena.getPlotManager().getPlots()) {
if(plot.getCuboid() != null && plot.getCuboid().isInWithMarge(entityLoc, 1)) {
if(!plugin.getConfigPreferences().getOption("MOB_SPAWN")) {
event.setCancelled(true);
return;
}
if(plot.getEntities() >= maxMobPerPlot) {
plot.getMembers().forEach(player -> new MessageBuilder("IN_GAME_MESSAGES_PLOT_LIMIT_ENTITIES").asKey().arena(arena).player(player).sendPlayer());
event.setCancelled(true);
@@ -340,7 +363,7 @@ public class ArenaEvents extends PluginArenaEvents {
plot.addEntity();
event.setCancelled(false);
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_9_R1)) {
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_9)) {
event.getEntity().setAI(false);
}
}
@@ -353,7 +376,7 @@ public class ArenaEvents extends PluginArenaEvents {
if(event.getSource().getType() != Material.FIRE)
return;
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -373,7 +396,7 @@ public class ArenaEvents extends PluginArenaEvents {
public void onDispense(BlockDispenseEvent event) {
Location blockLoc = event.getBlock().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -409,22 +432,21 @@ public class ArenaEvents extends PluginArenaEvents {
return;
}
BaseArena arena = plugin.getArenaRegistry().getArena((Player) event.getEntity());
if(arena == null || arena.getArenaState() != ArenaState.IN_GAME) {
return;
}
if(event.getEntity().getType() != EntityType.PLAYER) {
if(arena == null || arena.getArenaState() != IArenaState.IN_GAME) {
return;
}
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.HIGH)
public void onDamage(EntityDamageEvent event) {
if(event.getEntity().getType() != EntityType.PLAYER) {
return;
}
BaseArena arena = plugin.getArenaRegistry().getArena((Player) event.getEntity());
if(arena == null || arena.getArenaState() != ArenaState.IN_GAME) {
if(arena == null || arena.getArenaState() != IArenaState.IN_GAME) {
return;
}
event.setCancelled(true);
@@ -455,7 +477,7 @@ public class ArenaEvents extends PluginArenaEvents {
public void onTNTExplode(EntityExplodeEvent event) {
Location entityLocation = event.getEntity().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -468,12 +490,42 @@ public class ArenaEvents extends PluginArenaEvents {
}
}
@EventHandler
public void onOtherBlockExplode(BlockExplodeEvent event) {
Location blockLocation = event.getBlock().getLocation();
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
for(Plot buildPlot : ((BaseArena) arena).getPlotManager().getPlots()) {
if(buildPlot.getCuboid() != null && buildPlot.getCuboid().isInWithMarge(blockLocation, 5)) {
event.blockList().clear();
event.setCancelled(true);
}
}
}
}
@EventHandler
public void onEnderpearlThrow(ProjectileLaunchEvent event) {
if(event.getEntity().getShooter() instanceof Player) {
BaseArena arena = plugin.getArenaRegistry().getArena((Player) event.getEntity().getShooter());
if (arena == null || arena.getArenaState() != IArenaState.IN_GAME) {
return;
}
if (event.getEntity() instanceof EnderPearl) {
event.setCancelled(true);
}
}
}
@EventHandler
public void onWaterFlowEvent(BlockFromToEvent event) {
Location toBlock = event.getToBlock().getLocation();
Location blockLoc = event.getBlock().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -507,7 +559,7 @@ public class ArenaEvents extends PluginArenaEvents {
@EventHandler
public void onPistonExtendEvent(BlockPistonExtendEvent event) {
Location blockLoc = event.getBlock().getLocation();
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(!(arena instanceof BaseArena)) {
continue;
}
@@ -532,15 +584,6 @@ public class ArenaEvents extends PluginArenaEvents {
}
}
@EventHandler
public void onInventoryClose(InventoryCloseEvent event) {
Player player = (Player) event.getPlayer();
BaseArena baseArena = plugin.getArenaRegistry().getArena(player);
if(baseArena != null && baseArena.getArenaInGameState() == BaseArena.ArenaInGameState.BUILD_TIME) {
baseArena.addMenuItem(player);
}
}
@EventHandler
public void onItemMove(InventoryClickEvent event) {
HumanEntity humanEntity = event.getWhoClicked();
@@ -548,7 +591,7 @@ public class ArenaEvents extends PluginArenaEvents {
if(humanEntity instanceof Player) {
BaseArena baseArena = plugin.getArenaRegistry().getArena((Player) humanEntity);
if(baseArena != null && baseArena.getArenaState() != ArenaState.IN_GAME) {
if(baseArena != null && baseArena.getArenaState() != IArenaState.IN_GAME) {
if(event.getClickedInventory() == humanEntity.getInventory()) {
if(event.getView().getType() == InventoryType.CRAFTING
|| event.getView().getType() == InventoryType.PLAYER) {
@@ -566,7 +609,10 @@ public class ArenaEvents extends PluginArenaEvents {
if(!(arena instanceof GuessArena)) {
return;
}
if(arena.getArenaState() != ArenaState.IN_GAME) {
if(arena.getArenaState() != IArenaState.IN_GAME) {
return;
}
if(arena.getArenaInGameState() != BaseArena.ArenaInGameState.BUILD_TIME) {
return;
}
if(arena.getSpectators().contains(player)) {
@@ -24,7 +24,9 @@ import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import plugily.projects.buildbattle.Main;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.api.user.IUser;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.classic.arena.PluginArenaManager;
import plugily.projects.minigamesbox.classic.user.User;
@@ -45,7 +47,7 @@ public class ArenaManager extends PluginArenaManager {
}
@Override
public void additionalPartyJoin(Player player, PluginArena arena, Player partyLeader) {
public void additionalPartyJoin(Player player, IPluginArena arena, Player partyLeader) {
BaseArena pluginArena = plugin.getArenaRegistry().getArena(arena.getId());
if(pluginArena == null) {
return;
@@ -67,13 +69,13 @@ public class ArenaManager extends PluginArenaManager {
}
@Override
public void leaveAttempt(@NotNull Player player, @NotNull PluginArena arena) {
public void leaveAttempt(@NotNull Player player, @NotNull IPluginArena arena) {
BaseArena pluginArena = plugin.getArenaRegistry().getArena(arena.getId());
if(pluginArena == null) {
return;
}
super.leaveAttempt(player, arena);
User user = plugin.getUserManager().getUser(player);
IUser user = plugin.getUserManager().getUser(player);
user.setStatistic("LOCAL_POINTS", 0);
user.setStatistic("LOCAL_POINTS_GTB", 0);
Plot plot = pluginArena.getPlotManager().getPlot(player);
@@ -91,7 +93,7 @@ public class ArenaManager extends PluginArenaManager {
((GuessArena) arena).getWhoGuessed().remove(player);
if(guessArena.getCurrentBuilders().contains(player)) {
if(plot.getMembers().isEmpty()) {
if(arena.getArenaState() == ArenaState.IN_GAME) {
if(arena.getArenaState() == IArenaState.IN_GAME) {
//ToDo message force skipped
pluginArena.setTimer(plugin.getConfig().getInt("Time-Manager." + pluginArena.getArenaType().getPrefix() + ".Round-Delay"), true);
pluginArena.setArenaInGameState(BaseArena.ArenaInGameState.PLOT_VOTING);
@@ -29,6 +29,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import plugily.projects.buildbattle.Main;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.classic.arena.PluginArenaRegistry;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
@@ -118,7 +119,7 @@ public class ArenaRegistry extends PluginArenaRegistry {
World minWorld = minPoint.getWorld();
if(minWorld != null) {
Biome biome = ServerVersion.Version.isCurrentHigher(ServerVersion.Version.v1_15_R1) ?
Biome biome = ServerVersion.Version.isCurrentHigher(ServerVersion.Version.v1_15) ?
minWorld.getBiome(minPoint.getBlockX(), minPoint.getBlockY(), minPoint.getBlockZ())
: minWorld.getBiome(minPoint.getBlockX(), minPoint.getBlockZ());
@@ -156,7 +157,7 @@ public class ArenaRegistry extends PluginArenaRegistry {
@Override
public @Nullable BaseArena getArena(Player player) {
PluginArena pluginArena = super.getArena(player);
IPluginArena pluginArena = super.getArena(player);
if(pluginArena instanceof BaseArena) {
return (BaseArena) pluginArena;
}
@@ -165,7 +166,7 @@ public class ArenaRegistry extends PluginArenaRegistry {
@Override
public @Nullable BaseArena getArena(String id) {
PluginArena pluginArena = super.getArena(id);
IPluginArena pluginArena = super.getArena(id);
if(pluginArena instanceof BaseArena) {
return (BaseArena) pluginArena;
}
@@ -174,7 +175,7 @@ public class ArenaRegistry extends PluginArenaRegistry {
public @NotNull List<BaseArena> getPluginArenas() {
List<BaseArena> baseArenas = new ArrayList<>(super.getArenas().size());
for(PluginArena pluginArena : super.getArenas()) {
for(IPluginArena pluginArena : super.getArenas()) {
if(pluginArena instanceof BaseArena) {
baseArenas.add((BaseArena) pluginArena);
}
@@ -53,7 +53,7 @@ public class BaseArena extends PluginArena {
private final List<Player> spectators = new ArrayList<>();
private MapRestorerManager mapRestorerManager;
private final PlotManager plotManager;
private String theme = "Theme";
private String theme = null;
protected ParticleRefreshScheduler particleRefreshScheduler;
private ArenaType arenaType;
@@ -153,8 +153,8 @@ public class BaseArena extends PluginArena {
return theme;
}
public void setTheme(String theme) {
this.theme = theme == null ? "Theme" : theme;
public void setTheme(String arenaTheme) {
this.theme = arenaTheme;
}
public void sendBuildLeftTimeMessage() {
@@ -217,33 +217,6 @@ public class BaseArena extends PluginArena {
}
}
HandlerItem optionsMenuItem;
private HandlerItem getMenuItem() {
if(optionsMenuItem == null) {
HandlerItem optionsMenu = new HandlerItem(getPlugin().getOptionsRegistry().getMenuItem());
optionsMenu.setLeftClick(true);
optionsMenu.setRightClick(true);
optionsMenu.addInteractHandler(event -> {
event.setCancelled(true);
getPlugin().getOptionsRegistry().getOptionsGui().open(event.getPlayer());
});
optionsMenu.addInventoryClickHandler(event -> {
getPlugin().getOptionsRegistry().getOptionsGui().open(event.getWhoClicked());
});
optionsMenuItem = optionsMenu.build();
}
return optionsMenuItem;
}
public void addMenuItem(Player player) {
if(player.getInventory().contains(getMenuItem().getItemStack())) {
return;
}
player.getInventory().setItem(8, getMenuItem().getItemStack());
}
public PlotManager getPlotManager() {
return plotManager;
}
@@ -27,7 +27,7 @@ import plugily.projects.buildbattle.arena.states.build.InGameState;
import plugily.projects.buildbattle.arena.states.build.StartingState;
import plugily.projects.buildbattle.handlers.themes.vote.VoteMenu;
import plugily.projects.buildbattle.handlers.themes.vote.VotePoll;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import java.util.*;
@@ -44,8 +44,8 @@ public class BuildArena extends BaseArena {
public BuildArena(String id) {
super(id);
setArenaType(ArenaType.SOLO);
addGameStateHandler(ArenaState.IN_GAME, new InGameState());
addGameStateHandler(ArenaState.STARTING, new StartingState());
addGameStateHandler(IArenaState.IN_GAME, new InGameState());
addGameStateHandler(IArenaState.STARTING, new StartingState());
getPlugin().getDebugger().debug("Init Arena {0} with ArenaType {1}", getId(), getArenaType());
}
@@ -29,7 +29,7 @@ import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.buildbattle.arena.states.guess.InGameState;
import plugily.projects.buildbattle.arena.states.guess.StartingState;
import plugily.projects.buildbattle.handlers.themes.BBTheme;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.utils.version.VersionUtils;
@@ -60,17 +60,16 @@ public class GuessArena extends BaseArena {
public GuessArena(String id) {
super(id);
setArenaType(ArenaType.GUESS_THE_BUILD);
addGameStateHandler(ArenaState.IN_GAME, new InGameState());
addGameStateHandler(ArenaState.STARTING, new StartingState());
addGameStateHandler(IArenaState.IN_GAME, new InGameState());
addGameStateHandler(IArenaState.STARTING, new StartingState());
getPlugin().getDebugger().debug("Init Arena {0} with ArenaType {1}", getId(), getArenaType());
}
@Override
public void cleanUpArena() {
currentTheme = null;
resetBuildPlot();
round = 1;
whoGuessed.clear();
removedCharsAt.clear();
playedPlots.clear();
playedThemes.clear();
super.cleanUpArena();
@@ -138,10 +137,10 @@ public class GuessArena extends BaseArena {
if(buildPlot != null) {
buildPlot.resetPlot();
}
getRemovedCharsAt().clear();
removedCharsAt.clear();
setBuildPlot(null);
setCurrentTheme(null);
getWhoGuessed().clear();
whoGuessed.clear();
round += 1;
getPlayers().forEach(player -> getPlugin().getActionBarManager().clearActionBarsFromPlayer(player));
}
@@ -183,7 +182,7 @@ public class GuessArena extends BaseArena {
}
//-1 because builder can´t guess
if(whoGuessed.size() >= getPlayers().size() - 1) {
if(whoGuessed.size() >= getPlayersLeft().size() - 1) {
setTimer(getPlugin().getConfig().getInt("Time-Manager." + getArenaType().getPrefix() + ".Round-Delay"));
setArenaInGameState(ArenaInGameState.PLOT_VOTING);
@@ -23,11 +23,11 @@ package plugily.projects.buildbattle.arena.managers;
import org.bukkit.entity.Player;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.api.user.IUser;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.classic.arena.managers.PluginScoreboardManager;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.user.User;
import plugily.projects.minigamesbox.classic.utils.scoreboard.common.EntryBuilder;
import plugily.projects.minigamesbox.classic.utils.scoreboard.type.Entry;
@@ -47,31 +47,39 @@ public class ScoreboardManager extends PluginScoreboardManager {
}
@Override
public List<Entry> formatScoreboard(User user) {
public List<Entry> formatScoreboard(IUser user) {
EntryBuilder builder = new EntryBuilder();
List<String> lines;
PluginArena userArena = user.getArena();
IPluginArena userArena = user.getArena();
if(userArena.getArenaState() == ArenaState.FULL_GAME) {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content.Starting");
} else if(userArena.getArenaState() == ArenaState.IN_GAME) {
if(userArena instanceof GuessArena) {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Guess-The-Build" + (((GuessArena) userArena).getArenaInGameState() == BaseArena.ArenaInGameState.PLOT_VOTING ? "-Waiting" : ""));
} else {
if(userArena.getArenaOption("PLOT_MEMBER_SIZE") <= 1) {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Classic");
switch (userArena.getArenaState()) {
case FULL_GAME: {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content.Starting");
break;
}
case IN_GAME: {
if(userArena instanceof GuessArena) {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Guess-The-Build" + (((GuessArena) userArena).getArenaInGameState() == BaseArena.ArenaInGameState.PLOT_VOTING ? "-Waiting" : ""));
} else {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Teams");
if(userArena.getArenaOption("PLOT_MEMBER_SIZE") <= 1) {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Classic");
} else {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Teams");
}
}
break;
}
} else if(userArena.getArenaState() == ArenaState.ENDING) {
if(userArena instanceof GuessArena) {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Guess-The-Build");
} else {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Classic");
case ENDING: {
if(userArena instanceof GuessArena) {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Guess-The-Build");
} else {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName() + ".Classic");
}
break;
}
default: {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName());
}
} else {
lines = userArena.getPlugin().getLanguageManager().getLanguageList("Scoreboard.Content." + userArena.getArenaState().getFormattedName());
}
Player player = user.getPlayer();
@@ -220,7 +220,7 @@ public class Plot {
}
for(Chunk chunk : cuboid.chunkList()) {
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_15_R1)) {
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_15)) {
chunk.getWorld().refreshChunk(chunk.getX(), chunk.getZ());
continue;
}
@@ -235,7 +235,7 @@ public class Plot {
changeFloor(defaultFloor.parseMaterial());
if(centerWorld != null) {
if(ServerVersion.Version.isCurrentHigher(ServerVersion.Version.v1_15_R1)) {
if(ServerVersion.Version.isCurrentHigher(ServerVersion.Version.v1_15)) {
Location min = cuboid.getMinPoint();
Location max = cuboid.getMaxPoint();
@@ -307,7 +307,7 @@ public class Plot {
Block block = maxWorld.getBlockAt(x, y, z);
block.setType(material);
if(ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12_R1)) {
if(ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12)) {
try {
Block.class.getMethod("setData", byte.class).invoke(block, data);
} catch(Exception e) {
@@ -26,9 +26,7 @@ import org.bukkit.Material;
import org.bukkit.entity.Player;
import plugily.projects.buildbattle.api.event.plot.PlotPlayerReceiveEvent;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.classic.utils.dimensional.Cuboid;
import plugily.projects.minigamesbox.classic.utils.version.ServerVersion;
import plugily.projects.minigamesbox.classic.utils.version.VersionUtils;
import java.util.ArrayList;
@@ -121,7 +119,7 @@ public class PlotManager {
Bukkit.getScheduler().runTaskLater(arena.getPlugin(), () -> {
player.setAllowFlight(true);
player.setFlying(true);
}, 40);
}, 2);
}
});
}
@@ -27,11 +27,11 @@ import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.BuildArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.buildbattle.arena.vote.VoteItems;
import plugily.projects.minigamesbox.api.user.IUser;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.classic.arena.states.PluginInGameState;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.handlers.language.TitleBuilder;
import plugily.projects.minigamesbox.classic.user.User;
import plugily.projects.minigamesbox.classic.utils.version.VersionUtils;
import java.util.ArrayList;
@@ -52,21 +52,21 @@ public class InGameState extends PluginInGameState {
}
switch(pluginArena.getArenaInGameState()) {
case THEME_VOTING:
if(arena.getTimer() <= 0) {
if(arena.getTimer() <= 0 || pluginArena.getTheme() != null) {
// may consider start to build message...
pluginArena.setArenaInGameState(BaseArena.ArenaInGameState.BUILD_TIME);
setArenaTimer(getPlugin().getConfig().getInt("Time-Manager." + pluginArena.getArenaType().getPrefix() + ".In-Game"));
if(pluginArena.getVotePoll() != null && pluginArena.getTheme().equals("Theme")) {
if(pluginArena.getVotePoll() != null && pluginArena.getTheme() == null) {
pluginArena.setTheme(pluginArena.getVotePoll().getVotedTheme());
new MessageBuilder("IN_GAME_MESSAGES_PLOT_GTB_THEME_NAME").asKey().arena(pluginArena).sendArena();
}
for(Player player : pluginArena.getPlayers()) {
player.closeInventory();
pluginArena.addMenuItem(player);
player.setGameMode(GameMode.CREATIVE);
VersionUtils.setCollidable(player, false);
}
} else {
handleThemeVoting(pluginArena);
@@ -77,7 +77,7 @@ public class InGameState extends PluginInGameState {
handleBuildTime(pluginArena);
if(arena.getTimer() <= 0) {
for(Player player : pluginArena.getPlayersLeft()) {
User user = getPlugin().getUserManager().getUser(player);
IUser user = getPlugin().getUserManager().getUser(player);
if(user.isSpectator()) continue;
@@ -103,8 +103,8 @@ public class InGameState extends PluginInGameState {
adjustStatistics(pluginArena);
pluginArena.teleportToWinnerPlot();
pluginArena.executeEndRewards();
getPlugin().getArenaManager().stopGame(false, arena);
pluginArena.executeEndRewards();
} else {
voteForNextPlot(pluginArena);
}
@@ -139,7 +139,7 @@ public class InGameState extends PluginInGameState {
new TitleBuilder("IN_GAME_MESSAGES_PLOT_VOTING_PLOT_OWNER_TITLE").asKey().arena(pluginArena).player(player).value(formattedMembers).sendArena();
}
User user = getPlugin().getUserManager().getUser(player);
IUser user = getPlugin().getUserManager().getUser(player);
int points = user.getStatistic("LOCAL_POINTS");
//no vote made, in this case make it a good vote
@@ -161,7 +161,7 @@ public class InGameState extends PluginInGameState {
private void adjustStatistics(BuildArena pluginArena) {
for(Plot plot : pluginArena.getPlotManager().getTopPlotsOrder()) {
plot.getMembers().forEach(player -> {
User user = getPlugin().getUserManager().getUser(player);
IUser user = getPlugin().getUserManager().getUser(player);
if(plot.getPoints() > user.getStatistic("POINTS_HIGHEST")) {
user.setStatistic("POINTS_HIGHEST", plot.getPoints());
}
@@ -207,7 +207,7 @@ public class InGameState extends PluginInGameState {
if(votingPlot.getPoints() == 0) {
List<Plot> plotsVoted = new ArrayList<>();
for(Player player : pluginArena.getPlayersLeft()) {
User user = getPlugin().getUserManager().getUser(player);
IUser user = getPlugin().getUserManager().getUser(player);
Plot plot = pluginArena.getPlotFromPlayer(player);
if(!votingPlot.getMembers().contains(player)) {
if(!plotsVoted.contains(plot)) {
@@ -30,11 +30,11 @@ import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.buildbattle.handlers.themes.BBTheme;
import plugily.projects.buildbattle.handlers.themes.ThemeManager;
import plugily.projects.minigamesbox.api.user.IUser;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.classic.arena.states.PluginInGameState;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.handlers.language.TitleBuilder;
import plugily.projects.minigamesbox.classic.user.User;
import plugily.projects.minigamesbox.classic.utils.actionbar.ActionBar;
import plugily.projects.minigamesbox.classic.utils.helper.ItemBuilder;
import plugily.projects.minigamesbox.inventory.common.item.SimpleClickableItem;
@@ -71,8 +71,10 @@ public class InGameState extends PluginInGameState {
new MessageBuilder("IN_GAME_MESSAGES_PLOT_GTB_ROUND").asKey().integer(pluginArena.getRound()).arena(pluginArena).sendArena();
new TitleBuilder("IN_GAME_MESSAGES_PLOT_GTB_THEME_GUESS_TITLE").asKey().arena(pluginArena).sendArena();
Bukkit.getScheduler().runTaskLater(getPlugin(), () -> pluginArena.getCurrentBuilders().forEach(player -> player.setGameMode(GameMode.CREATIVE)), 40);
pluginArena.getCurrentBuilders().forEach(pluginArena::addMenuItem);
Bukkit.getScheduler().runTaskLater(getPlugin(), () -> pluginArena.getCurrentBuilders().forEach(player -> {
player.setGameMode(GameMode.CREATIVE);
pluginArena.getPlugin().getSpecialItemManager().getSpecialItem("OPTIONS_MENU").setItem(player);
} ), 40);
setArenaTimer(getPlugin().getConfig().getInt("Time-Manager." + pluginArena.getArenaType().getPrefix() + ".In-Game"));
pluginArena.setArenaInGameState(BaseArena.ArenaInGameState.BUILD_TIME);
@@ -109,9 +111,7 @@ public class InGameState extends PluginInGameState {
pluginArena.teleportToWinnerPlot(); //todo save built plot from winner
pluginArena.executeEndRewards();
getPlugin().getArenaManager().stopGame(false, arena);
}
//round delay
if(arena.getTimer() <= 0) {
} else if (arena.getTimer() <= 0) {
pluginArena.resetBuildPlot();
setArenaTimer(getPlugin().getConfig().getInt("Time-Manager." + pluginArena.getArenaType().getPrefix() + ".Voting.Theme"));
pluginArena.setArenaInGameState(BaseArena.ArenaInGameState.THEME_VOTING);
@@ -265,7 +265,7 @@ public class InGameState extends PluginInGameState {
private void adjustStatistics(GuessArena pluginArena) {
for(Plot plot : pluginArena.getPlotManager().getTopPlotsOrder()) {
plot.getMembers().forEach(player -> {
User user = getPlugin().getUserManager().getUser(player);
IUser user = getPlugin().getUserManager().getUser(player);
/*
//ToDo GTB stats
if(plot.getPoints() > user.getStatistic("POINTS_HIGHEST")) {
@@ -28,9 +28,9 @@ import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.BuildArena;
import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.api.user.IUser;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.user.User;
import plugily.projects.minigamesbox.classic.utils.misc.complement.ComplementAccessor;
import plugily.projects.minigamesbox.classic.utils.version.VersionUtils;
import plugily.projects.minigamesbox.classic.utils.version.events.api.PlugilyPlayerInteractEvent;
@@ -60,7 +60,7 @@ public class VoteEvents implements Listener {
}
BaseArena arena = plugin.getArenaRegistry().getArena(event.getPlayer());
if(arena == null || arena.getArenaState() != ArenaState.IN_GAME || arena instanceof GuessArena) {
if(arena == null || arena.getArenaState() != IArenaState.IN_GAME || arena instanceof GuessArena) {
return;
}
@@ -72,7 +72,7 @@ public class VoteEvents implements Listener {
Plot plot = solo.getVotingPlot();
if(plugin.getVoteItems().getReportItem().equals(event.getItem())) {
User user = plugin.getUserManager().getUser(event.getPlayer());
IUser user = plugin.getUserManager().getUser(event.getPlayer());
user.adjustStatistic("REPORTS_TRIGGERED", 1);
@@ -21,6 +21,7 @@
package plugily.projects.buildbattle.boot;
import plugily.projects.buildbattle.Main;
import plugily.projects.minigamesbox.api.preferences.IConfigPreferences;
import plugily.projects.minigamesbox.classic.api.StatisticType;
import plugily.projects.minigamesbox.classic.api.StatsStorage;
import plugily.projects.minigamesbox.classic.arena.options.ArenaOption;
@@ -31,7 +32,6 @@ import plugily.projects.minigamesbox.classic.handlers.permissions.PermissionsMan
import plugily.projects.minigamesbox.classic.handlers.reward.RewardType;
import plugily.projects.minigamesbox.classic.handlers.reward.RewardsFactory;
import plugily.projects.minigamesbox.classic.preferences.ConfigOption;
import plugily.projects.minigamesbox.classic.preferences.ConfigPreferences;
/**
* @author Tigerpanzer_02
@@ -53,13 +53,14 @@ public class AdditionalValueInitializer {
}
private void registerConfigOptions() {
ConfigPreferences configPreferences = plugin.getConfigPreferences();
IConfigPreferences configPreferences = plugin.getConfigPreferences();
configPreferences.registerOption("MOB_SPAWN", new ConfigOption("Mob.Spawn", false));
configPreferences.registerOption("HEAD_MENU_CUSTOM", new ConfigOption("Head-Menu.Custom", false));
configPreferences.registerOption("REPORT_COMMANDS", new ConfigOption("Report.Commands", false));
configPreferences.registerOption("PLOT_HIDE_OWNER", new ConfigOption("Plot.Hide-Owner", false));
configPreferences.registerOption("PLOT_MOVE_OUTSIDE", new ConfigOption("Plot.Move-Outside", false));
configPreferences.registerOption("SUPER_VOTES", new ConfigOption("Super-Votes", true));
}
private void registerStatistics() {
@@ -92,7 +93,7 @@ public class AdditionalValueInitializer {
rewardsFactory.registerRewardType("VOTE", new RewardType("voted"));
rewardsFactory.registerRewardType("VOTE_ALL", new RewardType("voted-all"));
rewardsFactory.registerRewardType("REPORT", new RewardType("report"));
rewardsFactory.registerRewardType("PLACE", new RewardType("place"));
rewardsFactory.registerRewardType("PLACE", new RewardType("place", RewardType.ExecutorType.NUMBER, false));
}
private void registerSpecialItems() {
@@ -29,8 +29,8 @@ import plugily.projects.buildbattle.arena.BuildArena;
import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.buildbattle.handlers.themes.BBTheme;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.handlers.placeholder.Placeholder;
import plugily.projects.minigamesbox.classic.handlers.placeholder.PlaceholderManager;
@@ -58,30 +58,30 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("theme", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getTheme(player, arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getTheme(arena);
}
@Nullable
private String getTheme(PluginArena arena) {
private String getTheme(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
}
String theme = pluginArena.getTheme();
if(theme.equalsIgnoreCase("theme")) {
if(theme == null) {
theme = new MessageBuilder("SCOREBOARD_THEME_UNKNOWN").asKey().build();
}
return theme;
}
@Nullable
private String getTheme(Player player, PluginArena arena) {
private String getTheme(Player player, IPluginArena arena) {
String theme = getTheme(arena);
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
@@ -102,17 +102,17 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("difficulty", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getTheme(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getTheme(arena);
}
@Nullable
private String getTheme(PluginArena arena) {
private String getTheme(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena instanceof GuessArena) {
BBTheme theme = ((GuessArena) pluginArena).getCurrentBBTheme();
@@ -127,17 +127,17 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("difficulty_points_reward", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getTheme(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getTheme(arena);
}
@Nullable
private String getTheme(PluginArena arena) {
private String getTheme(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena instanceof GuessArena) {
BBTheme theme = ((GuessArena) pluginArena).getCurrentBBTheme();
@@ -152,17 +152,17 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("builder", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getBuilder(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getBuilder(arena);
}
@Nullable
private String getBuilder(PluginArena arena) {
private String getBuilder(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(!(pluginArena instanceof GuessArena)) {
return null;
@@ -176,17 +176,17 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("type", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getType(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getType(arena);
}
@Nullable
private String getType(PluginArena arena) {
private String getType(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -196,17 +196,17 @@ public class PlaceholderInitializer {
});
placeholderManager.registerPlaceholder(new Placeholder("type_pretty", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getType(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getType(arena);
}
@Nullable
private String getType(PluginArena arena) {
private String getType(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -218,22 +218,22 @@ public class PlaceholderInitializer {
final int number = i;
placeholderManager.registerPlaceholder(new Placeholder("place_member_" + number, Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getPlace(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getPlace(arena);
}
@Nullable
private String getPlace(PluginArena arena) {
private String getPlace(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
}
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != ArenaState.ENDING) {
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != IArenaState.ENDING) {
return "???";
}
List<Plot> plotRanking = pluginArena.getPlotManager().getTopPlotsOrder();
@@ -249,22 +249,22 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("place_points_" + number, Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getPlace(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getPlace(arena);
}
@Nullable
private String getPlace(PluginArena arena) {
private String getPlace(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
}
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != ArenaState.ENDING) {
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != IArenaState.ENDING) {
return "???";
}
List<Plot> plotRanking = pluginArena.getPlotManager().getTopPlotsOrder();
@@ -277,17 +277,17 @@ public class PlaceholderInitializer {
}
placeholderManager.registerPlaceholder(new Placeholder("ingame_state", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getState(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getState(arena);
}
@Nullable
private String getState(PluginArena arena) {
private String getState(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -301,17 +301,17 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("ingame_state_pretty", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getState(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getState(arena);
}
@Nullable
private String getState(PluginArena arena) {
private String getState(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -326,12 +326,12 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("teammates", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getMembers(player, arena);
}
@Nullable
private String getMembers(Player player, PluginArena arena) {
private String getMembers(Player player, IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -355,12 +355,12 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("summary_player", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getSummary(arena, player);
}
@Nullable
private String getSummary(PluginArena arena, Player player) {
private String getSummary(IPluginArena arena, Player player) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -375,17 +375,17 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("summary_place_own", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getSummary(arena, player);
}
@Nullable
private String getSummary(PluginArena arena, Player player) {
private String getSummary(IPluginArena arena, Player player) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
}
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != ArenaState.ENDING) {
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != IArenaState.ENDING) {
return null;
}
List<Plot> plotRanking = pluginArena.getPlotManager().getTopPlotsOrder();
@@ -404,17 +404,17 @@ public class PlaceholderInitializer {
placeholderManager.registerPlaceholder(new Placeholder("summary", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getSummary(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getSummary(arena);
}
@Nullable
private String getSummary(PluginArena arena) {
private String getSummary(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -428,22 +428,22 @@ public class PlaceholderInitializer {
});
placeholderManager.registerPlaceholder(new Placeholder("summary_place_list", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getSummary(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getSummary(arena);
}
@Nullable
private String getSummary(PluginArena arena) {
private String getSummary(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
}
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != ArenaState.ENDING) {
if(pluginArena.getArenaInGameState() != BaseArena.ArenaInGameState.PLOT_VOTING && pluginArena.getArenaState() != IArenaState.ENDING) {
return null;
}
int places = pluginArena.getPlotManager().getTopPlotsOrder().size();
@@ -460,17 +460,17 @@ public class PlaceholderInitializer {
});
placeholderManager.registerPlaceholder(new Placeholder("gtb_rounds", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player, PluginArena arena) {
public String getValue(Player player, IPluginArena arena) {
return getSummary(arena);
}
@Override
public String getValue(PluginArena arena) {
public String getValue(IPluginArena arena) {
return getSummary(arena);
}
@Nullable
private String getSummary(PluginArena arena) {
private String getSummary(IPluginArena arena) {
BaseArena pluginArena = arenaRegistry.getArena(arena.getId());
if(pluginArena == null) {
return null;
@@ -30,7 +30,8 @@ import plugily.projects.buildbattle.commands.arguments.admin.plot.AddPlotArgumen
import plugily.projects.buildbattle.commands.arguments.admin.plot.RemovePlotArgument;
import plugily.projects.buildbattle.commands.arguments.admin.plot.SelectPlotArgument;
import plugily.projects.buildbattle.commands.arguments.game.GuessArgument;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.buildbattle.commands.arguments.game.MenuArgument;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.classic.commands.arguments.PluginArgumentsRegistry;
import java.util.List;
@@ -50,12 +51,13 @@ public class ArgumentsRegistry extends PluginArgumentsRegistry {
new AddPlotArgument(this);
new RemovePlotArgument(this);
new SelectPlotArgument(this);
new MenuArgument(this);
new GuessArgument(this);
new ThemeArgument(this);
}
@Override
public List<PluginArena> getSpecificFilteredArenas(List<PluginArena> arenas, String filter) {
public List<IPluginArena> getSpecificFilteredArenas(List<IPluginArena> arenas, String filter) {
switch(filter.toLowerCase(Locale.ENGLISH)) {
case "gtb":
case "guessthebuild":
@@ -25,11 +25,14 @@ import org.bukkit.entity.Player;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.BuildArena;
import plugily.projects.buildbattle.commands.arguments.ArgumentsRegistry;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.classic.commands.arguments.data.CommandArgument;
import plugily.projects.minigamesbox.classic.commands.arguments.data.LabelData;
import plugily.projects.minigamesbox.classic.commands.arguments.data.LabeledCommandArgument;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import java.util.StringJoiner;
/**
* @author Plajer
* <p>
@@ -58,15 +61,16 @@ public class SetThemeArgument {
new MessageBuilder("&cPlease type arena theme!").prefix().send(sender);
return;
}
if(arena.getArenaInGameState() == BaseArena.ArenaInGameState.THEME_VOTING) {
String themeName = args[1];
if(arena.getPlugin().getThemeManager().isThemeBlacklisted(themeName)) {
StringJoiner themeName = new StringJoiner(" ");
for(int i = 1; i < args.length; i++)
themeName.add(args[i]);
if(arena.getArenaInGameState() == BaseArena.ArenaInGameState.BUILD_TIME || arena.getArenaState() == IArenaState.STARTING) {
if(arena.getPlugin().getThemeManager().isThemeBlacklisted(themeName.toString())) {
new MessageBuilder("COMMANDS_THEME_BLACKLISTED").asKey().prefix().send(sender);
return;
}
arena.setTheme(themeName);
new MessageBuilder("IN_GAME_MESSAGES_ADMIN_CHANGED_THEME").asKey().prefix().value(themeName).arena(arena).sendArena();
arena.setTheme(themeName.toString());
new MessageBuilder("IN_GAME_MESSAGES_ADMIN_CHANGED_THEME").asKey().prefix().value(themeName.toString()).arena(arena).sendArena();
} else {
new MessageBuilder("&cWrong state to force theme!").prefix().send(sender);
}
@@ -24,7 +24,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.commands.arguments.ArgumentsRegistry;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.classic.commands.arguments.data.CommandArgument;
/**
@@ -41,7 +41,7 @@ public class SelectPlotArgument {
Player player = (Player) sender;
BaseArena arena = (BaseArena) registry.getPlugin().getArenaRegistry().getArena(player);
if(arena != null && (arena.getArenaState() == ArenaState.WAITING_FOR_PLAYERS || arena.getArenaState() == ArenaState.STARTING))
if(arena != null && (arena.getArenaState() == IArenaState.WAITING_FOR_PLAYERS || arena.getArenaState() == IArenaState.STARTING))
arena.getPlugin().getPlotMenuHandler().createMenu(player, arena);
}
});
@@ -25,7 +25,7 @@ import org.bukkit.entity.Player;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.GuessArena;
import plugily.projects.buildbattle.commands.arguments.ArgumentsRegistry;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.classic.commands.arguments.data.CommandArgument;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
@@ -50,13 +50,18 @@ public class GuessArgument {
Player player = (Player) sender;
BaseArena arena = (BaseArena) registry.getPlugin().getArenaRegistry().getArena(player);
if(!(arena instanceof GuessArena) || arena.getArenaState() != ArenaState.IN_GAME) {
if(!(arena instanceof GuessArena) || arena.getArenaState() != IArenaState.IN_GAME) {
new MessageBuilder("COMMANDS_NOT_PLAYING").asKey().player(player).sendPlayer();
return;
}
GuessArena gameArena = (GuessArena) arena;
if(gameArena.getArenaInGameState() != BaseArena.ArenaInGameState.BUILD_TIME) {
new MessageBuilder("COMMANDS_NOT_PLAYING").asKey().player(player).sendPlayer();
return;
}
if(gameArena.getWhoGuessed().contains(player)) {
new MessageBuilder("IN_GAME_MESSAGES_PLOT_GTB_THEME_GUESS_CANT_TALK").asKey().arena(gameArena).player(player).sendPlayer();
return;
@@ -0,0 +1,50 @@
/*
*
* BuildBattle - Ultimate building competition minigame
* Copyright (C) 2022 Plugily Projects - maintained by Tigerpanzer_02 and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package plugily.projects.buildbattle.commands.arguments.game;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.commands.arguments.ArgumentsRegistry;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.classic.commands.arguments.data.CommandArgument;
/**
* @author Tigerpanzer_02
* <p>
* Created at 27.12.2020
*/
public class MenuArgument {
public MenuArgument(ArgumentsRegistry registry) {
registry.mapArgument("buildbattle", new CommandArgument("menu", "", CommandArgument.ExecutorType.PLAYER) {
@Override
public void execute(CommandSender sender, String[] args) {
Player player = (Player) sender;
BaseArena arena = (BaseArena) registry.getPlugin().getArenaRegistry().getArena(player);
if(arena != null && (arena.getArenaState() == IArenaState.IN_GAME))
arena.getPlugin().getOptionsRegistry().getOptionsGui().open(player);
}
});
}
}
@@ -33,6 +33,8 @@ import plugily.projects.buildbattle.handlers.menu.MenuOption;
import plugily.projects.buildbattle.handlers.menu.OptionsRegistry;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.utils.helper.ItemBuilder;
import plugily.projects.minigamesbox.classic.utils.version.ServerVersion;
import plugily.projects.minigamesbox.classic.utils.version.xseries.XEntityType;
import plugily.projects.minigamesbox.classic.utils.version.xseries.XMaterial;
/**
@@ -88,8 +90,9 @@ public class FloorChangeOption {
event.getCurrentItem().setType(Material.AIR);
player.closeInventory();
player.getNearbyEntities(5, 5, 5).stream().filter(entity -> entity.getType() == EntityType.DROPPED_ITEM)
.forEach(Entity::remove);
player.getNearbyEntities(5, 5, 5).stream().filter(entity -> entity.getType() == XEntityType.ITEM.get())
.forEach(Entity::remove);
}
});
}
@@ -67,8 +67,9 @@ public class TimeChangeOption {
return;
}
gui.addItem(new ItemBuilder(XMaterial.CLOCK.parseItem()).name(new MessageBuilder("MENU_OPTION_CONTENT_TIME_TYPE_WORLD").asKey().build()).lore(plot.getTime().name()).build());
//gui.addItem(new ItemBuilder(XMaterial.CLOCK.parseItem()).name(new MessageBuilder("MENU_OPTION_CONTENT_TIME_TYPE_WORLD").asKey().build()).lore(plot.getTime().name()).build());
addClockItem(gui, plot, "MENU_OPTION_CONTENT_TIME_TYPE_WORLD");
addClockItem(gui, plot, "MENU_OPTION_CONTENT_TIME_TYPE_DAY");
addClockItem(gui, plot, "MENU_OPTION_CONTENT_TIME_TYPE_NOON");
addClockItem(gui, plot, "MENU_OPTION_CONTENT_TIME_TYPE_SUNSET");
@@ -21,10 +21,12 @@
package plugily.projects.buildbattle.handlers.menu.registry.banner;
import org.bukkit.DyeColor;
import org.bukkit.block.BlockState;
import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BannerMeta;
import org.bukkit.inventory.meta.BlockStateMeta;
import plugily.projects.minigamesbox.classic.utils.version.ServerVersion;
import plugily.projects.minigamesbox.classic.utils.version.xseries.XMaterial;
@@ -66,8 +68,14 @@ public class Banner {
ItemStack item = XMaterial.WHITE_BANNER.parseItem();
BannerMeta meta = (BannerMeta) item.getItemMeta();
if(ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12_R1)) {
meta.setBaseColor(color);
if(ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12)) {
BlockStateMeta bsm = (BlockStateMeta) meta;
BlockState state = ((BlockStateMeta) meta).getBlockState();
if (state instanceof org.bukkit.block.Banner) {
((org.bukkit.block.Banner) state).setBaseColor(color);
state.update(true);
}
bsm.setBlockState(state);
}
for(BannerPattern pattern : patterns) {
@@ -21,11 +21,13 @@
package plugily.projects.buildbattle.handlers.menu.registry.banner;
import org.bukkit.DyeColor;
import org.bukkit.block.BlockState;
import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BannerMeta;
import org.bukkit.inventory.meta.BlockStateMeta;
import org.bukkit.plugin.java.JavaPlugin;
import plugily.projects.buildbattle.Main;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
@@ -69,11 +71,17 @@ public class BannerMenu {
for(DyeColor color : DyeColor.values()) {
ItemStack item;
if(ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12_R1)) {
if(ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_12)) {
item = XMaterial.WHITE_BANNER.parseItem();
BannerMeta meta = (BannerMeta) item.getItemMeta();
meta.setBaseColor(color);
BlockStateMeta bsm = (BlockStateMeta) meta;
BlockState state = ((BlockStateMeta) meta).getBlockState();
if (state instanceof org.bukkit.block.Banner) {
((org.bukkit.block.Banner) state).setBaseColor(color);
state.update(true);
}
bsm.setBlockState(state);
item.setItemMeta(meta);
} else {
item = XMaterial.matchXMaterial(color.toString() + "_BANNER").orElse(XMaterial.WHITE_BANNER).parseItem();
@@ -88,7 +88,7 @@ public class BiomeChangeOption {
}
for(Chunk chunk : plot.getCuboid().chunkList()) {
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_15_R1)) {
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_15)) {
chunk.getWorld().refreshChunk(chunk.getX(), chunk.getZ());
continue;
}
@@ -64,7 +64,7 @@ public class BiomesRegistry {
.getString(biome + ".material-name", "bedrock").toUpperCase()).orElse(XMaterial.BEDROCK).parseItem())
.name(new MessageBuilder(config.getString(biome + ".displayname")).build())
.lore(lore)
.build(), config.getString(biome + ".permission"), XBiome.matchXBiome(biome).orElse(XBiome.BADLANDS));
.build(), config.getString(biome + ".permission"), XBiome.of(biome).orElse(XBiome.BADLANDS));
biomes.add(biomeItem);
i++;
}
@@ -25,6 +25,7 @@ import org.bukkit.Location;
import org.bukkit.scheduler.BukkitTask;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.managers.plots.Plot;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.classic.PluginMain;
import plugily.projects.minigamesbox.classic.arena.PluginArena;
import plugily.projects.minigamesbox.classic.utils.version.VersionUtils;
@@ -55,7 +56,7 @@ public class ParticleRefreshScheduler {
final int particleAmount = amountParticle;
task = Bukkit.getScheduler().runTaskTimer(plugin, () -> {
for(PluginArena arena : plugin.getArenaRegistry().getArenas()) {
for(IPluginArena arena : plugin.getArenaRegistry().getArenas()) {
if(arena instanceof BaseArena && !arena.getPlayers().isEmpty()) {
for(Plot buildPlot : ((BaseArena) arena).getPlotManager().getPlots()) {
if(!buildPlot.getMembers().isEmpty()) {
@@ -27,7 +27,7 @@ import plugily.projects.buildbattle.handlers.menu.MenuOption;
import plugily.projects.buildbattle.handlers.menu.OptionsRegistry;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.utils.helper.ItemBuilder;
import plugily.projects.minigamesbox.classic.utils.helper.ItemUtils;
import plugily.projects.minigamesbox.classic.utils.version.xseries.XMaterial;
import plugily.projects.minigamesbox.inventory.common.item.SimpleClickableItem;
import plugily.projects.minigamesbox.inventory.normal.NormalFastInv;
@@ -39,7 +39,7 @@ import plugily.projects.minigamesbox.inventory.normal.NormalFastInv;
public class PlayerHeadsOption {
public PlayerHeadsOption(OptionsRegistry registry) {
registry.registerOption(new MenuOption(10, "PLAYER_HEADS", new ItemBuilder(ItemUtils.PLAYER_HEAD_ITEM.clone())
registry.registerOption(new MenuOption(10, "PLAYER_HEADS", new ItemBuilder(XMaterial.PLAYER_HEAD.parseItem())
.name(new MessageBuilder("MENU_OPTION_CONTENT_HEADS_ITEM_NAME").asKey().build())
.lore(new MessageBuilder("MENU_OPTION_CONTENT_HEADS_ITEM_LORE").asKey().build())
.build(), new MessageBuilder("MENU_OPTION_CONTENT_HEADS_INVENTORY").asKey().build()) {
@@ -37,26 +37,20 @@ public class ChunkManager {
private static Class<?> packetPlayOutMapChunk, chunkClass;
private static Constructor<?> mapChunkConstructor;
private static Method chunkHandleMethod;
static {
if(ServerVersion.Version.isCurrentLower(ServerVersion.Version.v1_18_R1)) {
if (ServerVersion.Version.isCurrentLower(ServerVersion.Version.v1_18)) {
packetPlayOutMapChunk = PacketUtils.classByName("net.minecraft.network.protocol.game", "PacketPlayOutMapChunk");
chunkClass = PacketUtils.classByName("net.minecraft.world.level.chunk", "Chunk");
try {
chunkHandleMethod = Chunk.class.getMethod("getHandle");
} catch(NoSuchMethodException exc) {
}
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_17_R1)) {
if (ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_17)) {
try {
mapChunkConstructor = packetPlayOutMapChunk.getConstructor(PacketUtils.classByName("net.minecraft.world.level.chunk", "LevelChunk"));
} catch(NoSuchMethodException e) {
} catch (NoSuchMethodException e) {
try {
mapChunkConstructor = packetPlayOutMapChunk.getConstructor(chunkClass);
} catch(NoSuchMethodException ex) {
ex.printStackTrace();
} catch (NoSuchMethodException ex) {
throw new RuntimeException(ex);
}
}
}
@@ -64,38 +58,39 @@ public class ChunkManager {
}
public static void sendMapChunk(Player player, Chunk chunk) {
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_18_R1)) {
if (ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_18)) {
return; // Should just use World#refreshChunk instead
}
try {
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_17_R1)) {
Method chunkHandleMethod = chunk.getClass().getMethod("getHandle");
if (ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_17)) {
PacketUtils.sendPacket(player, mapChunkConstructor.newInstance(chunkHandleMethod.invoke(chunk)));
return;
}
if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_16_R1)) {
if(mapChunkConstructor == null)
if (ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_16)) {
if (mapChunkConstructor == null)
mapChunkConstructor = packetPlayOutMapChunk.getConstructor(chunkClass, int.class, boolean.class);
PacketUtils.sendPacket(player, mapChunkConstructor.newInstance(chunkHandleMethod.invoke(chunk), 65535, false));
return;
}
if(ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_10_R2)) {
if(mapChunkConstructor == null)
if (ServerVersion.Version.isCurrentEqualOrLower(ServerVersion.Version.v1_10)) {
if (mapChunkConstructor == null)
mapChunkConstructor = packetPlayOutMapChunk.getConstructor(chunkClass, boolean.class, int.class);
PacketUtils.sendPacket(player, mapChunkConstructor.newInstance(chunkHandleMethod.invoke(chunk), true, 65535));
return;
}
if(mapChunkConstructor == null)
if (mapChunkConstructor == null)
mapChunkConstructor = packetPlayOutMapChunk.getConstructor(chunkClass, int.class);
PacketUtils.sendPacket(player, mapChunkConstructor.newInstance(chunkHandleMethod.invoke(chunk), 65535));
} catch(ReflectiveOperationException exception) {
exception.printStackTrace();
} catch (ReflectiveOperationException exception) {
throw new RuntimeException(exception);
}
}
@@ -33,21 +33,16 @@ import plugily.projects.buildbattle.Main;
import plugily.projects.buildbattle.arena.BaseArena;
import plugily.projects.buildbattle.arena.BuildArena;
import plugily.projects.buildbattle.handlers.themes.ThemeManager;
import plugily.projects.minigamesbox.classic.arena.ArenaState;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.api.user.IUser;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.user.User;
import plugily.projects.minigamesbox.classic.utils.helper.ItemBuilder;
import plugily.projects.minigamesbox.classic.utils.version.xseries.XMaterial;
import plugily.projects.minigamesbox.inventory.common.item.ClickableItem;
import plugily.projects.minigamesbox.inventory.common.item.SimpleClickableItem;
import plugily.projects.minigamesbox.inventory.normal.NormalFastInv;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Consumer;
/**
@@ -102,7 +97,7 @@ public class VoteMenu {
NormalFastInv gui = new NormalFastInv(9 * themeSelection.size(), new MessageBuilder("MENU_THEME_INVENTORY").asKey().build());
gui.addCloseHandler(event -> {
if(arena.getArenaState() == ArenaState.IN_GAME && arena.getArenaInGameState() == BaseArena.ArenaInGameState.THEME_VOTING) {
if(arena.getArenaState() == IArenaState.IN_GAME && arena.getArenaInGameState() == BaseArena.ArenaInGameState.THEME_VOTING) {
plugin.getServer().getScheduler().runTask(plugin, () -> {
HumanEntity humanEntity = event.getPlayer();
Inventory inventory = event.getInventory();
@@ -130,25 +125,30 @@ public class VoteMenu {
setGlassPanes(gui, multiplied, percent);
gui.setItem(multiplied + 8, new SimpleClickableItem(new ItemBuilder(new ItemStack(Material.PAPER))
.name(new MessageBuilder("MENU_THEME_VOTE_SUPER_ITEM_NAME").asKey().arena(arena).value(theme).build())
.lore(new MessageBuilder("MENU_THEME_VOTE_SUPER_ITEM_LORE").asKey().player(guiPlayer).arena(arena).value(theme).build().split(";"))
.build(), event -> {
HumanEntity humanEntity = event.getWhoClicked();
if (plugin.getConfigPreferences().getOption("SUPER_VOTES")) {
gui.setItem(multiplied + 8, new SimpleClickableItem(new ItemBuilder(new ItemStack(Material.PAPER))
.name(new MessageBuilder("MENU_THEME_VOTE_SUPER_ITEM_NAME").asKey().arena(arena).value(theme).build())
.lore(new MessageBuilder("MENU_THEME_VOTE_SUPER_ITEM_LORE").asKey().player(guiPlayer).arena(arena).value(theme).build().split(";"))
.build(), event -> {
HumanEntity humanEntity = event.getWhoClicked();
if(!(humanEntity instanceof Player))
return;
if(!(humanEntity instanceof Player))
return;
Player player = (Player) humanEntity;
User user = plugin.getUserManager().getUser(player);
Player player = (Player) humanEntity;
IUser user = plugin.getUserManager().getUser(player);
if(user.getStatistic("SUPER_VOTES") > 0) {
user.adjustStatistic("SUPER_VOTES", -1);
new MessageBuilder("MENU_THEME_VOTE_SUPER_USED").asKey().arena(arena).player(player).value(theme).sendArena();
arena.setTheme(theme);
arena.setTimer(0, true);
}
}));
if(user.getStatistic("SUPER_VOTES") > 0) {
user.adjustStatistic("SUPER_VOTES", -1);
new MessageBuilder("MENU_THEME_VOTE_SUPER_USED").asKey().arena(arena).player(player).value(theme).sendArena();
arena.setTheme(theme);
arena.setTimer(0, true);
}
}));
}
else {
gui.setItem(multiplied + 8, ClickableItem.of(new ItemBuilder(XMaterial.IRON_BARS.parseItem()).name("&7<-").colorizeItem().build()));
}
i++;
}
@@ -183,7 +183,7 @@ public class VoteMenu {
ItemBuilder itemBuilder = new ItemBuilder(clickableSignItem.getItem()).removeLore();
itemBuilder.lore(new MessageBuilder("MENU_THEME_ITEM_LORE").asKey().arena(arena).value(theme).integer((int) percent).build().split(";"));
if(theme.equals(playerVote)) {
itemBuilder.enchantment(Enchantment.DAMAGE_ALL, 1).flags(ItemFlag.HIDE_ENCHANTS);
itemBuilder.enchantment(Enchantment.UNBREAKING, 1).flags(ItemFlag.HIDE_ENCHANTS);
} else {
itemBuilder.removeEnchants().removeFlags();
}
@@ -215,10 +215,10 @@ public class VoteMenu {
int slot = multiplied + 2 + j;
if(vote > percent) {
gui.setItem(slot, ClickableItem.of(new ItemBuilder(XMaterial.RED_STAINED_GLASS_PANE.parseItem()).name("").build()));
gui.setItem(slot, ClickableItem.of(new ItemBuilder(XMaterial.RED_STAINED_GLASS_PANE.parseItem()).name("???").build()));
continue;
}
gui.setItem(slot, ClickableItem.of(new ItemBuilder(XMaterial.LIME_STAINED_GLASS_PANE.parseItem()).name("").build()));
gui.setItem(slot, ClickableItem.of(new ItemBuilder(XMaterial.LIME_STAINED_GLASS_PANE.parseItem()).name("???").build()));
vote += 16.7;
}
}
+22 -14
View File
@@ -49,14 +49,10 @@ Commands:
Executes: "buildbattle leave"
Enabled: true
'3':
Short: "kit"
Executes: "buildbattle selectkit"
Enabled: false
'4':
Short: "stats"
Executes: "buildbattle stats"
Enabled: false
'5':
'4':
Short: "top"
Executes: "buildbattle top"
Enabled: true
@@ -71,6 +67,15 @@ Block:
Leave: false
# Cancels Item Movement into player crafting, enchantment tables, anvils ...
Item-Move: true
ArmorStand:
# Should we block armor stand destroy with double click?
Destroy: true
# Should we block armor stand interaction?
Interact: true
# Should these only be blocked while ingame and arena state is in_game? (e.g. Lobby and Ending is blocked)
# Setting it to false means on all stages of the game the event will be cancelled.
# Setting it to true means only while IN_GAME the event will be cancelled.
Check: true
# Enable this option when you're using MySQL, otherwise it won't work.
@@ -82,16 +87,18 @@ Database: false
# Should we enable in game rewards? See rewards.yml for more...
# You should also check out our script engine tutorial for rewards! https://tutorial.plugily.xyz
Rewards: true
Rewards: false
# Enable in game (eg. '[KIT][LEVEL] Tigerpanzer_02: hey') special formatting?
# Formatting is configurable in old_language.yml
# You can use PlaceholderAPI placeholders in chat format!
Plugin-Chat-Format: true
# Enable the super votes in the theme vote menu
Super-Votes: true
Chat:
# Enable in game (eg. '[KIT][LEVEL] Tigerpanzer_02: hey') special formatting?
# Formatting is configurable in language.yml
# You can use PlaceholderAPI placeholders in chat format!
Format: true
Separate:
# Should we enable a separate arena chat for players inside a arena
# Useful on multi arena servers that don't want the same chat for all players on the server
@@ -142,7 +149,8 @@ Damage:
Drowning: false
# Should players get fire damage?
Fire: false
# Should players lose food ingame & get damage?
Hunger: false
Cycle:
# Should we make permanent clear weather on all worlds where our arenas are?
@@ -192,8 +200,8 @@ Time-Manager:
Mob:
# Should mob spawning on arenas be enabled?
Spawn: false
# Should mob spawning on arenas be enabled? (Contains Armour Stands)
Spawn: true
# The list of restricted entities that can't be spawned in game
Restricted:
- wither
@@ -275,4 +283,4 @@ Update-Notifier:
# You edited it, huh? Next time hurt yourself!
Do-Not-Edit:
File-Version: 1
Core-Version: 2
Core-Version: 5
+3 -3
View File
@@ -231,7 +231,7 @@ In-Game:
# Join cancelled via external plugin that uses the API of our plugin.
Cancelled-Via-API: "%color_chat_issue%%plugin_prefix% You can't join this game!"
As-Party-Member: "%color_chat_issue%%plugin_prefix% You joined %arena_name% because the party leader joined it!"
Arena-Not-Configured: "%color_chat_issue%%plugin_prefix% BaseArena is not configured yet! Contact staff!"
Arena-Not-Configured: "%color_chat_issue%%plugin_prefix% BaseArena is not configured yet! Contact your server's staff!"
Title: "20,30,20;%arena_name%;%arena_players_size%/%arena_max_players%"
Death:
Tag: "&8Dead"
@@ -393,7 +393,7 @@ Menu:
Noon: "Noon (6000 ticks)"
Sunset: "Sunset (12000 ticks)"
Night: "Night (13000 ticks)"
MidNight: "MidNight (18000 ticks)"
MidNight: "Midnight (18000 ticks)"
Sunrise: "Sunrise (23000 ticks)"
Changed: "%plugin_prefix% Time has been changed to %value%"
Biome:
@@ -572,4 +572,4 @@ Leaderboard:
# You edited it, huh? Next time hurt yourself!
Do-Not-Edit:
File-Version: 1
Core-Version: 1
Core-Version: 2
@@ -228,7 +228,7 @@ In-Game:
# Join cancelled via external plugin that uses the API of our plugin.
Cancelled-Via-API: "%color_chat_issue%%plugin_prefix% You can't join this game!"
As-Party-Member: "%color_chat_issue%%plugin_prefix% You joined %arena_name% because the party leader joined it!"
Arena-Not-Configured: "%color_chat_issue%%plugin_prefix% BaseArena is not configured yet! Contact staff!"
Arena-Not-Configured: "%color_chat_issue%%plugin_prefix% BaseArena is not configured yet! Contact your server's staff!"
Title: "20,30,20;%arena_name%;%arena_players_size%/%arena_max_players%"
Death:
Tag: "&8Dead"
+2 -2
View File
@@ -8,11 +8,11 @@ api-version: 1.13
commands:
buildbattle:
description: BuildBattle Commands
usage: "\u00A76Correct usage: /bb [option]"
usage: "§6Correct usage: /bb [option]"
aliases: [ bb, buildb ]
buildbattleadmin:
description: BuildBattle Admin Commands
usage: "\u00A76Correct usage: /bba [option]"
usage: "§6Correct usage: /bba [option]"
aliases: [ bba, buildbadmin ]
permissions:
+20 -20
View File
@@ -2,7 +2,7 @@
# BuildBattle rewards configuration
#
# Placeholders list:
# %PLAYER% - Current player name
# %player% - Current player name
# %MAPNAME% - Name of map
# %ARENA-ID% - BaseArena Identifier
# %PLACE% - Player Place (Working on category place)
@@ -17,11 +17,11 @@
# - chance(1):p:say I was very lucky! # Player has 1% chance to say "I was very lucky!"
# - p:chance(99):spawn # Player has 99% chance to teleport to spawn
# ^ YOU CAN EVEN SWAP CHANCE WITH PLAYER!
# - chance(50):eco give %PLAYER% 10 # Console has 10% chance to give player 10$
# - chance(50):eco give %player% 10 # Console has 10% chance to give player 10$
#
# You can unlock full potential of rewards using our script engine! (since 4.0.0)
# Just add example reward:
# - script:player.sendMessage("oh, hi %PLAYER%"); # It will send "oh, hi <player name>" to player! 100% plain java!
# - script:player.sendMessage("oh, hi %player%"); # It will send "oh, hi <player name>" to player! 100% plain java!
# - script:server.broadcastMessage("hello everyone"); # Broadcasts "hello everyone" to whole server
# - script:player.getInventory().addItem(new org.bukkit.inventory.ItemStack(org.bukkit.Material.DIRT));
# ^ Gives player dirt item (you must always use direct package names for not provided objects)
@@ -50,40 +50,40 @@ rewards:
# Commands performed when all themes are guessed in GTB
# Delete everything if you don't want to use this section
guess:
- eco give %PLAYER% 2
- eco give %player% 2
guess-all:
- eco give %PLAYER% 2
- eco give %player% 2
# Commands executed when someone vote
vote:
- eco give %PLAYER% 2
- chance(10):eco give %PLAYER% 8
- eco give %player% 2
- chance(10):eco give %player% 8
# Commands executed when all voted for a plot
vote-all:
- eco give %PLAYER% 2
- chance(10):eco give %PLAYER% 8
- eco give %player% 2
- chance(10):eco give %player% 8
# Commands executed when someone report a building
report:
- eco give %PLAYER% 2
- eco give %player% 2
- script:player.sendMessage("You reported the building");
# Commands executed on place X
place:
1:
- eco give %PLAYER% 10
- eco give %player% 10
2:
- eco give %PLAYER% 9
- eco give %player% 9
3:
- eco give %PLAYER% 8
- eco give %player% 8
4:
- eco give %PLAYER% 7
- eco give %player% 7
5:
- eco give %PLAYER% 6
- eco give %player% 6
6:
- eco give %PLAYER% 5
- eco give %player% 5
7:
- eco give %PLAYER% 4
- eco give %player% 4
8:
- eco give %PLAYER% 3
- eco give %player% 3
9:
- eco give %PLAYER% 2
- eco give %player% 2
10:
- eco give %PLAYER% 1
- eco give %player% 1
+1 -1
View File
@@ -121,7 +121,7 @@ Back-To-Hub:
Options-Menu:
permission: ""
execute:
- ""
- "p:bb menu"
displayname: "&a&lOptions menu &7(Right Click)"
lore:
- "&7Right-click to open options menu"