mirror of
https://github.com/BentoBoxWorld/CaveBlock.git
synced 2024-11-22 11:35:11 +01:00
commit
514f860d3f
37
.github/ISSUE_TEMPLATE/bug_report.md.txt
vendored
Normal file
37
.github/ISSUE_TEMPLATE/bug_report.md.txt
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: "Bug \U0001F4A5"
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Bug Report
|
||||
|
||||
#### Description
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
#### Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
#### Expected behavior
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
#### Screenshots or video
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
#### Server Information:
|
||||
[Please complete the following information:]
|
||||
- Database being used (YAML, JSON, MySQL, MongoDB): []
|
||||
- OS: [e.g. iOS]
|
||||
- Java Version: [e.g. Java 8]
|
||||
- BentoBox version: [e.g. 1.7.2.21]
|
||||
- Addons installed? [Do '/bentobox version' and copy/paste from the console]
|
||||
- Other plugins? [Do '/plugins' and copy/paste from the console]
|
||||
|
||||
#### Additional context
|
||||
Add any other context about the problem here.
|
18
.github/ISSUE_TEMPLATE/contributor-request.md.txt
vendored
Normal file
18
.github/ISSUE_TEMPLATE/contributor-request.md.txt
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
name: Contributor request
|
||||
about: Describe this issue template's purpose here.
|
||||
title: ''
|
||||
labels: "Need help \U0001F198"
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Contributor Request
|
||||
#### Description
|
||||
Describe your request.
|
||||
|
||||
#### Tasks
|
||||
Describe task that should be performed
|
||||
|
||||
#### Additional information
|
||||
Any additional information?
|
21
.github/ISSUE_TEMPLATE/feature_request.md.txt
vendored
Normal file
21
.github/ISSUE_TEMPLATE/feature_request.md.txt
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: Feature request ✨
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Feature Request
|
||||
#### Is your feature request related to a problem? Please describe.
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
#### Describe the solution you'd like
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
#### Describe alternatives you've considered
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
#### Additional context
|
||||
Add any other context or screenshots about the feature request here.
|
39
README.md
39
README.md
@ -1,2 +1,39 @@
|
||||
# CaveBlock
|
||||
CaveBlock addon for BentoBox. An interesting variation from Skyblock, where your goal is to survive in a cube of stone!
|
||||
|
||||
CaveBlock is an addon for BentoBox, so to run CaveBlock, you must have BentoBox installed. It is not a Bukkit plugin and trying to use it as one will not work.
|
||||
|
||||
## Installation
|
||||
|
||||
0. Install BentoBox and run it on the server at least once to create its data folders.
|
||||
1. Place this jar in the addons folder of the BentoBox plugin.
|
||||
2. Restart the server.
|
||||
3. The addon will create worlds and a data folder and inside the folder will be a config.yml.
|
||||
4. Stop the server .
|
||||
5. Edit the config.yml how you want.
|
||||
6. Delete any worlds that were created by default if you made changes that would affect them.
|
||||
7. Restart the server.
|
||||
|
||||
## Config.yml
|
||||
|
||||
The config.yml is similar to BSkyblock and AcidIsalnd but *not the same*. It has some additional or changed parameters, like,
|
||||
instead of wrold-height it has world-depth.
|
||||
It also has option to choose main block for each world, and blocks that will be occasionally replace main block, f.e. diamond ore or shulker.
|
||||
It also allows to specifiy if roof and floor for each world must be generated from bedrock.
|
||||
|
||||
|
||||
### Other Add-ons
|
||||
|
||||
CaveBlock is an add-on that uses the BentoBox API. Here are some other ones that you may be interested in:
|
||||
|
||||
* Level - provides island level calculation and a top ten - may need some adjusments, as main block will be over all island.
|
||||
* Welcome Warps - provides the warp sign feature
|
||||
* Challenges - challenges
|
||||
* Biomes - allows to change biomes per island
|
||||
* Greenhouses - allows to create green houses that provides some biome specific materials / mobs.
|
||||
* invSwitcher - allows to switch inventories between gamemode worlds
|
||||
|
||||
You can find the projects on GitHub.
|
||||
|
||||
Bugs and Feature requests
|
||||
=========================
|
||||
File bug and feature requests here: https://github.com/BentoBoxWorld/CaveBlock/issues
|
||||
|
226
pom.xml
Normal file
226
pom.xml
Normal file
@ -0,0 +1,226 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>world.bentobox</groupId>
|
||||
<artifactId>caveblock</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<name>CaveBlock</name>
|
||||
<description>CaveBlock is an add-on for BentoBox, an expandable Minecraft Bukkit plugin for island-type games like SkyBlock or AcidIsland.</description>
|
||||
<url>https://github.com/BentoBoxWorld/CaveBlock</url>
|
||||
<inceptionYear>2019</inceptionYear>
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:https://github.com/BentoBoxWorld/CaveBlock.git</connection>
|
||||
<developerConnection>scm:git:git@github.com:BentoBoxWorld/CaveBlock.git</developerConnection>
|
||||
<url>https://github.com/BentoBoxWorld/CaveBlock</url>
|
||||
</scm>
|
||||
|
||||
<ciManagement>
|
||||
<system>jenkins</system>
|
||||
<url>http://ci.codemc.org/job/BentoBoxWorld/job/CaveBlock</url>
|
||||
</ciManagement>
|
||||
|
||||
<issueManagement>
|
||||
<system>GitHub</system>
|
||||
<url>https://github.com/BentoBoxWorld/CaveBlock/issues</url>
|
||||
</issueManagement>
|
||||
|
||||
<distributionManagement>
|
||||
<snapshotRepository>
|
||||
<id>codemc-snapshots</id>
|
||||
<url>https://repo.codemc.org/repository/maven-snapshots</url>
|
||||
</snapshotRepository>
|
||||
<repository>
|
||||
<id>codemc-releases</id>
|
||||
<url>https://repo.codemc.org/repository/maven-releases</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<powermock.version>1.7.4</powermock.version>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>codemc-repo</id>
|
||||
<url>https://repo.codemc.org/repository/maven-public</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.13.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<version>1.10.19</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.powermock</groupId>
|
||||
<artifactId>powermock-module-junit4</artifactId>
|
||||
<version>${powermock.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.powermock</groupId>
|
||||
<artifactId>powermock-api-mockito</artifactId>
|
||||
<version>${powermock.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>world.bentobox</groupId>
|
||||
<artifactId>bentobox</artifactId>
|
||||
<version>1.2.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<defaultGoal>clean package</defaultGoal>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources/locales</directory>
|
||||
<targetPath>./locales</targetPath>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>*.yml</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources/schems</directory>
|
||||
<targetPath>./schems</targetPath>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>*.schem</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<configuration>
|
||||
<nonFilteredFileExtensions>
|
||||
<nonFilteredFileExtension>schem</nonFilteredFileExtension>
|
||||
</nonFilteredFileExtensions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.7.0</version>
|
||||
<configuration>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.22.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<configuration>
|
||||
<show>public</show>
|
||||
<failOnError>false</failOnError>
|
||||
<additionalJOption>-Xdoclint:none</additionalJOption>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<goals>
|
||||
<goal>jar-no-fork</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
<configuration>
|
||||
<minimizeJar>false</minimizeJar>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
<version>2.5.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
<version>0.8.1</version>
|
||||
<configuration>
|
||||
<append>true</append>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>pre-unit-test</id>
|
||||
<goals>
|
||||
<goal>prepare-agent</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>post-unit-test</id>
|
||||
<goals>
|
||||
<goal>report</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
234
src/main/java/world/bentobox/caveblock/CaveBlock.java
Normal file
234
src/main/java/world/bentobox/caveblock/CaveBlock.java
Normal file
@ -0,0 +1,234 @@
|
||||
package world.bentobox.caveblock;
|
||||
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldCreator;
|
||||
import org.bukkit.WorldType;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import org.eclipse.jdt.annotation.NonNull;
|
||||
|
||||
import world.bentobox.bentobox.api.addons.GameModeAddon;
|
||||
import world.bentobox.bentobox.api.configuration.Config;
|
||||
import world.bentobox.bentobox.api.configuration.WorldSettings;
|
||||
import world.bentobox.caveblock.commands.AdminCommand;
|
||||
import world.bentobox.caveblock.commands.IslandCommand;
|
||||
import world.bentobox.caveblock.generators.ChunkGeneratorWorld;
|
||||
|
||||
|
||||
public class CaveBlock extends GameModeAddon
|
||||
{
|
||||
/**
|
||||
* Executes code when loading the addon. This is called before {@link #onEnable()}. This should preferably
|
||||
* be used to setup configuration and worlds.
|
||||
*/
|
||||
@Override
|
||||
public void onLoad()
|
||||
{
|
||||
super.onLoad();
|
||||
|
||||
this.saveDefaultConfig();
|
||||
this.loadSettings();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Executes code when enabling the addon. This is called after {@link #onLoad()}.
|
||||
*/
|
||||
@Override
|
||||
public void onEnable()
|
||||
{
|
||||
this.playerCommand = new IslandCommand(this);
|
||||
this.adminCommand = new AdminCommand(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Executes code when reloading the addon.
|
||||
*/
|
||||
@Override
|
||||
public void onReload()
|
||||
{
|
||||
super.onReload();
|
||||
this.loadSettings();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Executes code when disabling the addon.
|
||||
*/
|
||||
@Override
|
||||
public void onDisable()
|
||||
{
|
||||
if (this.settings != null)
|
||||
{
|
||||
new Config<>(this, Settings.class).saveConfigObject(this.settings);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method loads CaveBlock settings
|
||||
*/
|
||||
private void loadSettings()
|
||||
{
|
||||
this.settings = new Config<>(this, Settings.class).loadConfigObject();
|
||||
|
||||
if (this.settings == null)
|
||||
{
|
||||
// Disable
|
||||
this.logError("CaveBlock settings could not load! Addon disabled.");
|
||||
this.setState(State.DISABLED);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: World generators
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* Make the worlds for this GameMode in this method. BentoBox will call it after onLoad() and before
|
||||
* onEnable(). {@link #islandWorld} must be created and assigned, {@link #netherWorld} and {@link
|
||||
* #endWorld} are optional and may be null.
|
||||
*/
|
||||
@Override
|
||||
public void createWorlds()
|
||||
{
|
||||
String worldName = this.settings.getWorldName();
|
||||
|
||||
if (this.getServer().getWorld(worldName) == null)
|
||||
{
|
||||
this.getLogger().info("Creating CaveBlock world ...");
|
||||
}
|
||||
|
||||
this.chunkGenerator = new ChunkGeneratorWorld(this);
|
||||
|
||||
// Create the world if it does not exist
|
||||
this.islandWorld = WorldCreator.name(worldName).
|
||||
type(WorldType.FLAT).
|
||||
environment(World.Environment.NORMAL).
|
||||
generator(new ChunkGeneratorWorld(this)).
|
||||
createWorld();
|
||||
|
||||
|
||||
|
||||
// Make the nether if it does not exist
|
||||
if (this.settings.isNetherGenerate())
|
||||
{
|
||||
if (this.getServer().getWorld(worldName + NETHER) == null)
|
||||
{
|
||||
this.log("Creating CaveBlock's Nether...");
|
||||
}
|
||||
|
||||
if (!this.settings.isNetherIslands())
|
||||
{
|
||||
this.netherWorld = WorldCreator.name(worldName + NETHER).
|
||||
type(WorldType.NORMAL).
|
||||
environment(World.Environment.NETHER).
|
||||
createWorld();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.netherWorld = WorldCreator.name(worldName + NETHER).
|
||||
type(WorldType.FLAT).
|
||||
generator(new ChunkGeneratorWorld(this)).
|
||||
environment(World.Environment.NETHER).
|
||||
createWorld();
|
||||
}
|
||||
}
|
||||
|
||||
// Make the end if it does not exist
|
||||
if (this.settings.isEndGenerate())
|
||||
{
|
||||
if (this.getServer().getWorld(worldName + THE_END) == null)
|
||||
{
|
||||
this.log("Creating CaveBlock's End World...");
|
||||
}
|
||||
if (!this.settings.isEndIslands())
|
||||
{
|
||||
this.endWorld = WorldCreator.name(worldName + THE_END).
|
||||
type(WorldType.NORMAL).
|
||||
environment(World.Environment.THE_END).
|
||||
createWorld();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.endWorld = WorldCreator.name(worldName + THE_END).
|
||||
type(WorldType.FLAT).
|
||||
generator(new ChunkGeneratorWorld(this)).
|
||||
environment(World.Environment.THE_END).
|
||||
createWorld();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Defines the world generator for this game mode
|
||||
*
|
||||
* @param worldName - name of world that this applies to
|
||||
* @param id - id if any
|
||||
* @return Chunk generator
|
||||
* @since 1.2.0
|
||||
*/
|
||||
@Override
|
||||
public @NonNull ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
|
||||
{
|
||||
return this.chunkGenerator;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Getters
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* @return WorldSettings for this GameMode
|
||||
*/
|
||||
@Override
|
||||
public WorldSettings getWorldSettings()
|
||||
{
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Settings for this GameMode
|
||||
*/
|
||||
public Settings getSettings()
|
||||
{
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* This stores CaveBlock addon settings.
|
||||
*/
|
||||
private Settings settings;
|
||||
|
||||
/**
|
||||
* This stores CaveBlock addon WorldGenerator.
|
||||
*/
|
||||
private ChunkGeneratorWorld chunkGenerator;
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Constants
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* String for nether world.
|
||||
*/
|
||||
private static final String NETHER = "_nether";
|
||||
|
||||
/**
|
||||
* String for the end world.
|
||||
*/
|
||||
private static final String THE_END = "_the_end";
|
||||
}
|
1923
src/main/java/world/bentobox/caveblock/Settings.java
Normal file
1923
src/main/java/world/bentobox/caveblock/Settings.java
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,77 @@
|
||||
package world.bentobox.caveblock.commands;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.*;
|
||||
import world.bentobox.bentobox.api.commands.admin.deaths.AdminDeathsCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.range.AdminRangeCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.resets.AdminResetsResetCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.schem.AdminSchemCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.team.AdminTeamAddCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.team.AdminTeamDisbandCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.team.AdminTeamKickCommand;
|
||||
import world.bentobox.bentobox.api.commands.admin.team.AdminTeamSetownerCommand;
|
||||
import world.bentobox.bentobox.api.localization.TextVariables;
|
||||
import world.bentobox.bentobox.api.user.User;
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
|
||||
|
||||
public class AdminCommand extends CompositeCommand {
|
||||
|
||||
public AdminCommand(CaveBlock addon) {
|
||||
super(addon, "cbadmin", "cba");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
setPermission("admin.*");
|
||||
setOnlyPlayer(false);
|
||||
setParametersHelp("commands.admin.help.parameters");
|
||||
setDescription("commands.admin.help.description");
|
||||
new AdminVersionCommand(this);
|
||||
new AdminTeleportCommand(this, "tp");
|
||||
new AdminTeleportCommand(this, "tpnether");
|
||||
new AdminTeleportCommand(this, "tpend");
|
||||
new AdminGetrankCommand(this);
|
||||
new AdminSetrankCommand(this);
|
||||
new AdminInfoCommand(this);
|
||||
// Team commands
|
||||
new AdminTeamAddCommand(this);
|
||||
new AdminTeamKickCommand(this);
|
||||
new AdminTeamDisbandCommand(this);
|
||||
new AdminTeamSetownerCommand(this);
|
||||
// Schems
|
||||
new AdminSchemCommand(this);
|
||||
// Register/unregister islands
|
||||
new AdminRegisterCommand(this);
|
||||
new AdminUnregisterCommand(this);
|
||||
// Range
|
||||
new AdminRangeCommand(this);
|
||||
// Resets
|
||||
new AdminResetsResetCommand(this);
|
||||
// TODO new AdminClearresetsallCommand(this);
|
||||
// Delete
|
||||
new AdminDeleteCommand(this);
|
||||
// Why
|
||||
new AdminWhyCommand(this);
|
||||
// Deaths
|
||||
new AdminDeathsCommand(this);
|
||||
// Reload
|
||||
new AdminReloadCommand(this);
|
||||
// Spawn
|
||||
new AdminSetspawnCommand(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(User user, String label, List<String> args) {
|
||||
if (!args.isEmpty()) {
|
||||
user.sendMessage("general.errors.unknown-command", TextVariables.LABEL, getTopLabel());
|
||||
return false;
|
||||
}
|
||||
// By default run the attached help command, if it exists (it should)
|
||||
return showHelp(this, user);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package world.bentobox.caveblock.commands;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||
import world.bentobox.bentobox.api.user.User;
|
||||
|
||||
|
||||
public class IslandAboutCommand extends CompositeCommand {
|
||||
|
||||
/**
|
||||
* About
|
||||
* @param islandCommand - parent command
|
||||
*/
|
||||
public IslandAboutCommand(CompositeCommand islandCommand) {
|
||||
super(islandCommand, "about", "ab");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
setDescription("commands.island.about.description");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(User user, String label, List<String> args) {
|
||||
user.sendRawMessage("About " + getAddon().getDescription().getName() + " " + getAddon().getDescription().getVersion() + ":");
|
||||
user.sendRawMessage("Copyright (c) 2019 BONNe");
|
||||
user.sendRawMessage("See https://www.eclipse.org/legal/epl-2.0/");
|
||||
user.sendRawMessage("for license information.");
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
package world.bentobox.caveblock.commands;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||
import world.bentobox.bentobox.api.commands.island.*;
|
||||
import world.bentobox.bentobox.api.commands.island.team.IslandTeamCommand;
|
||||
import world.bentobox.bentobox.api.localization.TextVariables;
|
||||
import world.bentobox.bentobox.api.user.User;
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
|
||||
|
||||
public class IslandCommand extends CompositeCommand {
|
||||
|
||||
public IslandCommand(CaveBlock addon) {
|
||||
super(addon, "cave", "cb");
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see us.tastybento.bskyblock.api.commands.CompositeCommand#setup()
|
||||
*/
|
||||
@Override
|
||||
public void setup() {
|
||||
setDescription("commands.island.help.description");
|
||||
setOnlyPlayer(true);
|
||||
// Permission
|
||||
setPermission("island");
|
||||
// Set up subcommands
|
||||
new IslandAboutCommand(this);
|
||||
new IslandInfoCommand(this);
|
||||
new IslandCreateCommand(this);
|
||||
new IslandGoCommand(this);
|
||||
new IslandSpawnCommand(this);
|
||||
new IslandResetCommand(this);
|
||||
new IslandSetnameCommand(this);
|
||||
new IslandResetnameCommand(this);
|
||||
new IslandSethomeCommand(this);
|
||||
new IslandSettingsCommand(this);
|
||||
new IslandLanguageCommand(this);
|
||||
new IslandBanCommand(this);
|
||||
new IslandUnbanCommand(this);
|
||||
new IslandBanlistCommand(this);
|
||||
// Team commands
|
||||
new IslandTeamCommand(this);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see us.tastybento.bskyblock.api.commands.CommandArgument#execute(org.bukkit.command.CommandSender, java.lang.String[])
|
||||
*/
|
||||
@Override
|
||||
public boolean execute(User user, String label, List<String> args) {
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
if (args.isEmpty()) {
|
||||
// If user has an island, go
|
||||
if (getPlugin().getIslands().getIsland(getWorld(), user.getUniqueId()) != null) {
|
||||
return getSubCommand("go").map(goCmd -> goCmd.execute(user, goCmd.getLabel(), new ArrayList<>())).orElse(false);
|
||||
}
|
||||
// No islands currently
|
||||
return getSubCommand("create").map(createCmd -> createCmd.execute(user, createCmd.getLabel(), new ArrayList<>())).orElse(false);
|
||||
}
|
||||
user.sendMessage("general.errors.unknown-command", TextVariables.LABEL, getTopLabel());
|
||||
return false;
|
||||
}
|
||||
}
|
@ -0,0 +1,210 @@
|
||||
package world.bentobox.caveblock.generators;
|
||||
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import java.util.*;
|
||||
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
import world.bentobox.caveblock.Settings;
|
||||
import world.bentobox.caveblock.generators.populators.EntitiesPopulator;
|
||||
import world.bentobox.caveblock.generators.populators.MaterialPopulator;
|
||||
|
||||
|
||||
/**
|
||||
* Class ChunkGeneratorWorld ...
|
||||
*
|
||||
* @author BONNe
|
||||
* Created on 27.01.2019
|
||||
*/
|
||||
public class ChunkGeneratorWorld extends ChunkGenerator
|
||||
{
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Constructor
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* @param addon - CaveBlock object
|
||||
*/
|
||||
public ChunkGeneratorWorld(CaveBlock addon)
|
||||
{
|
||||
super();
|
||||
this.addon = addon;
|
||||
this.settings = addon.getSettings();
|
||||
|
||||
this.blockPopulators = new ArrayList<>(1);
|
||||
|
||||
this.blockPopulators.add(new MaterialPopulator(this.addon));
|
||||
this.blockPopulators.add(new EntitiesPopulator(this.addon));
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Methods
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This method sets if given coordinates can be set as spawn location
|
||||
*/
|
||||
@Override
|
||||
public boolean canSpawn(World world, int x, int z)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method generates given chunk.
|
||||
* @param world World where chunk must be generated.
|
||||
* @param random Random that allows define object randomness.
|
||||
* @param chunkX Chunk X coordinate.
|
||||
* @param chunkZ Chunk Z coordinate.
|
||||
* @param biomeGrid BiomeGrid that contains biomes.
|
||||
* @return new ChunkData for given chunk.
|
||||
*/
|
||||
@Override
|
||||
public ChunkData generateChunkData(World world,
|
||||
Random random,
|
||||
int chunkX,
|
||||
int chunkZ,
|
||||
ChunkGenerator.BiomeGrid biomeGrid)
|
||||
{
|
||||
ChunkData result = this.createChunkData(world);
|
||||
|
||||
// Populate chunk with necessary information
|
||||
if (world.getEnvironment().equals(World.Environment.NETHER))
|
||||
{
|
||||
this.populateNetherChunk(result);
|
||||
}
|
||||
else if (world.getEnvironment().equals(World.Environment.THE_END))
|
||||
{
|
||||
this.populateTheEndChunk(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.populateOverWorldChunk(result, biomeGrid);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates The End world chunk data.
|
||||
* @param chunkData ChunkData that must be populated.
|
||||
*/
|
||||
private void populateTheEndChunk(ChunkData chunkData)
|
||||
{
|
||||
// because everything starts at 0 and ends at 255
|
||||
final int worldHeight = this.settings.getWorldDepth();
|
||||
|
||||
// Fill all blocks
|
||||
chunkData.setRegion(0, 1, 0,
|
||||
16, worldHeight - 1, 16,
|
||||
this.settings.getEndMainBlock());
|
||||
|
||||
// Generate ground and ceiling.
|
||||
chunkData.setRegion(0, 0, 0,
|
||||
16, 1, 16,
|
||||
this.settings.isEndFloor() ? Material.BEDROCK : this.settings.getEndMainBlock());
|
||||
chunkData.setRegion(0, worldHeight - 1, 0,
|
||||
16, worldHeight, 16,
|
||||
this.settings.isEndRoof() ? Material.BEDROCK : this.settings.getEndMainBlock());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates nether world chunk data.
|
||||
* @param chunkData ChunkData that must be populated.
|
||||
*/
|
||||
private void populateNetherChunk(ChunkData chunkData)
|
||||
{
|
||||
// because everything starts at 0 and ends at 255
|
||||
final int worldHeight = this.settings.getWorldDepth();
|
||||
|
||||
// Fill all blocks
|
||||
chunkData.setRegion(0, 1, 0,
|
||||
16, worldHeight - 1, 16,
|
||||
this.settings.getNetherMainBlock());
|
||||
|
||||
// Generate ground and ceiling.
|
||||
chunkData.setRegion(0, 0, 0,
|
||||
16, 1, 16,
|
||||
this.settings.isNetherFloor() ? Material.BEDROCK : this.settings.getNetherMainBlock());
|
||||
chunkData.setRegion(0, worldHeight - 1, 0,
|
||||
16, worldHeight, 16,
|
||||
this.settings.isNetherRoof() ? Material.BEDROCK : this.settings.getNetherMainBlock());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates Over world chunk data.
|
||||
* @param chunkData ChunkData that must be populated.
|
||||
* @param biomeGrid BiomeGrid for this chunk.
|
||||
*/
|
||||
private void populateOverWorldChunk(ChunkData chunkData, BiomeGrid biomeGrid)
|
||||
{
|
||||
// because everything starts at 0 and ends at 255
|
||||
final int worldHeight = this.settings.getWorldDepth();
|
||||
|
||||
// Fill all blocks
|
||||
chunkData.setRegion(0, 1, 0,
|
||||
16, worldHeight - 1, 16,
|
||||
this.settings.getNormalMainBlock());
|
||||
|
||||
// Generate ground and ceiling.
|
||||
chunkData.setRegion(0, 0, 0,
|
||||
16, 1, 16,
|
||||
this.settings.isNormalFloor() ? Material.BEDROCK : this.settings.getNormalMainBlock());
|
||||
chunkData.setRegion(0, worldHeight - 1, 0,
|
||||
16, worldHeight, 16,
|
||||
this.settings.isNormalRoof() ? Material.BEDROCK : this.settings.getNormalMainBlock());
|
||||
|
||||
// Set biome
|
||||
for (int x = 0; x < 16; x++)
|
||||
{
|
||||
for (int z = 0; z < 16; z++)
|
||||
{
|
||||
biomeGrid.setBiome(x, z, this.settings.getDefaultBiome());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method set world block populators.
|
||||
* @param world World where this must apply.
|
||||
* @return List with block populators.
|
||||
*/
|
||||
@Override
|
||||
public List<BlockPopulator> getDefaultPopulators(final World world)
|
||||
{
|
||||
return this.blockPopulators;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
*/
|
||||
private CaveBlock addon;
|
||||
|
||||
/**
|
||||
* Addon settings.
|
||||
*/
|
||||
private Settings settings;
|
||||
|
||||
/**
|
||||
* This list contains block populators that will be applied after chunk is generated.
|
||||
*/
|
||||
private List<BlockPopulator> blockPopulators;
|
||||
}
|
@ -0,0 +1,269 @@
|
||||
package world.bentobox.caveblock.generators.populators;
|
||||
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import world.bentobox.bentobox.util.Pair;
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
import world.bentobox.caveblock.Settings;
|
||||
|
||||
|
||||
/**
|
||||
* This class populates generated chunk with enitites by random chance.
|
||||
*/
|
||||
public class EntitiesPopulator extends BlockPopulator
|
||||
{
|
||||
/**
|
||||
* This is default constructor
|
||||
* @param addon CaveBlock addon.
|
||||
*/
|
||||
public EntitiesPopulator(CaveBlock addon)
|
||||
{
|
||||
this.addon = addon;
|
||||
this.settings = addon.getSettings();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates chunk with entities.
|
||||
* @param world World where population must be.
|
||||
* @param random Randomness
|
||||
* @param chunk Chunk were populator operates.
|
||||
*/
|
||||
@Override
|
||||
public void populate(World world, Random random, Chunk chunk)
|
||||
{
|
||||
Map<EntityType, Pair<Integer, Integer>> entityChanceMap;
|
||||
Material mainMaterial;
|
||||
|
||||
if (world.getEnvironment().equals(World.Environment.NETHER))
|
||||
{
|
||||
entityChanceMap = this.getEntityMap(this.settings.getNetherBlocks());
|
||||
mainMaterial = this.settings.getNetherMainBlock();
|
||||
}
|
||||
else if (world.getEnvironment().equals(World.Environment.THE_END))
|
||||
{
|
||||
entityChanceMap = this.getEntityMap(this.settings.getEndBlocks());
|
||||
mainMaterial = this.settings.getEndMainBlock();
|
||||
}
|
||||
else
|
||||
{
|
||||
entityChanceMap = this.getEntityMap(this.settings.getNormalBlocks());
|
||||
mainMaterial = this.settings.getNormalMainBlock();
|
||||
}
|
||||
|
||||
final int generationTry = this.settings.getNumberOfBlockGenerationTries();
|
||||
final int worldHeight = this.settings.getWorldDepth() - 1;
|
||||
|
||||
for (Map.Entry<EntityType, Pair<Integer, Integer>> entry : entityChanceMap.entrySet())
|
||||
{
|
||||
for (int subY = 1; subY < worldHeight; subY += 16)
|
||||
{
|
||||
for (int tries = 0; tries < generationTry; tries++)
|
||||
{
|
||||
if (random.nextInt(100) < entry.getValue().x)
|
||||
{
|
||||
int x = random.nextInt(15);
|
||||
int z = random.nextInt(15);
|
||||
int y = subY + random.nextInt(15);
|
||||
|
||||
this.tryToPlaceEntity(world, chunk.getBlock(x, y, z), entry.getKey(), x, z, mainMaterial);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method returns Entity frequently and pack size map.
|
||||
* @param objectList List with objects that contains data.
|
||||
* @return Map that contains entity, its rarity and pack size.
|
||||
*/
|
||||
private Map<EntityType, Pair<Integer, Integer>> getEntityMap(List<String> objectList)
|
||||
{
|
||||
Map<EntityType, Pair<Integer, Integer>> entityMap = new HashMap<>(objectList.size());
|
||||
|
||||
Map<String, EntityType> entityTypeMap = Arrays.stream(EntityType.values()).
|
||||
collect(Collectors.toMap(Enum::name,
|
||||
entityType -> entityType,
|
||||
(a, b) -> b,
|
||||
() -> new HashMap<>(EntityType.values().length)));
|
||||
|
||||
// wrong material object.
|
||||
objectList.stream().
|
||||
filter(object -> object.startsWith("ENTITY")).
|
||||
map(object -> object.split(":")).
|
||||
filter(splitString -> splitString.length == 4).
|
||||
forEach(splitString -> {
|
||||
EntityType entity = entityTypeMap.getOrDefault(splitString[1], null);
|
||||
|
||||
if (entity != null)
|
||||
{
|
||||
entityMap.put(entity,
|
||||
new Pair<>(Integer.parseInt(splitString[2]), Integer.parseInt(splitString[3])));
|
||||
}
|
||||
});
|
||||
|
||||
return entityMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method checks if all chunks around given block is generated.
|
||||
* @param world World in which block is located
|
||||
* @param block Block that must be checked.
|
||||
* @param x Block x-index in chunk
|
||||
* @param z Block z-index in chunk
|
||||
* @return true, if all chunks around given block are generated.
|
||||
*/
|
||||
private boolean isValidBlock(World world, Block block, int x, int z)
|
||||
{
|
||||
return x > 0 && x < 15 && z > 0 && z < 15 ||
|
||||
world.isChunkGenerated(block.getX() + 1, block.getZ()) &&
|
||||
world.isChunkGenerated(block.getX() - 1, block.getZ()) &&
|
||||
world.isChunkGenerated(block.getX(), block.getZ() - 1) &&
|
||||
world.isChunkGenerated(block.getX(), block.getZ() + 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method is not completed. It must reserve space for entities to spawn, but
|
||||
* current implementation just allows to spawn 2 high mobs that can be in single
|
||||
* place.
|
||||
* @param world - World were mob must be spawned.
|
||||
* @param block - Block that was choosed by random.
|
||||
* @param entity - Entity that must be spawned.
|
||||
* @param x - ChunkX coordinate.
|
||||
* @param z - ChunkY coordinate.
|
||||
* @param originalMaterial - replacement manterial.
|
||||
*/
|
||||
private void tryToPlaceEntity(World world, Block block, EntityType entity, int x, int z, Material originalMaterial)
|
||||
{
|
||||
if (this.isValidBlock(world, block, x, z) && block.getType().equals(originalMaterial))
|
||||
{
|
||||
if (entity.isAlive())
|
||||
{
|
||||
int height = 0;
|
||||
int width = 0;
|
||||
int length = 0;
|
||||
boolean water = false;
|
||||
|
||||
switch (entity)
|
||||
{
|
||||
case SPIDER:
|
||||
width = 1;
|
||||
length = 1;
|
||||
break;
|
||||
case SLIME:
|
||||
case ELDER_GUARDIAN:
|
||||
case GHAST:
|
||||
case MAGMA_CUBE:
|
||||
case WITHER:
|
||||
height = 2;
|
||||
width = 2;
|
||||
length = 2;
|
||||
break;
|
||||
case ENDERMAN:
|
||||
case IRON_GOLEM:
|
||||
height = 2;
|
||||
break;
|
||||
case WITHER_SKELETON:
|
||||
case STRAY:
|
||||
case HUSK:
|
||||
case ZOMBIE_VILLAGER:
|
||||
case EVOKER:
|
||||
case VINDICATOR:
|
||||
case ILLUSIONER:
|
||||
case CREEPER:
|
||||
case SKELETON:
|
||||
case ZOMBIE:
|
||||
case BLAZE:
|
||||
case SNOWMAN:
|
||||
case VILLAGER:
|
||||
case PIG_ZOMBIE:
|
||||
case WITCH:
|
||||
case SHULKER:
|
||||
case SHEEP:
|
||||
case COW:
|
||||
case MUSHROOM_COW:
|
||||
height = 12;
|
||||
break;
|
||||
case SKELETON_HORSE:
|
||||
case ZOMBIE_HORSE:
|
||||
case DONKEY:
|
||||
case MULE:
|
||||
case HORSE:
|
||||
case POLAR_BEAR:
|
||||
case LLAMA:
|
||||
height = 1;
|
||||
width = 1;
|
||||
break;
|
||||
case GUARDIAN:
|
||||
case SQUID:
|
||||
case COD:
|
||||
case SALMON:
|
||||
case PUFFERFISH:
|
||||
case TROPICAL_FISH:
|
||||
water = true;
|
||||
break;
|
||||
case DROWNED:
|
||||
case DOLPHIN:
|
||||
water = true;
|
||||
height = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
Block otherBlock = world.getBlockAt(block.getX(), block.getY() + 1, block.getZ());
|
||||
|
||||
if (!otherBlock.getType().equals(originalMaterial))
|
||||
{
|
||||
otherBlock = world.getBlockAt(block.getX(), block.getY() - 1, block.getZ());
|
||||
}
|
||||
|
||||
if (otherBlock.getType().equals(originalMaterial))
|
||||
{
|
||||
block.setType(Material.CAVE_AIR);
|
||||
otherBlock.setType(Material.CAVE_AIR);
|
||||
|
||||
if (otherBlock.getY() < block.getY())
|
||||
{
|
||||
world.spawnEntity(otherBlock.getLocation(), entity);
|
||||
}
|
||||
else
|
||||
{
|
||||
world.spawnEntity(block.getLocation(), entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
block.setType(Material.CAVE_AIR);
|
||||
world.spawnEntity(block.getLocation(), entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
*/
|
||||
private CaveBlock addon;
|
||||
|
||||
/**
|
||||
* CaveBlock settings.
|
||||
*/
|
||||
private Settings settings;
|
||||
}
|
@ -0,0 +1,194 @@
|
||||
|
||||
package world.bentobox.caveblock.generators.populators;
|
||||
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import world.bentobox.bentobox.util.Pair;
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
import world.bentobox.caveblock.Settings;
|
||||
|
||||
|
||||
/**
|
||||
* This class allows to fill given chunk with necessary blocks.
|
||||
*/
|
||||
public class MaterialPopulator extends BlockPopulator
|
||||
{
|
||||
/**
|
||||
* This is default constructor
|
||||
* @param addon CaveBlock addon.
|
||||
*/
|
||||
public MaterialPopulator(CaveBlock addon)
|
||||
{
|
||||
this.addon = addon;
|
||||
this.settings = addon.getSettings();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates chunk with blocks.
|
||||
* @param world World where population must be.
|
||||
* @param random Randomness
|
||||
* @param chunk Chunk were populator operates.
|
||||
*/
|
||||
@Override
|
||||
public void populate(World world, Random random, Chunk chunk)
|
||||
{
|
||||
Map<Material, Pair<Integer, Integer>> materialChanceMap;
|
||||
Material mainMaterial;
|
||||
|
||||
if (world.getEnvironment().equals(World.Environment.NETHER))
|
||||
{
|
||||
materialChanceMap = this.getMaterialMap(this.settings.getNetherBlocks());
|
||||
mainMaterial = this.settings.getNetherMainBlock();
|
||||
}
|
||||
else if (world.getEnvironment().equals(World.Environment.THE_END))
|
||||
{
|
||||
materialChanceMap = this.getMaterialMap(this.settings.getEndBlocks());
|
||||
mainMaterial = this.settings.getEndMainBlock();
|
||||
}
|
||||
else
|
||||
{
|
||||
materialChanceMap = this.getMaterialMap(this.settings.getNormalBlocks());
|
||||
mainMaterial = this.settings.getNormalMainBlock();
|
||||
}
|
||||
|
||||
final int generationTry = this.settings.getNumberOfBlockGenerationTries();
|
||||
final int worldHeight = this.settings.getWorldDepth() - 1;
|
||||
|
||||
for (Map.Entry<Material, Pair<Integer, Integer>> entry : materialChanceMap.entrySet())
|
||||
{
|
||||
for (int subY = 1; subY < worldHeight; subY += 16)
|
||||
{
|
||||
for (int tries = 0; tries < generationTry; tries++)
|
||||
{
|
||||
if (random.nextInt(100) < entry.getValue().x)
|
||||
{
|
||||
int x = random.nextInt(15);
|
||||
int z = random.nextInt(15);
|
||||
int y = subY + random.nextInt(16);
|
||||
|
||||
Block block = chunk.getBlock(x, y, z);
|
||||
|
||||
if (block.getType().equals(mainMaterial) &&
|
||||
this.isValidBlock(world, block, x, z))
|
||||
{
|
||||
int packSize = random.nextInt(entry.getValue().z);
|
||||
|
||||
boolean continuePlacing = true;
|
||||
|
||||
while (continuePlacing)
|
||||
{
|
||||
if (!block.getType().equals(entry.getKey()))
|
||||
{
|
||||
block.setType(entry.getKey());
|
||||
packSize--;
|
||||
}
|
||||
|
||||
// The direction chooser
|
||||
switch (random.nextInt(5))
|
||||
{
|
||||
case 0:
|
||||
x = Math.min(15, x + 1);
|
||||
break;
|
||||
case 1:
|
||||
y = Math.min(worldHeight - 1, y + 1);
|
||||
break;
|
||||
case 2:
|
||||
z = Math.min(15, z + 1);
|
||||
break;
|
||||
case 3:
|
||||
x = Math.max(0, x - 1);
|
||||
break;
|
||||
case 4:
|
||||
y = Math.max(0, y - 1);
|
||||
break;
|
||||
case 5:
|
||||
z = Math.max(0, z - 1);
|
||||
break;
|
||||
}
|
||||
|
||||
block = chunk.getBlock(x, y, z);
|
||||
|
||||
continuePlacing = this.isValidBlock(world, block, x, z) &&
|
||||
packSize > 0 &&
|
||||
(block.getType().equals(mainMaterial) ||
|
||||
block.getType().equals(entry.getKey()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method checks if all chunks around given block is generated.
|
||||
* @param world World in which block is located
|
||||
* @param block Block that must be checked.
|
||||
* @param x Block x-index in chunk
|
||||
* @param z Block z-index in chunk
|
||||
* @return true, if all chunks around given block are generated.
|
||||
*/
|
||||
private boolean isValidBlock(World world, Block block, int x, int z)
|
||||
{
|
||||
return x > 0 && x < 15 && z > 0 && z < 15 ||
|
||||
world.isChunkGenerated(block.getX() + 1, block.getZ()) &&
|
||||
world.isChunkGenerated(block.getX() - 1, block.getZ()) &&
|
||||
world.isChunkGenerated(block.getX(), block.getZ() - 1) &&
|
||||
world.isChunkGenerated(block.getX(), block.getZ() + 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method returns material frequently and pack size map.
|
||||
* @param objectList List with objects that contains data.
|
||||
* @return Map that contains material, its rarity and pack size.
|
||||
*/
|
||||
private Map<Material, Pair<Integer, Integer>> getMaterialMap(List<String> objectList)
|
||||
{
|
||||
Map<Material, Pair<Integer, Integer>> materialMap = new HashMap<>(objectList.size());
|
||||
|
||||
// wrong material object.
|
||||
objectList.stream().
|
||||
filter(object -> object.startsWith("MATERIAL")).
|
||||
map(object -> object.split(":")).
|
||||
filter(splitString -> splitString.length == 4).
|
||||
forEach(splitString -> {
|
||||
Material material = Material.getMaterial(splitString[1]);
|
||||
|
||||
if (material != null)
|
||||
{
|
||||
materialMap.put(material,
|
||||
new Pair<>(Integer.parseInt(splitString[2]), Integer.parseInt(splitString[3])));
|
||||
}
|
||||
});
|
||||
|
||||
return materialMap;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
*/
|
||||
private CaveBlock addon;
|
||||
|
||||
/**
|
||||
* CaveBlock settings.
|
||||
*/
|
||||
private Settings settings;
|
||||
}
|
136
src/main/resources/addon.yml
Normal file
136
src/main/resources/addon.yml
Normal file
@ -0,0 +1,136 @@
|
||||
name: CaveBlock
|
||||
main: world.bentobox.caveblock.CaveBlock
|
||||
version: ${version}
|
||||
|
||||
authors: BONNe
|
||||
|
||||
permissions:
|
||||
caveblock.island:
|
||||
description: Allow island command usage
|
||||
default: true
|
||||
caveblock.island.create:
|
||||
description: Allow island creation
|
||||
default: true
|
||||
caveblock.island.home:
|
||||
description: Allow teleporting to player island
|
||||
default: true
|
||||
caveblock.island.sethome:
|
||||
description: Let the player use the sethome command
|
||||
default: true
|
||||
caveblock.island.info:
|
||||
description: Let the player check their island level
|
||||
default: true
|
||||
caveblock.island.sethome:
|
||||
description: Let the player set their island teleport point
|
||||
default: true
|
||||
caveblock.island.lock:
|
||||
description: Allows island locking
|
||||
default: false
|
||||
caveblock.island.expel:
|
||||
description: Allows expelling of visitors
|
||||
default: true
|
||||
caveblock.island.ban:
|
||||
description: Allows banning of visitors
|
||||
default: true
|
||||
caveblock.island.settings:
|
||||
description: Player can see server settings
|
||||
default: true
|
||||
caveblock.island.language:
|
||||
description: Player can select a language
|
||||
default: true
|
||||
caveblock.island.name:
|
||||
description: Player can set the name of their island
|
||||
default: true
|
||||
caveblock.island.spawn:
|
||||
description: Player can use the island spawn command if spawn exists
|
||||
default: true
|
||||
caveblock.island.reset:
|
||||
description: Player can use the island reset or restart command
|
||||
default: true
|
||||
caveblock.island.team:
|
||||
description: Let a player use team commands
|
||||
default: true
|
||||
caveblock.island.team.trust:
|
||||
description: Let a player use team trust commands
|
||||
default: true
|
||||
caveblock.island.team.coop:
|
||||
description: Let a player use team coop commands
|
||||
default: true
|
||||
caveblock.settings.*:
|
||||
description: Allow use of settings on island
|
||||
default: true
|
||||
caveblock.mod.info:
|
||||
description: Let a moderator see info on a player
|
||||
default: op
|
||||
caveblock.mod.resethome:
|
||||
description: Allows setting or reseting of a player's home position
|
||||
default: op
|
||||
caveblock.mod.clearreset:
|
||||
description: Allow clearing of island reset limit
|
||||
default: false
|
||||
caveblock.mod.tp:
|
||||
description: Allows teleport to an island
|
||||
default: op
|
||||
caveblock.mod.bypasscooldowns:
|
||||
description: Allow moderator to bypass cooldowns
|
||||
default: op
|
||||
caveblock.mod.bypassprotect:
|
||||
description: Allow moderator to bypass island protection
|
||||
default: op
|
||||
caveblock.mod.bypassexpel:
|
||||
description: Allow moderator to bypass island expulsion
|
||||
default: op
|
||||
caveblock.mod.lock:
|
||||
description: Locks or unlocks an island
|
||||
default: op
|
||||
caveblock.mod.bypasslock:
|
||||
description: Bypasses an island lock
|
||||
default: op
|
||||
caveblock.mod.team:
|
||||
description: Enables modification of teams via kick and add commands
|
||||
default: false
|
||||
caveblock.mod.name:
|
||||
description: Enables naming of player's islands
|
||||
default: false
|
||||
caveblock.mod.resetname:
|
||||
description: Enables reset of player's island names
|
||||
default: false
|
||||
caveblock.admin.clearresetall:
|
||||
description: Allow clearing of island reset limit of all players
|
||||
default: op
|
||||
caveblock.admin.reload:
|
||||
description: Reload the config.yml
|
||||
default: op
|
||||
caveblock.admin.delete:
|
||||
description: Let a player completely remove a player (including island)
|
||||
default: op
|
||||
caveblock.admin.deleteisland:
|
||||
description: Let a player completely remove the island the player is on
|
||||
default: op
|
||||
caveblock.admin.register:
|
||||
description: Let a player register the nearest island to another player.
|
||||
default: op
|
||||
caveblock.admin.unregister:
|
||||
description: Removes a player from an island without deleting the island blocks.
|
||||
default: op
|
||||
caveblock.admin.purge:
|
||||
description: Let a player purge old islands.
|
||||
default: op
|
||||
caveblock.admin.setspawn:
|
||||
description: Allows use of spawn tools
|
||||
default: op
|
||||
caveblock.admin.setrange:
|
||||
description: Allows setting of island protection range
|
||||
default: op
|
||||
caveblock.admin.reserve:
|
||||
description: Reserves an empty spot for a player's next island
|
||||
default: op
|
||||
caveblock.admin.settingsreset:
|
||||
description: Resets all the islands to default protection settings
|
||||
default: op
|
||||
caveblock.admin.noban:
|
||||
description: Player cannot be banned from an island
|
||||
default: op
|
||||
caveblock.admin.setlanguage:
|
||||
description: Resets all player languages and sets the default language
|
||||
default: op
|
353
src/main/resources/config.yml
Normal file
353
src/main/resources/config.yml
Normal file
@ -0,0 +1,353 @@
|
||||
# CaveBlock Configuration ${version}
|
||||
# This config file is dynamic and saved when the server is shutdown.
|
||||
# You cannot edit it while the server is running because changes will
|
||||
# be lost! Use in-game settings GUI or edit when server is offline.
|
||||
world:
|
||||
# Friendly name for this world. Used in admin commands. Must be a single word
|
||||
friendly-name: CaveBlock
|
||||
# Name of the world - if it does not exist then it will be generated.
|
||||
# It acts like a prefix for nether and end (e.g. CaveBlock-world, CaveBlock-world_nether, CaveBlock-world_end)
|
||||
world-name: CaveBlock-world
|
||||
# World difficulty setting - PEACEFUL, EASY, NORMAL, HARD
|
||||
# Other plugins may override this setting
|
||||
difficulty: NORMAL
|
||||
# Radius of island in blocks. (So distance between islands is twice this)
|
||||
# Will be rounded up to the nearest 16 blocks.
|
||||
# It is the same for every dimension : Overworld, Nether and End.
|
||||
# This value cannot be changed mid-game and the plugin will not start if it is different.
|
||||
distance-between-islands: 64
|
||||
# Default protection range radius in blocks. Cannot be larger than distance.
|
||||
# Admins can change protection sizes for players individually using /cbadmin range set <player> <new range>
|
||||
# or set this permission: caveblock.island.range.<number>
|
||||
protection-range: 50
|
||||
# Start islands at these coordinates. This is where new islands will start in the
|
||||
# world. These must be a factor of your island distance, but the plugin will auto
|
||||
# calculate the closest location on the grid. Islands develop around this location
|
||||
# both positively and negatively in a square grid.
|
||||
# If none of this makes sense, leave it at 0,0.
|
||||
start-x: 0
|
||||
start-z: 0
|
||||
offset-x: 0
|
||||
offset-z: 0
|
||||
# Island height - Lowest is 5.
|
||||
# It is the y coordinate of the bedrock block in the schem.
|
||||
island-height: 60
|
||||
# Use your own world generator for this world.
|
||||
# In this case, the plugin will not generate anything.
|
||||
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
||||
use-own-generator: true
|
||||
# Sea height (don't changes this mid-game unless you delete the world)
|
||||
# Minimum is 0, which means you are playing CaveBlock!
|
||||
# If sea height is less than about 10, then players will drop right through it
|
||||
# if it exists. Makes for an interesting variation on caveblock.
|
||||
sea-height: 0
|
||||
# Maximum number of islands in the world. Set to -1 or 0 for unlimited.
|
||||
# If the number of islands is greater than this number, it will stop players from creating islands.
|
||||
max-islands: 0
|
||||
# The default game mode for this world. Players will be set to this mode when they create
|
||||
# a new island for example. Options are SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR
|
||||
default-game-mode: SURVIVAL
|
||||
# The default biome for the overworld
|
||||
default-biome: MOUNTAINS
|
||||
# The maximum number of players a player can ban at any one time in this game mode.
|
||||
# The permission acidisland.ban.maxlimit.X where X is a number can also be used per player
|
||||
# -1 = unlimited
|
||||
ban-limit: -1
|
||||
#
|
||||
# This is cave... no height... only depth. Max 256.
|
||||
# Should not be less then island height.
|
||||
world-depth: 256
|
||||
# This indicate how many times block should be tried to generate.
|
||||
generation-tries: 2
|
||||
normal:
|
||||
#
|
||||
# Make over world roof of bedrock, if false, it will be made from stone
|
||||
roof: true
|
||||
# Make over world floor of bedrock, if false, it will be made from stone
|
||||
floor: true
|
||||
# Main block of which world will be generated.
|
||||
main-block: STONE
|
||||
# Blocks that will occasionally replace main block by random chance.
|
||||
# Blocks will replace only main-block and will try to create packs that
|
||||
# are set in their strings. Chance of spawning also is required.
|
||||
# For materials first string must be MATERIAL, for entity: ENTITY.
|
||||
# Entities spawned via generator are not protected from despawing.
|
||||
# Working only with 2 high mobs currently.
|
||||
# Example:
|
||||
# MATERIAL:DIAMOND:100:5 - means there is 100% chace of spawing diamonds
|
||||
# where max amount in pack are 5 per each subchunk!
|
||||
blocks:
|
||||
- MATERIAL:DIAMOND_ORE:1:3
|
||||
- MATERIAL:GOLD_ORE:5:4
|
||||
- MATERIAL:IRON_ORE:5:4
|
||||
- MATERIAL:COAL_ORE:10:6
|
||||
- MATERIAL:EMERALD_ORE:1:1
|
||||
- MATERIAL:CLAY:10:6
|
||||
- MATERIAL:DIRT:10:10
|
||||
- MATERIAL:GRAVEL:20:6
|
||||
- MATERIAL:GRANITE:20:10
|
||||
- MATERIAL:ANDESITE:20:10
|
||||
- MATERIAL:DIORITE:30:8
|
||||
nether:
|
||||
# Generate Nether - if this is false, the nether world will not be made and access to
|
||||
# the nether will not occur. Other plugins may still enable portal usage.
|
||||
# Note: Some default challenges will not be possible if there is no nether.
|
||||
# Note that with a standard nether all players arrive at the same portal and entering a
|
||||
# portal will return them back to their islands.
|
||||
generate: true
|
||||
# Islands in Nether. Change to false for standard vanilla nether.
|
||||
islands: true
|
||||
# Nether trees are made if a player grows a tree in the nether (gravel and glowstone)
|
||||
# Applies to both vanilla and islands Nether
|
||||
trees: true
|
||||
# Nether spawn protection radius - this is the distance around the nether spawn
|
||||
# that will be protected from player interaction (breaking blocks, pouring lava etc.)
|
||||
# Minimum is 0 (not recommended), maximum is 100. Default is 25.
|
||||
# Only applies to vanilla nether
|
||||
spawn-radius: 25
|
||||
# Make over world roof of bedrock, if false, it will be made from stone
|
||||
roof: true
|
||||
# Make over world floor of bedrock, if false, it will be made from stone
|
||||
floor: true
|
||||
# Main block of which world will be generated.
|
||||
main-block: NETHERRACK
|
||||
# Blocks that will occasionally replace main block by random chance.
|
||||
# Blocks will replace only main-block and will try to create packs that
|
||||
# are set in their strings. Chance of spawning also is required.
|
||||
# For materials first string must be MATERIAL, for entity: ENTITY.
|
||||
# Entities spawned via generator are not protected from despawing.
|
||||
# Working only with 2 high mobs currently.
|
||||
# Example:
|
||||
# MATERIAL:DIAMOND:100:5 - means there is 100% chace of spawing diamonds
|
||||
# where max amount in pack are 5 per each subchunk!
|
||||
blocks:
|
||||
- MATERIAL:QUARTZ_ORE:30:5
|
||||
- MATERIAL:SOUL_SAND:40:10
|
||||
- MATERIAL:MAGMA_BLOCK:10:3
|
||||
- MATERIAL:GLOWSTONE:20:8
|
||||
- MATERIAL:LAVA:10:1
|
||||
end:
|
||||
generate: true
|
||||
islands: true
|
||||
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
||||
dragon-spawn: false
|
||||
# Make over world roof of bedrock, if false, it will be made from stone
|
||||
roof: true
|
||||
# Make over world floor of bedrock, if false, it will be made from stone
|
||||
floor: true
|
||||
# Main block of which world will be generated.
|
||||
main-block: END_STONE
|
||||
# Blocks that will occasionally replace main block by random chance.
|
||||
# Blocks will replace only main-block and will try to create packs that
|
||||
# are set in their strings. Chance of spawning also is required.
|
||||
# For materials first string must be MATERIAL, for entity: ENTITY.
|
||||
# Entities spawned via generator are not protected from despawing.
|
||||
# Working only with 2 high mobs currently.
|
||||
# Example:
|
||||
# MATERIAL:DIAMOND:100:5 - means there is 100% chace of spawing diamonds
|
||||
# where max amount in pack are 5 per each subchunk!
|
||||
blocks:
|
||||
- ENTITY:SHULKER:1:1
|
||||
# Mob white list - these mobs will NOT be removed when logging in or doing /cave
|
||||
remove-mobs-whitelist:
|
||||
- ZOMBIE_VILLAGER
|
||||
- WITHER
|
||||
- PIG_ZOMBIE
|
||||
- ENDERMAN
|
||||
# World flags. These are boolean settings for various flags for this world
|
||||
flags:
|
||||
CREEPER_DAMAGE: true
|
||||
OBSIDIAN_SCOOPING: true
|
||||
PISTON_PUSH: false
|
||||
ISLAND_RESPAWN: true
|
||||
CREEPER_GRIEFING: false
|
||||
ENDERMAN_GRIEFING: true
|
||||
CLEAN_SUPER_FLAT: false
|
||||
CHEST_DAMAGE: false
|
||||
PREVENT_TELEPORT_WHEN_FALLING: false
|
||||
ENTER_EXIT_MESSAGES: true
|
||||
ENDERMAN_DEATH_DROP: true
|
||||
OFFLINE_REDSTONE: true
|
||||
REMOVE_MOBS: true
|
||||
ENDER_CHEST: false
|
||||
ITEM_FRAME_DAMAGE: false
|
||||
# These are the default protection settings for new islands.
|
||||
# The value is the minimum island rank required allowed to do the action
|
||||
# Ranks are: Visitor = 0, Member = 900, Owner = 1000
|
||||
default-island-flags:
|
||||
HURT_ANIMALS: 500
|
||||
REDSTONE: 500
|
||||
BUCKET: 500
|
||||
LOCK: 0
|
||||
ENDER_PEARL: 500
|
||||
DOOR: 500
|
||||
FURNACE: 500
|
||||
ANVIL: 500
|
||||
FISH_SCOOPING: 500
|
||||
FIRE: 500
|
||||
END_PORTAL: 500
|
||||
BREEDING: 500
|
||||
HURT_VILLAGERS: 500
|
||||
TNT: 500
|
||||
TURTLE_EGGS: 500
|
||||
FROST_WALKER: 500
|
||||
COLLECT_LAVA: 500
|
||||
LEVER: 500
|
||||
HURT_MONSTERS: 0
|
||||
RIDING: 500
|
||||
NAME_TAG: 500
|
||||
ARMOR_STAND: 500
|
||||
TRADING: 0
|
||||
EGGS: 500
|
||||
ITEM_DROP: 0
|
||||
NOTE_BLOCK: 0
|
||||
NETHER_PORTAL: 500
|
||||
ITEM_PICKUP: 0
|
||||
CROP_TRAMPLE: 500
|
||||
BREWING: 500
|
||||
DROPPER: 500
|
||||
COLLECT_WATER: 500
|
||||
BUTTON: 500
|
||||
FIRE_EXTINGUISH: 500
|
||||
BEACON: 500
|
||||
TRAPDOOR: 500
|
||||
PRESSURE_PLATE: 0
|
||||
PLACE_BLOCKS: 500
|
||||
ITEM_FRAME: 500
|
||||
CRAFTING: 0
|
||||
SHEARING: 500
|
||||
ENCHANTING: 0
|
||||
SPAWN_EGGS: 500
|
||||
BED: 500
|
||||
MILKING: 0
|
||||
DISPENSER: 500
|
||||
GATE: 0
|
||||
EXPERIENCE_PICKUP: 500
|
||||
HOPPER: 500
|
||||
LEASH: 500
|
||||
MOUNT_INVENTORY: 500
|
||||
BREAK_BLOCKS: 500
|
||||
CHORUS_FRUIT: 500
|
||||
CONTAINER: 500
|
||||
JUKEBOX: 500
|
||||
# These are the default settings for new islands
|
||||
default-island-settings:
|
||||
PVP_END: false
|
||||
ANIMAL_SPAWN: true
|
||||
PVP_NETHER: false
|
||||
MONSTER_SPAWN: true
|
||||
FIRE_SPREAD: true
|
||||
PVP_OVERWORLD: false
|
||||
# These are the settings visible to users. (Not implemented yet)
|
||||
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
||||
visible-settings: []
|
||||
# Visitor banned commands - Visitors to islands cannot use these commands in this world
|
||||
visitor-banned-commands:
|
||||
- spawner
|
||||
- spawnmob
|
||||
island:
|
||||
# Default max team size
|
||||
# Permission size cannot be less than the default below.
|
||||
max-team-size: 4
|
||||
# Default maximum number of homes a player can have. Min = 1
|
||||
# Accessed via /cave sethome <number> or /cave go <number>
|
||||
max-homes: 1
|
||||
reset:
|
||||
# How many resets a player is allowed (override with /cbadmin clearresets <player>)
|
||||
# Value of -1 means unlimited, 0 means hardcore - no resets.
|
||||
# Example, 2 resets means they get 2 resets or 3 islands lifetime
|
||||
reset-limit: -1
|
||||
# Kicked or leaving players lose resets
|
||||
# Players who leave a team will lose an island reset chance
|
||||
# If a player has zero resets left and leaves a team, they cannot make a new
|
||||
# island by themselves and can only join a team.
|
||||
# Leave this true to avoid players exploiting free islands
|
||||
leavers-lose-reset: false
|
||||
# Allow kicked players to keep their inventory.
|
||||
# If false, kicked player's inventory will be thrown at the island leader if the
|
||||
# kicked player is online and in the island world.
|
||||
kicked-keep-inventory: false
|
||||
on-join:
|
||||
# What the plugin should reset when the player joins or creates an island
|
||||
# Reset Money - if this is true, will reset the player's money to the starting money
|
||||
# Recommendation is that this is set to true, but if you run multi-worlds
|
||||
# make sure your economy handles multi-worlds too.
|
||||
money: false
|
||||
# Reset inventory - if true, the player's inventory will be cleared.
|
||||
# Note: if you have MultiInv running or a similar inventory control plugin, that
|
||||
# plugin may still reset the inventory when the world changes.
|
||||
inventory: false
|
||||
# Reset Ender Chest - if true, the player's Ender Chest will be cleared.
|
||||
ender-chest: false
|
||||
on-leave:
|
||||
# What the plugin should reset when the player leaves or is kicked from an island
|
||||
# Reset Money - if this is true, will reset the player's money to the starting money
|
||||
# Recommendation is that this is set to true, but if you run multi-worlds
|
||||
# make sure your economy handles multi-worlds too.
|
||||
money: false
|
||||
# Reset inventory - if true, the player's inventory will be cleared.
|
||||
# Note: if you have MultiInv running or a similar inventory control plugin, that
|
||||
# plugin may still reset the inventory when the world changes.
|
||||
inventory: false
|
||||
# Reset Ender Chest - if true, the player's Ender Chest will be cleared.
|
||||
ender-chest: false
|
||||
require-confirmation:
|
||||
reset: true
|
||||
# Have player's respawn on their island if they die
|
||||
respawn-on-island: false
|
||||
sethome:
|
||||
nether:
|
||||
allow: true
|
||||
require-confirmation: true
|
||||
the-end:
|
||||
allow: true
|
||||
require-confirmation: true
|
||||
deaths:
|
||||
# Whether deaths are counted or not.
|
||||
counted: true
|
||||
# Maximum number of deaths to count. The death count can be used by add-ons.
|
||||
max: 10
|
||||
sum-team: false
|
||||
# When a player joins a team, reset their death count
|
||||
team-join-reset: true
|
||||
protection:
|
||||
# Geo restrict mobs.
|
||||
# Mobs that exit the island space where they were spawned will be removed.
|
||||
geo-limit-settings:
|
||||
- GHAST
|
||||
- BAT
|
||||
- BLAZE
|
||||
# Invincible visitors. List of damages that will not affect visitors.
|
||||
# Make list blank if visitors should receive all damages
|
||||
invincible-visitors:
|
||||
- BLOCK_EXPLOSION
|
||||
- CONTACT
|
||||
- CUSTOM
|
||||
- DROWNING
|
||||
- ENTITY_ATTACK
|
||||
- ENTITY_EXPLOSION
|
||||
- FALL
|
||||
- FALLING_BLOCK
|
||||
- FIRE
|
||||
- FIRE_TICK
|
||||
- LAVA
|
||||
- LIGHTNING
|
||||
- MAGIC
|
||||
- POISON
|
||||
- PROJECTILE
|
||||
- STARVATION
|
||||
- SUFFOCATION
|
||||
- THORNS
|
||||
- WITHER
|
||||
- DRAGON_BREATH
|
||||
- FLY_INTO_WALL
|
||||
- HOT_FLOOR
|
||||
- CRAMMING
|
||||
- VOID
|
||||
panel:
|
||||
# Whether GUIs should be closed when the player clicks outside.
|
||||
close-on-click-outside: true
|
||||
do-not-edit-these-settings:
|
||||
# These settings should not be edited
|
||||
reset-epoch: 0
|
||||
uniqueId: config
|
12
src/main/resources/locales/en-US.yml
Normal file
12
src/main/resources/locales/en-US.yml
Normal file
@ -0,0 +1,12 @@
|
||||
###########################################################################################
|
||||
# This is a YML file. Be careful when editing. Check your edits in a YAML checker like #
|
||||
# the one at http://yaml-online-parser.appspot.com #
|
||||
###########################################################################################
|
||||
|
||||
caveblock:
|
||||
sign:
|
||||
line0: "&cCaveBlock"
|
||||
line1: "Welcome!"
|
||||
line2: "[name]"
|
||||
line3: "Start digging! &c<3"
|
||||
|
310
src/main/resources/schems/end-island
Normal file
310
src/main/resources/schems/end-island
Normal file
@ -0,0 +1,310 @@
|
||||
blocks:
|
||||
-3,0,0:
|
||||
bd: minecraft:obsidian
|
||||
-3,1,0:
|
||||
bd: minecraft:end_stone
|
||||
-2,-1,0:
|
||||
bd: minecraft:end_stone
|
||||
-2,0,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,0,-1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,0,0:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,0,1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,0,2:
|
||||
bd: minecraft:end_stone
|
||||
-2,1,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,1,-1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,1,0:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,1,1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-2,1,2:
|
||||
bd: minecraft:end_stone
|
||||
-2,2,-1:
|
||||
bd: minecraft:end_stone
|
||||
-2,2,0:
|
||||
bd: minecraft:end_stone
|
||||
-2,3,-1:
|
||||
bd: minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]
|
||||
-2,4,-1:
|
||||
bd: minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]
|
||||
-2,5,-1:
|
||||
bd: minecraft:chorus_flower[age=0]
|
||||
-1,-2,0:
|
||||
bd: minecraft:end_stone
|
||||
-1,-1,-1:
|
||||
bd: minecraft:end_stone
|
||||
-1,-1,0:
|
||||
bd: minecraft:end_stone
|
||||
-1,-1,1:
|
||||
bd: minecraft:end_stone
|
||||
-1,0,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-1,0,0:
|
||||
bd: minecraft:purple_shulker_box[facing=up]
|
||||
inventory:
|
||||
'0':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: OBSIDIAN
|
||||
'11':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: ENDERMAN_SPAWN_EGG
|
||||
'15':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: ELYTRA
|
||||
'22':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: END_ROD
|
||||
-1,0,1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-1,0,2:
|
||||
bd: minecraft:end_stone
|
||||
-1,1,-2:
|
||||
bd: minecraft:end_rod[facing=east]
|
||||
-1,1,-1:
|
||||
bd: minecraft:air
|
||||
-1,1,0:
|
||||
bd: minecraft:air
|
||||
-1,1,1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
-1,1,2:
|
||||
bd: minecraft:end_stone
|
||||
-1,1,3:
|
||||
bd: minecraft:end_stone
|
||||
-1,2,-2:
|
||||
bd: minecraft:end_stone
|
||||
-1,2,-1:
|
||||
bd: minecraft:end_stone
|
||||
-1,2,0:
|
||||
bd: minecraft:end_stone
|
||||
-1,2,1:
|
||||
bd: minecraft:end_stone
|
||||
-1,3,-3:
|
||||
bd: minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=true,west=false]
|
||||
-1,4,-3:
|
||||
bd: minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]
|
||||
-1,5,-3:
|
||||
bd: minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]
|
||||
-1,6,-4:
|
||||
bd: minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=true,west=false]
|
||||
-1,6,-3:
|
||||
bd: minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=false,west=false]
|
||||
-1,7,-4:
|
||||
bd: minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]
|
||||
-1,8,-4:
|
||||
bd: minecraft:chorus_flower[age=1]
|
||||
0,-2,-1:
|
||||
bd: minecraft:end_stone
|
||||
0,-2,1:
|
||||
bd: minecraft:end_stone
|
||||
0,-1,-2:
|
||||
bd: minecraft:end_stone
|
||||
0,-1,-1:
|
||||
bd: minecraft:end_stone
|
||||
0,-1,0:
|
||||
bd: minecraft:end_stone
|
||||
0,-1,1:
|
||||
bd: minecraft:end_stone
|
||||
0,-1,2:
|
||||
bd: minecraft:end_stone
|
||||
0,0,-3:
|
||||
bd: minecraft:obsidian
|
||||
0,0,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
0,0,-1:
|
||||
bd: minecraft:air
|
||||
0,0,0:
|
||||
bd: minecraft:air
|
||||
0,0,1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
0,0,2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
0,0,3:
|
||||
bd: minecraft:obsidian
|
||||
0,1,-3:
|
||||
bd: minecraft:end_stone
|
||||
0,1,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
0,1,-1:
|
||||
bd: minecraft:air
|
||||
0,1,0:
|
||||
bd: minecraft:air
|
||||
0,1,1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
0,1,2:
|
||||
bd: minecraft:end_stone
|
||||
0,1,3:
|
||||
bd: minecraft:end_stone_bricks
|
||||
0,2,-3:
|
||||
bd: minecraft:end_stone
|
||||
0,2,-2:
|
||||
bd: minecraft:end_stone
|
||||
0,2,-1:
|
||||
bd: minecraft:end_stone
|
||||
0,2,0:
|
||||
bd: minecraft:end_stone
|
||||
0,2,1:
|
||||
bd: minecraft:end_stone
|
||||
0,3,-3:
|
||||
bd: minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=true]
|
||||
0,6,-3:
|
||||
bd: minecraft:chorus_flower[age=1]
|
||||
1,-2,0:
|
||||
bd: minecraft:end_stone
|
||||
1,-1,-1:
|
||||
bd: minecraft:end_stone
|
||||
1,-1,0:
|
||||
bd: minecraft:end_stone
|
||||
1,-1,1:
|
||||
bd: minecraft:end_stone
|
||||
1,0,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
1,0,-1:
|
||||
bd: minecraft:air
|
||||
1,0,0:
|
||||
bd: minecraft:air
|
||||
1,0,1:
|
||||
bd: minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]
|
||||
1,0,2:
|
||||
bd: minecraft:end_stone
|
||||
1,1,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
1,1,-1:
|
||||
bd: minecraft:air
|
||||
1,1,0:
|
||||
bd: minecraft:air
|
||||
1,1,1:
|
||||
bd: minecraft:air
|
||||
1,1,2:
|
||||
bd: minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]
|
||||
1,1,3:
|
||||
bd: minecraft:end_stone
|
||||
1,2,-2:
|
||||
bd: minecraft:end_stone
|
||||
1,2,-1:
|
||||
bd: minecraft:end_stone
|
||||
1,2,0:
|
||||
bd: minecraft:air
|
||||
1,2,1:
|
||||
bd: minecraft:air
|
||||
1,2,2:
|
||||
bd: minecraft:air
|
||||
1,3,0:
|
||||
bd: minecraft:air
|
||||
1,3,1:
|
||||
bd: minecraft:air
|
||||
1,3,2:
|
||||
bd: minecraft:air
|
||||
2,-1,-1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
2,-1,0:
|
||||
bd: minecraft:end_stone
|
||||
2,0,-2:
|
||||
bd: minecraft:end_stone
|
||||
2,0,-1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
2,0,0:
|
||||
bd: minecraft:end_stone
|
||||
2,0,1:
|
||||
bd: minecraft:end_stone
|
||||
2,0,2:
|
||||
bd: minecraft:end_stone
|
||||
2,1,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
2,1,-1:
|
||||
bd: minecraft:end_stone
|
||||
2,1,0:
|
||||
bd: minecraft:end_rod[facing=up]
|
||||
2,1,2:
|
||||
bd: minecraft:end_stone
|
||||
2,1,3:
|
||||
bd: minecraft:end_stone_bricks
|
||||
2,2,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
2,2,-1:
|
||||
bd: minecraft:end_stone
|
||||
2,2,0:
|
||||
bd: minecraft:end_stone
|
||||
2,2,1:
|
||||
bd: minecraft:end_stone
|
||||
2,3,-2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
3,0,-2:
|
||||
bd: minecraft:end_stone
|
||||
3,0,0:
|
||||
bd: minecraft:obsidian
|
||||
3,1,-2:
|
||||
bd: minecraft:end_stone
|
||||
3,1,-1:
|
||||
bd: minecraft:end_stone_bricks
|
||||
3,1,1:
|
||||
bd: minecraft:end_stone
|
||||
3,1,2:
|
||||
bd: minecraft:end_stone_bricks
|
||||
3,2,-2:
|
||||
bd: minecraft:end_stone
|
||||
3,2,-1:
|
||||
bd: minecraft:end_stone
|
||||
3,3,-2:
|
||||
bd: minecraft:end_stone
|
||||
3,4,-2:
|
||||
bd: minecraft:end_stone
|
||||
3,5,-2:
|
||||
bd: minecraft:end_stone
|
||||
3,6,-2:
|
||||
bd: minecraft:end_stone
|
||||
3,7,-2:
|
||||
bd: minecraft:obsidian
|
||||
-1,1,-1:
|
||||
bd: minecraft:air
|
||||
-1,1,0:
|
||||
bd: minecraft:air
|
||||
0,0,-1:
|
||||
bd: minecraft:air
|
||||
0,1,-1:
|
||||
bd: minecraft:air
|
||||
0,1,0:
|
||||
bd: minecraft:air
|
||||
1,0,-1:
|
||||
bd: minecraft:air
|
||||
1,0,0:
|
||||
bd: minecraft:air
|
||||
1,1,-1:
|
||||
bd: minecraft:air
|
||||
1,1,0:
|
||||
bd: minecraft:air
|
||||
1,1,1:
|
||||
bd: minecraft:air
|
||||
1,2,0:
|
||||
bd: minecraft:air
|
||||
1,2,1:
|
||||
bd: minecraft:air
|
||||
1,2,2:
|
||||
bd: minecraft:air
|
||||
1,3,0:
|
||||
bd: minecraft:air
|
||||
1,3,1:
|
||||
bd: minecraft:air
|
||||
1,3,2:
|
||||
bd: minecraft:air
|
||||
attached:
|
||||
0,0,0:
|
||||
bd: minecraft:sign[rotation=8,waterlogged=false]
|
||||
lines:
|
||||
- '[spawn_here]'
|
||||
- ''
|
||||
- ''
|
||||
- ''
|
||||
size:
|
||||
xsize: 7
|
||||
ysize: 11
|
||||
zsize: 8
|
BIN
src/main/resources/schems/end-island.schem
Normal file
BIN
src/main/resources/schems/end-island.schem
Normal file
Binary file not shown.
1162
src/main/resources/schems/island
Normal file
1162
src/main/resources/schems/island
Normal file
File diff suppressed because it is too large
Load Diff
BIN
src/main/resources/schems/island.schem
Normal file
BIN
src/main/resources/schems/island.schem
Normal file
Binary file not shown.
899
src/main/resources/schems/nether-island
Normal file
899
src/main/resources/schems/nether-island
Normal file
@ -0,0 +1,899 @@
|
||||
blocks:
|
||||
-6,-14,-6:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-6,-14,-5:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-6,-14,-4:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-6,-14,-3:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-6,-14,-2:
|
||||
bd: minecraft:stone_bricks
|
||||
-6,-14,-1:
|
||||
bd: minecraft:stone_bricks
|
||||
-6,-14,0:
|
||||
bd: minecraft:stone_bricks
|
||||
-6,-13,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-6,-12,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-6,-12,-4:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=east]
|
||||
-6,-12,-3:
|
||||
bd: minecraft:end_portal_frame[eye=false,facing=east]
|
||||
-6,-12,-2:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=east]
|
||||
-6,-11,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-6,-10,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-6,-9,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-5,-14,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-5,-14,-5:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-5,-14,-4:
|
||||
bd: minecraft:lava[level=0]
|
||||
-5,-14,-3:
|
||||
bd: minecraft:lava[level=0]
|
||||
-5,-14,-2:
|
||||
bd: minecraft:lava[level=0]
|
||||
-5,-14,-1:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-5,-12,-5:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=south]
|
||||
-5,-12,-1:
|
||||
bd: minecraft:end_portal_frame[eye=false,facing=north]
|
||||
-5,-9,-6:
|
||||
bd: minecraft:mossy_stone_bricks
|
||||
-5,-1,-5:
|
||||
bd: minecraft:netherrack
|
||||
-5,-1,-4:
|
||||
bd: minecraft:netherrack
|
||||
-5,-1,-3:
|
||||
bd: minecraft:netherrack
|
||||
-5,0,-5:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
-5,0,-4:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
-5,0,-3:
|
||||
bd: minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]
|
||||
-5,1,-5:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
-4,-14,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-4,-14,-5:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-4,-14,-4:
|
||||
bd: minecraft:lava[level=0]
|
||||
-4,-14,-3:
|
||||
bd: minecraft:lava[level=0]
|
||||
-4,-14,-2:
|
||||
bd: minecraft:lava[level=0]
|
||||
-4,-14,-1:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-4,-14,0:
|
||||
bd: minecraft:stone_bricks
|
||||
-4,-13,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-4,-12,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-4,-12,-5:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=south]
|
||||
-4,-12,-1:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=north]
|
||||
-4,-11,-6:
|
||||
bd: minecraft:stone_bricks
|
||||
-4,-10,-6:
|
||||
bd: minecraft:mossy_stone_bricks
|
||||
-4,-1,-5:
|
||||
bd: minecraft:netherrack
|
||||
-4,-1,-4:
|
||||
bd: minecraft:netherrack
|
||||
-4,-1,-3:
|
||||
bd: minecraft:netherrack
|
||||
-4,0,-5:
|
||||
bd: minecraft:netherrack
|
||||
-4,1,-5:
|
||||
bd: minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]
|
||||
-3,-14,-5:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-3,-14,-4:
|
||||
bd: minecraft:lava[level=0]
|
||||
-3,-14,-3:
|
||||
bd: minecraft:lava[level=0]
|
||||
-3,-14,-2:
|
||||
bd: minecraft:lava[level=0]
|
||||
-3,-14,-1:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-3,-12,-5:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=south]
|
||||
-3,-12,-1:
|
||||
bd: minecraft:end_portal_frame[eye=false,facing=north]
|
||||
-3,-2,-2:
|
||||
bd: minecraft:soul_sand
|
||||
-3,-1,-5:
|
||||
bd: minecraft:netherrack
|
||||
-3,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
-3,-1,-3:
|
||||
bd: minecraft:nether_bricks
|
||||
-3,-1,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
-3,-1,-1:
|
||||
bd: minecraft:nether_bricks
|
||||
-3,-1,0:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,-14,-5:
|
||||
bd: minecraft:stone_bricks
|
||||
-2,-14,-4:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-2,-14,-3:
|
||||
bd: minecraft:stone_bricks
|
||||
-2,-14,-2:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-2,-14,-1:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
-2,-14,0:
|
||||
bd: minecraft:stone_bricks
|
||||
-2,-13,-5: {}
|
||||
-2,-12,-4:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=west]
|
||||
-2,-12,-3:
|
||||
bd: minecraft:end_portal_frame[eye=false,facing=west]
|
||||
-2,-12,-2:
|
||||
bd: minecraft:end_portal_frame[eye=true,facing=west]
|
||||
-2,-3,-2:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
-2,-2,-4:
|
||||
bd: minecraft:netherrack
|
||||
-2,-2,-3:
|
||||
bd: minecraft:netherrack
|
||||
-2,-2,-2:
|
||||
bd: minecraft:netherrack
|
||||
-2,-2,-1:
|
||||
bd: minecraft:netherrack
|
||||
-2,-2,0:
|
||||
bd: minecraft:netherrack
|
||||
-2,-1,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,-1,-3:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,-1,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,-1,-1:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,-1,0:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,-1,1:
|
||||
bd: minecraft:nether_bricks
|
||||
-2,0,-5:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=false]
|
||||
-2,1,-5:
|
||||
bd: minecraft:air
|
||||
-1,-14,-5:
|
||||
bd: minecraft:stone_bricks
|
||||
-1,-14,-4:
|
||||
bd: minecraft:stone_bricks
|
||||
-1,-14,-3:
|
||||
bd: minecraft:stone_bricks
|
||||
-1,-14,-2:
|
||||
bd: minecraft:stone_bricks
|
||||
-1,-14,-1:
|
||||
bd: minecraft:stone_bricks
|
||||
-1,-13,-4:
|
||||
bd: minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]
|
||||
-1,-13,-3:
|
||||
bd: minecraft:spawner
|
||||
spawnedType: BLAZE
|
||||
delay: 203
|
||||
maxNearbyEntities: 6
|
||||
maxSpawnDelay: 800
|
||||
minSpawnDelay: 200
|
||||
requiredPlayerRange: 8
|
||||
spawnRange: 4
|
||||
-1,-13,-2:
|
||||
bd: minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]
|
||||
-1,-6,-7:
|
||||
bd: minecraft:obsidian
|
||||
-1,-6,-6:
|
||||
bd: minecraft:obsidian
|
||||
-1,-5,-2:
|
||||
bd: minecraft:obsidian
|
||||
-1,-4,-2:
|
||||
bd: minecraft:magma_block
|
||||
-1,-3,-2:
|
||||
bd: minecraft:gravel
|
||||
-1,-2,-4:
|
||||
bd: minecraft:netherrack
|
||||
-1,-2,-3:
|
||||
bd: minecraft:netherrack
|
||||
-1,-2,-2:
|
||||
bd: minecraft:netherrack
|
||||
-1,-2,-1:
|
||||
bd: minecraft:netherrack
|
||||
-1,-2,0:
|
||||
bd: minecraft:netherrack
|
||||
-1,-1,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
-1,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
-1,-1,-3:
|
||||
bd: minecraft:soul_sand
|
||||
-1,-1,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
-1,-1,-1:
|
||||
bd: minecraft:nether_bricks
|
||||
-1,-1,0:
|
||||
bd: minecraft:nether_bricks
|
||||
-1,-1,1:
|
||||
bd: minecraft:nether_bricks
|
||||
-1,0,-5:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=true]
|
||||
-1,0,-3:
|
||||
bd: minecraft:nether_wart[age=3]
|
||||
0,-14,-5:
|
||||
bd: minecraft:stone_bricks
|
||||
0,-14,-4:
|
||||
bd: minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]
|
||||
0,-14,-3:
|
||||
bd: minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]
|
||||
0,-14,-2:
|
||||
bd: minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]
|
||||
0,-13,-4: {}
|
||||
0,-6,-7:
|
||||
bd: minecraft:obsidian
|
||||
0,-6,-6:
|
||||
bd: minecraft:obsidian
|
||||
0,-5,-8:
|
||||
bd: minecraft:obsidian
|
||||
0,-5,-5:
|
||||
bd: minecraft:obsidian
|
||||
0,-5,-3:
|
||||
bd: minecraft:obsidian
|
||||
0,-5,-2:
|
||||
bd: minecraft:bedrock
|
||||
0,-5,-1:
|
||||
bd: minecraft:obsidian
|
||||
0,-4,-8:
|
||||
bd: minecraft:obsidian
|
||||
0,-4,-5:
|
||||
bd: minecraft:obsidian
|
||||
0,-4,-3:
|
||||
bd: minecraft:magma_block
|
||||
0,-4,-2:
|
||||
bd: minecraft:gravel
|
||||
0,-4,-1:
|
||||
bd: minecraft:magma_block
|
||||
0,-3,-8:
|
||||
bd: minecraft:obsidian
|
||||
0,-3,-5:
|
||||
bd: minecraft:obsidian
|
||||
0,-3,-4:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
0,-3,-3:
|
||||
bd: minecraft:gravel
|
||||
0,-3,-1:
|
||||
bd: minecraft:gravel
|
||||
0,-3,0:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
0,-2,-7:
|
||||
bd: minecraft:obsidian
|
||||
0,-2,-6:
|
||||
bd: minecraft:obsidian
|
||||
0,-2,-5:
|
||||
bd: minecraft:soul_sand
|
||||
0,-2,-4:
|
||||
bd: minecraft:netherrack
|
||||
0,-2,-3:
|
||||
bd: minecraft:netherrack
|
||||
0,-2,-2:
|
||||
bd: minecraft:netherrack
|
||||
0,-2,-1:
|
||||
bd: minecraft:netherrack
|
||||
0,-2,0:
|
||||
bd: minecraft:netherrack
|
||||
0,-2,1:
|
||||
bd: minecraft:soul_sand
|
||||
0,-1,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
0,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
0,-1,-3:
|
||||
bd: minecraft:soul_sand
|
||||
0,-1,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
0,-1,-1:
|
||||
bd: minecraft:nether_bricks
|
||||
0,-1,0:
|
||||
bd: minecraft:nether_bricks
|
||||
0,-1,1:
|
||||
bd: minecraft:nether_bricks
|
||||
0,0,-5:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=true]
|
||||
0,0,-3:
|
||||
bd: minecraft:nether_wart[age=3]
|
||||
0,0,-1:
|
||||
bd: minecraft:chest[facing=south,type=single,waterlogged=false]
|
||||
inventory:
|
||||
'0':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: LAVA_BUCKET
|
||||
'6':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: NETHER_BRICKS
|
||||
amount: 2
|
||||
'8':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: CLOCK
|
||||
'10':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: FLINT_AND_STEEL
|
||||
'11':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: SKELETON_HORSE_SPAWN_EGG
|
||||
'16':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: GHAST_SPAWN_EGG
|
||||
amount: 3
|
||||
'18':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: NETHER_BRICK_FENCE
|
||||
amount: 32
|
||||
'21':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: GOLD_INGOT
|
||||
amount: 4
|
||||
'25':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: RED_NETHER_BRICKS
|
||||
amount: 5
|
||||
0,0,0:
|
||||
bd: minecraft:air
|
||||
0,0,1:
|
||||
bd: minecraft:air
|
||||
0,1,0:
|
||||
bd: minecraft:air
|
||||
1,-14,-5:
|
||||
bd: minecraft:stone_bricks
|
||||
1,-14,-4: {}
|
||||
1,-6,-7:
|
||||
bd: minecraft:obsidian
|
||||
1,-6,-6:
|
||||
bd: minecraft:obsidian
|
||||
1,-6,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
1,-6,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
1,-5,-4: {}
|
||||
1,-5,-2:
|
||||
bd: minecraft:obsidian
|
||||
1,-4,-2:
|
||||
bd: minecraft:magma_block
|
||||
1,-3,-2:
|
||||
bd: minecraft:gravel
|
||||
1,-3,-1:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
1,-2,-4:
|
||||
bd: minecraft:netherrack
|
||||
1,-2,-3:
|
||||
bd: minecraft:netherrack
|
||||
1,-2,-2:
|
||||
bd: minecraft:netherrack
|
||||
1,-2,-1:
|
||||
bd: minecraft:netherrack
|
||||
1,-2,0:
|
||||
bd: minecraft:netherrack
|
||||
1,-1,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
1,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
1,-1,-3:
|
||||
bd: minecraft:soul_sand
|
||||
1,-1,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
1,-1,-1:
|
||||
bd: minecraft:nether_bricks
|
||||
1,-1,0:
|
||||
bd: minecraft:nether_bricks
|
||||
1,-1,1:
|
||||
bd: minecraft:nether_bricks
|
||||
1,0,-5:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=true]
|
||||
1,0,-4: {}
|
||||
1,0,-3:
|
||||
bd: minecraft:nether_wart[age=3]
|
||||
2,-14,-5:
|
||||
bd: minecraft:stone_bricks
|
||||
2,-7,-4:
|
||||
bd: minecraft:netherrack
|
||||
2,-7,-3:
|
||||
bd: minecraft:netherrack
|
||||
2,-6,-6:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-6,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-6,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-6,-3:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-5,-3:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=false]
|
||||
2,-3,-2:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
2,-2,-4:
|
||||
bd: minecraft:netherrack
|
||||
2,-2,-3:
|
||||
bd: minecraft:netherrack
|
||||
2,-2,-2:
|
||||
bd: minecraft:netherrack
|
||||
2,-2,-1:
|
||||
bd: minecraft:netherrack
|
||||
2,-2,0:
|
||||
bd: minecraft:netherrack
|
||||
2,-1,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-1,-3:
|
||||
bd: minecraft:soul_sand
|
||||
2,-1,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-1,-1:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-1,0:
|
||||
bd: minecraft:nether_bricks
|
||||
2,-1,1:
|
||||
bd: minecraft:nether_bricks
|
||||
2,0,-5:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=true]
|
||||
2,0,-3:
|
||||
bd: minecraft:nether_wart[age=3]
|
||||
2,0,-2:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=false,west=false]
|
||||
2,0,-1:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=false,west=false]
|
||||
2,0,0:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=false,west=false]
|
||||
2,1,-5:
|
||||
bd: minecraft:air
|
||||
2,15,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
2,15,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
2,16,-5:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=false,west=false]
|
||||
2,16,-4:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=false,west=false]
|
||||
3,-14,-5:
|
||||
bd: minecraft:mossy_stone_bricks
|
||||
3,-14,-4: {}
|
||||
3,-14,-2:
|
||||
bd: minecraft:air
|
||||
3,-14,-1:
|
||||
bd: minecraft:stone_bricks
|
||||
3,-13,-5:
|
||||
bd: minecraft:mossy_stone_bricks
|
||||
3,-13,-2:
|
||||
bd: minecraft:air
|
||||
3,-13,-1:
|
||||
bd: minecraft:mossy_stone_bricks
|
||||
3,-12,-4:
|
||||
bd: minecraft:iron_bars[east=false,north=false,south=true,waterlogged=false,west=false]
|
||||
3,-12,-3:
|
||||
bd: minecraft:iron_bars[east=false,north=true,south=true,waterlogged=false,west=false]
|
||||
3,-12,-2:
|
||||
bd: minecraft:iron_bars[east=false,north=true,south=true,waterlogged=false,west=false]
|
||||
3,-12,-1:
|
||||
bd: minecraft:mossy_stone_bricks
|
||||
3,-11,-3:
|
||||
bd: minecraft:stone_bricks
|
||||
3,-11,-2:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
3,-11,-1:
|
||||
bd: minecraft:cracked_stone_bricks
|
||||
3,-10,-3:
|
||||
bd: minecraft:air
|
||||
3,-7,-5:
|
||||
bd: minecraft:netherrack
|
||||
3,-7,-4:
|
||||
bd: minecraft:netherrack
|
||||
3,-7,-3:
|
||||
bd: minecraft:netherrack
|
||||
3,-7,-2:
|
||||
bd: minecraft:netherrack
|
||||
3,-6,-6:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-6,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-6,-4:
|
||||
bd: minecraft:gravel
|
||||
3,-6,-3:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-6,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-5,-3:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=false,west=true]
|
||||
3,-5,-2:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=false,west=false]
|
||||
3,-2,-2:
|
||||
bd: minecraft:soul_sand
|
||||
3,-2,-1:
|
||||
bd: minecraft:netherrack
|
||||
3,-1,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-1,-3:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-1,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
3,-1,-1:
|
||||
bd: minecraft:netherrack
|
||||
3,-1,0:
|
||||
bd: minecraft:nether_bricks
|
||||
3,0,-5:
|
||||
bd: minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=true]
|
||||
3,0,-2:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=true]
|
||||
3,0,-1:
|
||||
bd: minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]
|
||||
3,0,0:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=true]
|
||||
3,14,-4:
|
||||
bd: minecraft:netherrack
|
||||
3,14,-3:
|
||||
bd: minecraft:netherrack
|
||||
3,15,-6:
|
||||
bd: minecraft:nether_bricks
|
||||
3,15,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
3,15,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
3,15,-3:
|
||||
bd: minecraft:nether_bricks
|
||||
3,16,-5:
|
||||
bd: minecraft:chest[facing=east,type=single,waterlogged=false]
|
||||
inventory:
|
||||
'0':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: IRON_HORSE_ARMOR
|
||||
'8':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: SADDLE
|
||||
'11':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: COCOA_BEANS
|
||||
'15':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: LAVA_BUCKET
|
||||
'22':
|
||||
==: org.bukkit.inventory.ItemStack
|
||||
v: 1631
|
||||
type: ENDER_EYE
|
||||
4,-10,-2: {}
|
||||
4,-8,-2:
|
||||
bd: minecraft:glowstone
|
||||
4,-8,-1:
|
||||
bd: minecraft:glowstone
|
||||
4,-7,-6:
|
||||
bd: minecraft:netherrack
|
||||
4,-7,-5:
|
||||
bd: minecraft:netherrack
|
||||
4,-7,-4:
|
||||
bd: minecraft:netherrack
|
||||
4,-7,-3:
|
||||
bd: minecraft:netherrack
|
||||
4,-7,-2:
|
||||
bd: minecraft:netherrack
|
||||
4,-7,-1:
|
||||
bd: minecraft:netherrack
|
||||
4,-6,-6:
|
||||
bd: minecraft:gravel
|
||||
4,-6,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
4,-6,-4:
|
||||
bd: minecraft:gravel
|
||||
4,-1,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
4,0,-5:
|
||||
bd: minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=true]
|
||||
4,14,-5:
|
||||
bd: minecraft:netherrack
|
||||
4,14,-4:
|
||||
bd: minecraft:netherrack
|
||||
4,14,-3:
|
||||
bd: minecraft:netherrack
|
||||
4,14,-2:
|
||||
bd: minecraft:netherrack
|
||||
4,15,-6:
|
||||
bd: minecraft:nether_bricks
|
||||
4,15,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
4,15,-4:
|
||||
bd: minecraft:nether_bricks
|
||||
4,15,-3:
|
||||
bd: minecraft:nether_bricks
|
||||
4,15,-2:
|
||||
bd: minecraft:nether_bricks
|
||||
4,16,-2: {}
|
||||
5,-9,-2:
|
||||
bd: minecraft:glowstone
|
||||
5,-9,-1:
|
||||
bd: minecraft:glowstone
|
||||
5,-8,-2:
|
||||
bd: minecraft:netherrack
|
||||
5,-8,-1:
|
||||
bd: minecraft:netherrack
|
||||
5,-8,0:
|
||||
bd: minecraft:glowstone
|
||||
5,-7,-6:
|
||||
bd: minecraft:netherrack
|
||||
5,-7,-5:
|
||||
bd: minecraft:netherrack
|
||||
5,-7,-4:
|
||||
bd: minecraft:netherrack
|
||||
5,-7,-3:
|
||||
bd: minecraft:netherrack
|
||||
5,-7,-2:
|
||||
bd: minecraft:netherrack
|
||||
5,-7,-1:
|
||||
bd: minecraft:netherrack
|
||||
5,-6,-5:
|
||||
bd: minecraft:gravel
|
||||
5,-6,-3:
|
||||
bd: minecraft:spawner
|
||||
spawnedType: MAGMA_CUBE
|
||||
delay: 273
|
||||
maxNearbyEntities: 6
|
||||
maxSpawnDelay: 800
|
||||
minSpawnDelay: 200
|
||||
requiredPlayerRange: 8
|
||||
spawnRange: 4
|
||||
5,13,-2:
|
||||
bd: minecraft:glowstone
|
||||
5,13,-1:
|
||||
bd: minecraft:glowstone
|
||||
5,14,-6:
|
||||
bd: minecraft:netherrack
|
||||
5,14,-5:
|
||||
bd: minecraft:netherrack
|
||||
5,14,-4:
|
||||
bd: minecraft:netherrack
|
||||
5,14,-3:
|
||||
bd: minecraft:netherrack
|
||||
5,14,-2:
|
||||
bd: minecraft:netherrack
|
||||
5,14,-1:
|
||||
bd: minecraft:netherrack
|
||||
5,15,-6:
|
||||
bd: minecraft:obsidian
|
||||
5,15,-5:
|
||||
bd: minecraft:nether_bricks
|
||||
5,15,-4:
|
||||
bd: minecraft:obsidian
|
||||
5,15,-2: {}
|
||||
6,-8,-2:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
6,-8,-1:
|
||||
bd: minecraft:glowstone
|
||||
6,-7,-5:
|
||||
bd: minecraft:netherrack
|
||||
6,-7,-4:
|
||||
bd: minecraft:magma_block
|
||||
6,-7,-3:
|
||||
bd: minecraft:netherrack
|
||||
6,-7,-2:
|
||||
bd: minecraft:nether_quartz_ore
|
||||
6,-7,-1:
|
||||
bd: minecraft:netherrack
|
||||
6,-7,0:
|
||||
bd: minecraft:netherrack
|
||||
6,12,-2:
|
||||
bd: minecraft:glowstone
|
||||
6,12,-1:
|
||||
bd: minecraft:glowstone
|
||||
6,13,-3:
|
||||
bd: minecraft:glowstone
|
||||
6,13,-2:
|
||||
bd: minecraft:netherrack
|
||||
6,13,-1:
|
||||
bd: minecraft:netherrack
|
||||
6,13,0:
|
||||
bd: minecraft:glowstone
|
||||
6,14,-6:
|
||||
bd: minecraft:netherrack
|
||||
6,14,-5:
|
||||
bd: minecraft:netherrack
|
||||
6,14,-4:
|
||||
bd: minecraft:netherrack
|
||||
6,14,-3:
|
||||
bd: minecraft:netherrack
|
||||
6,14,-2:
|
||||
bd: minecraft:netherrack
|
||||
6,14,-1:
|
||||
bd: minecraft:netherrack
|
||||
6,14,1: {}
|
||||
6,15,-6:
|
||||
bd: minecraft:obsidian
|
||||
6,15,-5:
|
||||
bd: minecraft:obsidian
|
||||
6,15,-4:
|
||||
bd: minecraft:obsidian
|
||||
6,16,-6: {}
|
||||
7,-9,-3:
|
||||
bd: minecraft:netherrack
|
||||
7,-8,-3:
|
||||
bd: minecraft:netherrack
|
||||
7,-7,-4:
|
||||
bd: minecraft:netherrack
|
||||
7,-7,-3:
|
||||
bd: minecraft:netherrack
|
||||
7,-7,-2:
|
||||
bd: minecraft:netherrack
|
||||
7,-7,-1:
|
||||
bd: minecraft:netherrack
|
||||
7,-7,0:
|
||||
bd: minecraft:netherrack
|
||||
7,-6,0:
|
||||
bd: minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]
|
||||
7,13,-1:
|
||||
bd: minecraft:glowstone
|
||||
7,14,-5:
|
||||
bd: minecraft:netherrack
|
||||
7,14,-4:
|
||||
bd: minecraft:netherrack
|
||||
7,14,-3:
|
||||
bd: minecraft:netherrack
|
||||
7,14,-1:
|
||||
bd: minecraft:netherrack
|
||||
7,14,0:
|
||||
bd: minecraft:netherrack
|
||||
7,15,-1:
|
||||
bd: minecraft:spawner
|
||||
spawnedType: SKELETON
|
||||
delay: 343
|
||||
maxNearbyEntities: 6
|
||||
maxSpawnDelay: 800
|
||||
minSpawnDelay: 200
|
||||
requiredPlayerRange: 8
|
||||
spawnRange: 4
|
||||
7,16,-1: {}
|
||||
8,-7,-2:
|
||||
bd: minecraft:netherrack
|
||||
8,-7,-1:
|
||||
bd: minecraft:netherrack
|
||||
8,12,-3:
|
||||
bd: minecraft:netherrack
|
||||
8,13,-3:
|
||||
bd: minecraft:netherrack
|
||||
8,14,-4:
|
||||
bd: minecraft:netherrack
|
||||
8,14,-3:
|
||||
bd: minecraft:netherrack
|
||||
8,14,-2:
|
||||
bd: minecraft:netherrack
|
||||
8,14,-1:
|
||||
bd: minecraft:netherrack
|
||||
8,14,0:
|
||||
bd: minecraft:netherrack
|
||||
8,15,-3: {}
|
||||
8,15,0: {}
|
||||
9,14,-2:
|
||||
bd: minecraft:netherrack
|
||||
9,14,-1:
|
||||
bd: minecraft:netherrack
|
||||
9,14,0:
|
||||
bd: minecraft:netherrack
|
||||
9,15,-2: {}
|
||||
9,15,0:
|
||||
bd: minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]
|
||||
3,-14,-2:
|
||||
bd: minecraft:air
|
||||
3,-13,-2:
|
||||
bd: minecraft:air
|
||||
3,-10,-3:
|
||||
bd: minecraft:air
|
||||
0,1,0:
|
||||
bd: minecraft:air
|
||||
0,2,0:
|
||||
bd: minecraft:air
|
||||
1,0,0:
|
||||
bd: minecraft:air
|
||||
1,1,0:
|
||||
bd: minecraft:air
|
||||
1,2,0:
|
||||
bd: minecraft:air
|
||||
0,0,1:
|
||||
bd: minecraft:air
|
||||
0,1,1:
|
||||
bd: minecraft:air
|
||||
0,2,1:
|
||||
bd: minecraft:air
|
||||
1,0,1:
|
||||
bd: minecraft:air
|
||||
1,1,1:
|
||||
bd: minecraft:air
|
||||
1,2,1:
|
||||
bd: minecraft:air
|
||||
entities:
|
||||
-2,-13,-5:
|
||||
93d845b0-e5b6-4159-9902-7c1feb904fdd:
|
||||
type: BLAZE
|
||||
0,-13,-4:
|
||||
3ea38461-a7ad-474f-927f-813bfc028a95:
|
||||
type: BLAZE
|
||||
1,-14,-4:
|
||||
9411b510-6fb3-4e5c-9092-1eaeff9dde0c:
|
||||
type: BLAZE
|
||||
1,-5,-4:
|
||||
40680555-83e2-4577-998f-91446c8799f3:
|
||||
type: PIG_ZOMBIE
|
||||
1,0,-4:
|
||||
3c7f64cf-59c7-46fe-adbe-4d0238592318:
|
||||
type: ENDERMAN
|
||||
3,-14,-4:
|
||||
7b8af36d-4408-4fb0-92c5-8ac3cfa234f4:
|
||||
type: PIG_ZOMBIE
|
||||
4,-10,-2:
|
||||
11252858-a030-4e32-a1cd-87bc1c11f073:
|
||||
type: BLAZE
|
||||
4,16,-2:
|
||||
0a80a57d-b79a-4f78-a5c9-e9776e703de4:
|
||||
type: PIG_ZOMBIE
|
||||
5,15,-2:
|
||||
fd6bf00f-21b7-4780-827a-eaffb3f2fd6c:
|
||||
type: PIG_ZOMBIE
|
||||
6,14,1:
|
||||
0931d66f-6189-4eef-af73-4bdb2f131242:
|
||||
type: PIG_ZOMBIE
|
||||
6,16,-6:
|
||||
0b1db2cc-dd05-49a4-b162-658ca628881b:
|
||||
type: WITHER_SKELETON
|
||||
7,16,-1:
|
||||
6010d461-276f-4fe2-9d76-d32ec4b99008:
|
||||
type: SKELETON
|
||||
8,15,-3:
|
||||
b86e341a-b1f3-411f-a925-9339b309cd3c:
|
||||
type: SKELETON
|
||||
8,15,0:
|
||||
afbe8e17-b22b-43d0-b1fe-06f1886c77d1:
|
||||
type: PIG_ZOMBIE
|
||||
369babf2-00fb-43ef-a22b-b43b0348db96:
|
||||
type: PIG_ZOMBIE
|
||||
9,15,-2:
|
||||
b823930c-2168-4a70-b6f8-e2bd577d7936:
|
||||
type: PIG_ZOMBIE
|
||||
attached:
|
||||
-2,1,-5:
|
||||
bd: minecraft:torch
|
||||
0,0,0:
|
||||
bd: minecraft:sign[rotation=8,waterlogged=false]
|
||||
lines:
|
||||
- '[spawn_here]'
|
||||
- ''
|
||||
- ''
|
||||
- ''
|
||||
2,1,-5:
|
||||
bd: minecraft:torch
|
||||
bedrock: 0,-5,-2
|
||||
size:
|
||||
xsize: 16
|
||||
ysize: 31
|
||||
zsize: 10
|
BIN
src/main/resources/schems/nether-island.schem
Normal file
BIN
src/main/resources/schems/nether-island.schem
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user