Skip to content

Commit

Permalink
Merge pull request #15 from MylesAndMore/dev
Browse files Browse the repository at this point in the history
v2.0.0
  • Loading branch information
MylesAndMore authored Aug 9, 2024
2 parents 88d7136 + 83a2a5e commit d31e904
Show file tree
Hide file tree
Showing 44 changed files with 2,799 additions and 1,559 deletions.
117 changes: 117 additions & 0 deletions OG_GUIDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Tumble

## Guide for original worlds

In this guide, I'll go over how to set up the Tumble plugin with the original game worlds from the Legacy Console Editions.

## Steps

1. Download this plugin and [Multiverse-Core](https://www.spigotmc.org/resources/multiverse-core.390/). Place them in your plugins directory
2. Download the worlds and unzip them into your server's worlds directory.
- [Lobby](https://www.theminecraftarchitect.com/mini-game-maps/2017-mini-game-lobby) (Rename folder to 'lobby' after unzipping)
- [Normal Arena](https://publicfiles.sowgro.net/console-minigame-maps/java/tumble/)
- [Festive Arena](https://publicfiles.sowgro.net/console-minigame-maps/java/tumble/)
- [Halloween Arena](https://publicfiles.sowgro.net/console-minigame-maps/java/tumble/)
- [Birthday Arena](https://publicfiles.sowgro.net/console-minigame-maps/java/tumble/)

*Tip: set a specific directory to store your worlds in with the `world-container` setting in `bukkit.yml`.*

3. Set `level-name` in server.properties to `lobby`
4. Take note of the names of the world folders, we will need these in step six.
5. Start and join your server.
6. Import your arena worlds. This can be done with the multiverse command `/mv import <your-world-name> normal`

7. Paste the following arena config below into `plugins/Tumble/arenas.yml`:
```yaml
arenas:
basic:
kill-at-y: 24
game-spawn:
x: 0.5
y: 60.0
z: 0.5
world: basic
lobby:
x: -341.5
y: 58
z: -340.5
world: lobby
winner-lobby:
x: -362.5
y: 76
z: -340.5
world: lobby
birthday:
kill-at-y: 27
game-spawn:
x: 0.5
y: 60
z: 0.5
world: birthday
lobby:
x: -341.5
y: 58
z: -340.5
world: lobby
winner-lobby:
x: -362.5
y: 76
z: -340.5
world: lobby
festive:
kill-at-y: 20
game-spawn:
x: 0.5
y: 60
z: 0.5
world: festive
lobby:
x: -341.5
y: 58
z: -340.5
world: lobby
winner-lobby:
x: -362.5
y: 76
z: -340.5
world: lobby
halloween:
kill-at-y: 23
game-spawn:
x: 0.5
y: 60
z: -0.5
world: halloween
lobby:
x: -341.5
y: 58
z: -340.5
world: lobby
winner-lobby:
x: -362.5
y: 76
z: -340.5
world: lobby
```
8. Reload the plugin with `/tumble reload`.

9. Join the game using `/tumble join basic mixed`
(swap the arena and game type for whichever one you want to play).

You're done! Happy playing!

## Recommended plugins

These plugins, while not required, can help to provide a more thorough minigame experience.

- [WorldGuard](https://dev.bukkit.org/projects/worldguard) and [CyberWorldReset](https://www.spigotmc.org/resources/cyberworldreset-standard-%E2%9C%A8-regenerate-worlds-scheduled-resets-lag-optimized%E3%80%8C1-8-1-19%E3%80%8D.96834/)
- Protect players from breaking blocks in the lobby and reset any redstone they activated.

- [ViaVersion](https://www.spigotmc.org/resources/viaversion.19254/) and [ViaBackwards](https://www.spigotmc.org/resources/viabackwards.27448/)
- Allow older and newer players to connect to your server.

- [Geyser](https://geysermc.org/download#geyser) and [Floodgate](https://geysermc.org/download#floodgate)
- Allow Bedrock clients to connect to your server.

- [ProtectEnvironment](https://www.spigotmc.org/resources/protectenvironment.82736/)
- Stop water and lava flow (useful for Halloween map).
144 changes: 91 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,76 +6,114 @@ Tumble is a Spigot/Paper plugin that aims to recreate the Tumble minigame from t

## What *is* Tumble?

If you've never heard of it, [Tumble](https://minecraft-archive.fandom.com/wiki/Tumble_Mode) is a twist on the classic Minecraft minigame of spleef, where the objective is to break the blocks under your opponents. But in Tumble, you play on randomly generated layers of blocks, using shovels, snowballs, or both to try and eliminate your opponents.
If you've never heard of it, [Tumble](https://minecraft.wiki/w/tumble) is a twist on the classic Minecraft minigame of spleef, where the objective is to break the blocks under your opponents.
But in Tumble, you play on randomly generated layers of blocks, using shovels, snowballs, or both to try and eliminate your opponents.

## Features

- Choose from three different game modes present in the original game--shovels, snowballs, and mixed
- Four types of random layer generation
- 15 unique, themed layer varieties
- Choose from three different game modes present in the original game: shovels, snowballs, and mixed
- Four types of random layer generation
- 16 unique, themed layer varieties, and the ability to add your own
- Quick and easy setup and use
- Support for 2-8 players
- Highly customizable
- Open-source codebase
- Support for 2-8 players
- Multiple arenas and concurrent games
- Highly customizable, heavily configurable
- Open-source codebase

## Setup

1. Simply [download](https://github.com/MylesAndMore/Tumble/releases) the plugin's JAR file and place it in your server's plugins directory.
1. [Download](https://github.com/MylesAndMore/Tumble/releases) the plugin's JAR file and place it in your server's plugins directory.
2. If you'd like to have your lobby and arena(s) in separate worlds...
- Place the worlds for your lobby and arena(s) in your server's worlds directory.
- Import your worlds using a plugin like Multiverse ```/mv import myWorld normal```.
- If you would like an experience similar to the original game, see [my guide](OG_GUIDE.md) for using the original worlds.
3. Start your server.
4. Create your first arena `/tumble create myArena`.
5. Set the spawn point of the arena `/tumble setgamespawn myArena`.
- **Note**: The layers will generate relative to this location. Ensure that the area is clear, 20 blocks in each direction.

- *Note: Multiverse is also required for the plugin to run, you may download it [here](https://www.spigotmc.org/resources/multiverse-core.390/).*
6. You're done! You can now join the game ```/tumble join myArena mixed```.

2. Make sure that you have at least two worlds in your world directory! One is for your lobby world, and the other is for your game arena.
Scroll down for more options to configure your game.

- If you would like an experience similar to the original game, see [my guide](https://github.com/MylesAndMore/tumble/blob/main/og-guide.md) for using the original worlds.
## Commands / Permissions

| Command | Description | Permission |
|---------------------------------------|-------------------------------------------------------------------------------------|-------------------------|
| `/tumble join <arenaName> [gameType]` | Join a Tumble match. Can infer game type if a game is already started in the arena. | `tumble.join` |
| `/tumble leave` | Leave a Tumble match. | `tumble.leave` |
| `/tumble forcestart [arenaName]` | Force start a Tumble match. Can infer arena if you are in one. | `tumble.forcestart` |
| `/tumble forcestop [arenaName]` | Force stop a Tumble match. Can infer arena if you are in one. | `tumble.forcestop` |
| `/tumble reload` | Reload the plugin's configuration. | `tumble.reload` |
| `/tumble create <arenaName>` | Create a new arena. | `tumble.create` |
| `/tumble remove <arenaName>` | Remove an arena. | `tumble.remove` |
| `/tumble setgamespawn <arenaName>` | Set the arena's game spawn to your current position. | `tumble.setgamespawn` |
| `/tumble setkillylevel <arenaName>` | Set the arena's Y-level to kill players at to current Y coordinate. | `tumble.setkillylevel` |
| `/tumble setlobby <arenaName>` | Set the arena's lobby to current location. | `tumble.setlobby` |
| `/tumble setwaitarea <arenaName>` | Set the arena's wait area to the current location. | `tumble.setwaitarea` |
| `/tumble setwinnerlobby <arenaName>` | Set the arena's winner lobby to the current location. | `tumble.setwinnerlobby` |

Note that the `/tmbl` command can be used as a shorter alias to `/tumble`.

3. Start your server. The plugin will generate a couple of warnings, these are normal.
4. Ensure that you have imported your worlds into Multiverse. This can be done with the command ```/mv import <your-world-name> normal```.
5. Now you need to tell Tumble which world is your lobby and which world is your game arena. You can do this with ```/tumble:link <your-lobby-world> lobby``` and ```/tumble:link <your-game-world> game``` respectively.
6. **VERY IMPORTANT:** The plugin will teleport players to the world spawn point of each world, and generate the game's blocks around the spawn point of the game world. Ensure that your spawn points are clear of any obstructions, and that a 20x20x20 cube is cleared out from the spawn of whatever game world you are using. **Any blocks in this area will be destroyed when the game begins.**
7. You're done! You can now start games with the command ```/tumble:start```.
## Configuration
Configuration for this plugin is stored in three files:

Scroll down for more options to configure your game.
### settings.yml
Stores general settings.

## Commands/Permissions

- ```/tumble:reload```

- *Description:* Reloads the plugin's configuration.
- *Usage:* ```/tumble:reload```
- *Permission:* ```tumble.reload```
- ```/tumble:link```
- *Description:* Links a world on the server as a lobby or game world.
- *Usage:* ```/tumble:link <world> (lobby|game)```
- *Permission:* ```tumble.link```
- ```/tumble:start```
- *Description:* Force starts a Tumble match (with an optional game type).
- *Usage:* ```/tumble:start [game-type]```
- *Permission:* ```tumble.start```
- ```/tumble:winlocation```
- *Description:* Sets the location to teleport the winning player of a game. Uses the player's location if no arguments are specified.
- *Usage:* ```/tumble:winlocation [x] [y] [z]```
- *Permission:* ```tumble.winlocation```
- ```/tumble:autostart```
- *Description:* Configures the auto start functions of Tumble.
- *Usage:* ```/tumble:autostart <playerAmount> [enable|disable]```
- *Permission:* ```tumble.autostart```
- *Permission:* ```tumble.update```
- Players with this permission will receive a notification upon joining if Tumble is out of date.
| Option | Type | Description | Default value |
|----------------------------|---------|--------------------------------------------------------------------------------|---------------|
| `hide-join-leave-messages` | Boolean | Hides player join and leave messages in public chat. | `false` |
| `hide-death-messages` | Boolean | Hides player death messages in public chat. | `false` |
| `wait-duration` | Integer | Duration (in seconds) to wait for more players to join a game before starting. | `15` |

## Configuration
### arenas.yml
Stores data about each arena.
Arenas may be added and removed as you wish, either via the commands detailed above or by editing the `arenas.yml` file directly.

Each arena can contain the following locations:

| Location | Description |
|--------------------------|-------------------------------------------------------------------------------------|
| `game-spawn` **Required* | The location where players will be teleported, and the layers will generate around. |
| `wait-area` | The location where players will be teleported to before the game begins. |
| `lobby` | The location where players will be teleported to after the game ends. |
| `winner-lobby` | The location where the winner will be teleported after the game ends. |

Locations are stored using the following format:
```yaml
location:
x: 0.5
y: 100
z: 0.5
world: worldName
```
If a location is not specified, players will not be teleported by the plugin.
Each arena can also contain the following option:
| Option | Type | Description |
|-------------|---------|------------------------------------------------------------------|
| `kill-at-y` | Integer | When a player falls below this Y-level, they will be eliminated. |

### language.yml
Most of this plugin's messages are configurable through this file (excluding some console errors).

All plugin chat messages will have the `prefix` prepended to them.

Colors can be added using alternate color codes; for example, `&cRed Text` will appear red in-game.

### layers.yml
Stores data about the layers that will be generated during gameplay.

- ```gameMode```
- Customize the default game mode of Tumble.
- Acceptable options include: shovels, snowballs, mixed
- *Default:* ```mixed```
Each layer contains a weight and a list of materials (blocks).

- ```hideJoinLeaveMessages```
- Hides join/leave messages in public chat.
- *Default:* ```false```
| Option | Type | Description |
|-------------------------|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `weight` | Integer | A weight to influence how often the layer is randomly chosen. Default: 1 |
| `materials` **Required* | List of Materials | The palette of blocks that the layer will be composed of. Use the block names [listed here](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html). Optionally, a weight can be added after the block name like so: `STONE 5`. |`

- ```permissionMessage```
- Customize the message that displays when the player does not have permission to execute a command from this plugin.

## Issues & Feedback

Feel free to report any bugs, leave feedback, ask questions, or submit ideas for new features on our [GitHub issues page](https://github.com/MylesAndMore/tumble/issues/new)!
Feel free to report any bugs, leave feedback, ask questions, or submit ideas for new features on the Tumble [GitHub issues page](https://github.com/MylesAndMore/tumble/issues/new)!
14 changes: 5 additions & 9 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,20 @@ plugins {

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
languageVersion = JavaLanguageVersion.of(16)
}
}

repositories {
mavenCentral() // Use Maven Central for resolving dependencies.
mavenCentral() // Use Maven Central for resolving dependencies
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url "https://repo.onarandombox.com/content/groups/public/" }
maven { url "https://repo.jeff-media.com/public/"}
}

dependencies {
compileOnly('org.spigotmc:spigot-api:1.19.2-R0.1-SNAPSHOT')
compileOnly('com.onarandombox.multiversecore:Multiverse-Core:4.3.1')
compileOnly('org.jetbrains:annotations:24.1.0')
compileOnly('org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT')
implementation('org.bstats:bstats-bukkit:3.0.2')
implementation('com.jeff_media:SpigotUpdateChecker:3.0.3')
}

// Disable generation of the normal JAR to reduce confusion and only generate the correctly shadowed JAR including bStats
Expand All @@ -30,7 +27,6 @@ jar.finalizedBy(shadowJar)
shadowJar {
archiveBaseName.set('Tumble')
archiveClassifier.set('')
archiveVersion.set('1.0.4')
archiveVersion.set('2.0.0')
relocate 'org.bstats', 'com.MylesAndMore.bstats'
relocate 'com.jeff_media.updatechecker', 'com.MylesAndMore.updatechecker'
}
33 changes: 0 additions & 33 deletions og-guide.md

This file was deleted.

Loading

0 comments on commit d31e904

Please sign in to comment.