mirror of
https://github.com/BentoBoxWorld/CaveBlock.git
synced 2024-11-29 12:45:10 +01:00
Merge develop into master branch.
This commit is contained in:
commit
898d0fc637
32
pom.xml
32
pom.xml
@ -46,11 +46,11 @@
|
|||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<!-- More visible way how to change dependency versions -->
|
<!-- More visible way how to change dependency versions -->
|
||||||
<spigot.version>1.13.2-R0.1-SNAPSHOT</spigot.version>
|
<spigot.version>1.13.2-R0.1-SNAPSHOT</spigot.version>
|
||||||
<bentobox.version>1.4.0</bentobox.version>
|
<bentobox.version>1.5.0</bentobox.version>
|
||||||
<!-- Revision variable removes warning about dynamic version -->
|
<!-- Revision variable removes warning about dynamic version -->
|
||||||
<revision>${build.version}-SNAPSHOT</revision>
|
<revision>${build.version}-SNAPSHOT</revision>
|
||||||
<!-- This allows to change between versions and snapshots. -->
|
<!-- This allows to change between versions and snapshots. -->
|
||||||
<build.version>1.4.1</build.version>
|
<build.version>1.5.0</build.version>
|
||||||
<build.number>-LOCAL</build.number>
|
<build.number>-LOCAL</build.number>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
@ -66,7 +66,7 @@
|
|||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<properties>
|
||||||
<!-- Override only if necessary -->
|
<!-- Override only if necessary -->
|
||||||
<build.number>-#${env.BUILD_NUMBER}</build.number>
|
<build.number>-b${env.BUILD_NUMBER}</build.number>
|
||||||
<!-- GIT_BRANCH -->
|
<!-- GIT_BRANCH -->
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
@ -117,11 +117,16 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
<finalName>${project.name}-${revision}${build.number}</finalName>
|
||||||
|
|
||||||
<defaultGoal>clean package</defaultGoal>
|
<defaultGoal>clean package</defaultGoal>
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
<directory>src/main/resources</directory>
|
<directory>src/main/resources</directory>
|
||||||
<filtering>true</filtering>
|
<filtering>false</filtering>
|
||||||
|
<includes>
|
||||||
|
<include>*</include>
|
||||||
|
</includes>
|
||||||
</resource>
|
</resource>
|
||||||
<resource>
|
<resource>
|
||||||
<directory>src/main/resources/locales</directory>
|
<directory>src/main/resources/locales</directory>
|
||||||
@ -132,11 +137,12 @@
|
|||||||
</includes>
|
</includes>
|
||||||
</resource>
|
</resource>
|
||||||
<resource>
|
<resource>
|
||||||
<directory>src/main/resources/schems</directory>
|
<directory>src/main/resources/blueprints</directory>
|
||||||
<targetPath>./schems</targetPath>
|
<targetPath>./blueprints</targetPath>
|
||||||
<filtering>false</filtering>
|
<filtering>true</filtering>
|
||||||
<includes>
|
<includes>
|
||||||
<include>*.schem</include>
|
<include>*.json</include>
|
||||||
|
<include>*.blu</include>
|
||||||
</includes>
|
</includes>
|
||||||
</resource>
|
</resource>
|
||||||
</resources>
|
</resources>
|
||||||
@ -152,7 +158,7 @@
|
|||||||
<version>3.1.0</version>
|
<version>3.1.0</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<nonFilteredFileExtensions>
|
<nonFilteredFileExtensions>
|
||||||
<nonFilteredFileExtension>schem</nonFilteredFileExtension>
|
<nonFilteredFileExtension>blu</nonFilteredFileExtension>
|
||||||
</nonFilteredFileExtensions>
|
</nonFilteredFileExtensions>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
@ -206,14 +212,6 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</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>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-install-plugin</artifactId>
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
|
@ -32,6 +32,12 @@ public class CaveBlock extends GameModeAddon
|
|||||||
this.saveDefaultConfig();
|
this.saveDefaultConfig();
|
||||||
this.loadSettings();
|
this.loadSettings();
|
||||||
this.saveWorldSettings();
|
this.saveWorldSettings();
|
||||||
|
|
||||||
|
this.chunkGenerator = new ChunkGeneratorWorld(this);
|
||||||
|
|
||||||
|
this.playerCommand = new IslandCommand(this);
|
||||||
|
this.adminCommand = new AdminCommand(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -41,14 +47,9 @@ public class CaveBlock extends GameModeAddon
|
|||||||
@Override
|
@Override
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
{
|
{
|
||||||
this.playerCommand = new IslandCommand(this);
|
|
||||||
this.adminCommand = new AdminCommand(this);
|
|
||||||
|
|
||||||
// Register flags
|
// Register flags
|
||||||
CaveBlock.ALTERNATIVE_TELEPORT_FLAG.addGameModeAddon(this);
|
|
||||||
CaveBlock.SKY_WALKER_FLAG.addGameModeAddon(this);
|
CaveBlock.SKY_WALKER_FLAG.addGameModeAddon(this);
|
||||||
|
|
||||||
this.getPlugin().getFlagsManager().registerFlag(CaveBlock.ALTERNATIVE_TELEPORT_FLAG);
|
|
||||||
this.getPlugin().getFlagsManager().registerFlag(CaveBlock.SKY_WALKER_FLAG);
|
this.getPlugin().getFlagsManager().registerFlag(CaveBlock.SKY_WALKER_FLAG);
|
||||||
|
|
||||||
// Register listener
|
// Register listener
|
||||||
@ -106,15 +107,13 @@ public class CaveBlock extends GameModeAddon
|
|||||||
@Override
|
@Override
|
||||||
public void createWorlds()
|
public void createWorlds()
|
||||||
{
|
{
|
||||||
String worldName = this.settings.getWorldName();
|
String worldName = this.settings.getWorldName().toLowerCase();
|
||||||
|
|
||||||
if (this.getServer().getWorld(worldName) == null)
|
if (this.getServer().getWorld(worldName) == null)
|
||||||
{
|
{
|
||||||
this.getLogger().info("Creating CaveBlock world ...");
|
this.getLogger().info("Creating CaveBlock world ...");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.chunkGenerator = new ChunkGeneratorWorld(this);
|
|
||||||
|
|
||||||
// Create the world if it does not exist
|
// Create the world if it does not exist
|
||||||
this.islandWorld = WorldCreator.name(worldName).
|
this.islandWorld = WorldCreator.name(worldName).
|
||||||
type(WorldType.FLAT).
|
type(WorldType.FLAT).
|
||||||
@ -244,16 +243,6 @@ public class CaveBlock extends GameModeAddon
|
|||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This flag allows enables and disables alternative teleport paths. If player falls
|
|
||||||
* into void and this flag is enabled, then he will be teleported to different world.
|
|
||||||
*/
|
|
||||||
public final static Flag ALTERNATIVE_TELEPORT_FLAG =
|
|
||||||
new Flag.Builder("ALTERNATIVE_TELEPORT_FLAG", Material.ENDER_PEARL).
|
|
||||||
type(Flag.Type.WORLD_SETTING).
|
|
||||||
defaultSetting(false).
|
|
||||||
build();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This flag allows enables and disables to walk on top of the world without a
|
* This flag allows enables and disables to walk on top of the world without a
|
||||||
* permission. When enabled, players will be able to reach other player islands through
|
* permission. When enabled, players will be able to reach other player islands through
|
||||||
|
@ -19,7 +19,6 @@ import world.bentobox.bentobox.api.configuration.ConfigEntry;
|
|||||||
import world.bentobox.bentobox.api.configuration.StoreAt;
|
import world.bentobox.bentobox.api.configuration.StoreAt;
|
||||||
import world.bentobox.bentobox.api.configuration.WorldSettings;
|
import world.bentobox.bentobox.api.configuration.WorldSettings;
|
||||||
import world.bentobox.bentobox.api.flags.Flag;
|
import world.bentobox.bentobox.api.flags.Flag;
|
||||||
import world.bentobox.bentobox.database.objects.DataObject;
|
|
||||||
import world.bentobox.bentobox.database.objects.adapters.Adapter;
|
import world.bentobox.bentobox.database.objects.adapters.Adapter;
|
||||||
import world.bentobox.bentobox.database.objects.adapters.FlagSerializer;
|
import world.bentobox.bentobox.database.objects.adapters.FlagSerializer;
|
||||||
import world.bentobox.bentobox.database.objects.adapters.FlagSerializer2;
|
import world.bentobox.bentobox.database.objects.adapters.FlagSerializer2;
|
||||||
@ -31,26 +30,13 @@ import world.bentobox.bentobox.database.objects.adapters.FlagSerializer2;
|
|||||||
*/
|
*/
|
||||||
@StoreAt(filename="config.yml", path="addons/CaveBlock")
|
@StoreAt(filename="config.yml", path="addons/CaveBlock")
|
||||||
@ConfigComment("CaveBlock Configuration [version]")
|
@ConfigComment("CaveBlock Configuration [version]")
|
||||||
@ConfigComment("This config file is dynamic and saved when the server is shutdown.")
|
public class Settings implements WorldSettings
|
||||||
@ConfigComment("If you edit it while the server is running use /cbadmin reload")
|
|
||||||
@ConfigComment("otherwise your settings will be lost.")
|
|
||||||
public class Settings implements DataObject, WorldSettings
|
|
||||||
{
|
{
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
// Section: Getters
|
// Section: Getters
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the uniqueId
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getUniqueId()
|
|
||||||
{
|
|
||||||
return this.uniqueId;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method returns the friendlyName object.
|
* This method returns the friendlyName object.
|
||||||
* @return the friendlyName object.
|
* @return the friendlyName object.
|
||||||
@ -416,6 +402,7 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
* This method returns the leaversLoseReset object.
|
* This method returns the leaversLoseReset object.
|
||||||
* @return the leaversLoseReset object.
|
* @return the leaversLoseReset object.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public boolean isLeaversLoseReset()
|
public boolean isLeaversLoseReset()
|
||||||
{
|
{
|
||||||
return leaversLoseReset;
|
return leaversLoseReset;
|
||||||
@ -426,6 +413,7 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
* This method returns the kickedKeepInventory object.
|
* This method returns the kickedKeepInventory object.
|
||||||
* @return the kickedKeepInventory object.
|
* @return the kickedKeepInventory object.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public boolean isKickedKeepInventory()
|
public boolean isKickedKeepInventory()
|
||||||
{
|
{
|
||||||
return kickedKeepInventory;
|
return kickedKeepInventory;
|
||||||
@ -564,16 +552,6 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method returns the deathsSumTeam object.
|
|
||||||
* @return the deathsSumTeam object.
|
|
||||||
*/
|
|
||||||
public boolean isDeathsSumTeam()
|
|
||||||
{
|
|
||||||
return deathsSumTeam;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method returns the teamJoinDeathReset object.
|
* This method returns the teamJoinDeathReset object.
|
||||||
* @return the teamJoinDeathReset object.
|
* @return the teamJoinDeathReset object.
|
||||||
@ -793,16 +771,6 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param uniqueId - unique ID the uniqueId to set
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void setUniqueId(String uniqueId)
|
|
||||||
{
|
|
||||||
this.uniqueId = uniqueId;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method sets the friendlyName object value.
|
* This method sets the friendlyName object value.
|
||||||
* @param friendlyName the friendlyName object new value.
|
* @param friendlyName the friendlyName object new value.
|
||||||
@ -1309,17 +1277,6 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method sets the deathsSumTeam object value.
|
|
||||||
* @param deathsSumTeam the deathsSumTeam object new value.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public void setDeathsSumTeam(boolean deathsSumTeam)
|
|
||||||
{
|
|
||||||
this.deathsSumTeam = deathsSumTeam;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method sets the teamJoinDeathReset object value.
|
* This method sets the teamJoinDeathReset object value.
|
||||||
* @param teamJoinDeathReset the teamJoinDeathReset object new value.
|
* @param teamJoinDeathReset the teamJoinDeathReset object new value.
|
||||||
@ -1569,12 +1526,12 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
@ConfigComment("Name of the world - if it does not exist then it will be generated.")
|
@ConfigComment("Name of the world - if it does not exist then it will be generated.")
|
||||||
@ConfigComment("It acts like a prefix for nether and end (e.g. CaveBlock-world, CaveBlock-world_nether, CaveBlock-world_end)")
|
@ConfigComment("It acts like a prefix for nether and end (e.g. CaveBlock-world, CaveBlock-world_nether, CaveBlock-world_end)")
|
||||||
@ConfigEntry(path = "world.world-name")
|
@ConfigEntry(path = "world.world-name")
|
||||||
private String worldName = "CaveBlock-world";
|
private String worldName = "caveblock-world";
|
||||||
|
|
||||||
@ConfigComment("World difficulty setting - PEACEFUL, EASY, NORMAL, HARD")
|
@ConfigComment("World difficulty setting - PEACEFUL, EASY, NORMAL, HARD")
|
||||||
@ConfigComment("Other plugins may override this setting")
|
@ConfigComment("Other plugins may override this setting")
|
||||||
@ConfigEntry(path = "world.difficulty")
|
@ConfigEntry(path = "world.difficulty")
|
||||||
private Difficulty difficulty = Difficulty.NORMAL;
|
private Difficulty difficulty = Difficulty.HARD;
|
||||||
|
|
||||||
@ConfigComment("Radius of cave in blocks. (So distance between caves is twice this)")
|
@ConfigComment("Radius of cave in blocks. (So distance between caves is twice this)")
|
||||||
@ConfigComment("Will be rounded up to the nearest 16 blocks.")
|
@ConfigComment("Will be rounded up to the nearest 16 blocks.")
|
||||||
@ -1813,8 +1770,7 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
private boolean leaversLoseReset = false;
|
private boolean leaversLoseReset = false;
|
||||||
|
|
||||||
@ConfigComment("Allow kicked players to keep their inventory.")
|
@ConfigComment("Allow kicked players to keep their inventory.")
|
||||||
@ConfigComment("If false, kicked player's inventory will be thrown at the island leader if the")
|
@ConfigComment("Overrides the on-leave inventory reset for kicked players.")
|
||||||
@ConfigComment("kicked player is online and in the island world.")
|
|
||||||
@ConfigEntry(path = "island.reset.kicked-keep-inventory")
|
@ConfigEntry(path = "island.reset.kicked-keep-inventory")
|
||||||
private boolean kickedKeepInventory = false;
|
private boolean kickedKeepInventory = false;
|
||||||
|
|
||||||
@ -1874,9 +1830,6 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
@ConfigEntry(path = "island.deaths.max")
|
@ConfigEntry(path = "island.deaths.max")
|
||||||
private int deathsMax = 10;
|
private int deathsMax = 10;
|
||||||
|
|
||||||
@ConfigEntry(path = "island.deaths.sum-team")
|
|
||||||
private boolean deathsSumTeam = false;
|
|
||||||
|
|
||||||
@ConfigComment("When a player joins a team, reset their death count")
|
@ConfigComment("When a player joins a team, reset their death count")
|
||||||
@ConfigEntry(path = "island.deaths.team-join-reset")
|
@ConfigEntry(path = "island.deaths.team-join-reset")
|
||||||
private boolean teamJoinDeathReset = true;
|
private boolean teamJoinDeathReset = true;
|
||||||
@ -1900,6 +1853,4 @@ public class Settings implements DataObject, WorldSettings
|
|||||||
@ConfigEntry(path = "do-not-edit-these-settings.reset-epoch")
|
@ConfigEntry(path = "do-not-edit-these-settings.reset-epoch")
|
||||||
private long resetEpoch = 0;
|
private long resetEpoch = 0;
|
||||||
private boolean debug;
|
private boolean debug;
|
||||||
|
|
||||||
private String uniqueId = "config";
|
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,10 @@ import java.util.List;
|
|||||||
|
|
||||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||||
import world.bentobox.bentobox.api.commands.admin.*;
|
import world.bentobox.bentobox.api.commands.admin.*;
|
||||||
|
import world.bentobox.bentobox.api.commands.admin.blueprints.AdminBlueprintCommand;
|
||||||
import world.bentobox.bentobox.api.commands.admin.deaths.AdminDeathsCommand;
|
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.range.AdminRangeCommand;
|
||||||
import world.bentobox.bentobox.api.commands.admin.resets.AdminResetsResetCommand;
|
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.AdminTeamAddCommand;
|
||||||
import world.bentobox.bentobox.api.commands.admin.team.AdminTeamDisbandCommand;
|
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.AdminTeamKickCommand;
|
||||||
@ -45,7 +45,7 @@ public class AdminCommand extends CompositeCommand {
|
|||||||
new AdminTeamDisbandCommand(this);
|
new AdminTeamDisbandCommand(this);
|
||||||
new AdminTeamSetownerCommand(this);
|
new AdminTeamSetownerCommand(this);
|
||||||
// Schems
|
// Schems
|
||||||
new AdminSchemCommand(this);
|
new AdminBlueprintCommand(this);
|
||||||
// Register/unregister islands
|
// Register/unregister islands
|
||||||
new AdminRegisterCommand(this);
|
new AdminRegisterCommand(this);
|
||||||
new AdminUnregisterCommand(this);
|
new AdminUnregisterCommand(this);
|
||||||
@ -70,6 +70,9 @@ public class AdminCommand extends CompositeCommand {
|
|||||||
new AdminTrashCommand(this);
|
new AdminTrashCommand(this);
|
||||||
new AdminEmptyTrashCommand(this);
|
new AdminEmptyTrashCommand(this);
|
||||||
new AdminSwitchtoCommand(this);
|
new AdminSwitchtoCommand(this);
|
||||||
|
|
||||||
|
// Switch
|
||||||
|
new AdminSwitchCommand(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,6 +44,7 @@ public class IslandCommand extends CompositeCommand {
|
|||||||
new IslandBanCommand(this);
|
new IslandBanCommand(this);
|
||||||
new IslandUnbanCommand(this);
|
new IslandUnbanCommand(this);
|
||||||
new IslandBanlistCommand(this);
|
new IslandBanlistCommand(this);
|
||||||
|
new IslandNearCommand(this);
|
||||||
|
|
||||||
// Expel command
|
// Expel command
|
||||||
new IslandExpelCommand(this);
|
new IslandExpelCommand(this);
|
||||||
|
@ -93,7 +93,8 @@ public class MaterialPopulator extends BlockPopulator
|
|||||||
{
|
{
|
||||||
if (!block.getType().equals(entry.getKey()))
|
if (!block.getType().equals(entry.getKey()))
|
||||||
{
|
{
|
||||||
block.setType(entry.getKey());
|
// Set type without physics is required otherwise server goes into an infinite loop
|
||||||
|
block.setType(entry.getKey(), false);
|
||||||
packSize--;
|
packSize--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package world.bentobox.caveblock.listeners;
|
|||||||
|
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -13,7 +12,6 @@ import org.bukkit.event.player.PlayerTeleportEvent;
|
|||||||
|
|
||||||
import world.bentobox.bentobox.api.user.User;
|
import world.bentobox.bentobox.api.user.User;
|
||||||
import world.bentobox.bentobox.util.Util;
|
import world.bentobox.bentobox.util.Util;
|
||||||
import world.bentobox.bentobox.util.teleport.SafeSpotTeleport;
|
|
||||||
import world.bentobox.caveblock.CaveBlock;
|
import world.bentobox.caveblock.CaveBlock;
|
||||||
|
|
||||||
|
|
||||||
@ -45,19 +43,7 @@ public class CustomHeightLimitations implements Listener
|
|||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
final double nextY = event.getTo() == null ? 1 : event.getTo().getY();
|
final double nextY = event.getTo() == null ? 1 : event.getTo().getY();
|
||||||
|
|
||||||
if (CaveBlock.SKY_WALKER_FLAG.isSetForWorld(player.getWorld()) ||
|
if (this.shouldNotBeCancelled(nextY, player, event.getFrom(), event.getTo()))
|
||||||
player.isOp() ||
|
|
||||||
player.isDead() ||
|
|
||||||
player.getGameMode().equals(GameMode.CREATIVE) ||
|
|
||||||
player.getGameMode().equals(GameMode.SPECTATOR) ||
|
|
||||||
this.addon.getPlayers().isInTeleport(player.getUniqueId()) ||
|
|
||||||
player.hasPermission("caveblock.skywalker") ||
|
|
||||||
!Util.sameWorld(this.addon.getOverWorld(), player.getWorld()) ||
|
|
||||||
nextY < this.worldHeight ||
|
|
||||||
// Next check will allow to go down, but never up.
|
|
||||||
event.getFrom().getY() >= nextY &&
|
|
||||||
event.getFrom().getBlockX() == event.getTo().getBlockX() &&
|
|
||||||
event.getFrom().getBlockZ() == event.getTo().getBlockZ())
|
|
||||||
{
|
{
|
||||||
// interested only in movements that is above height limit.
|
// interested only in movements that is above height limit.
|
||||||
return;
|
return;
|
||||||
@ -84,19 +70,7 @@ public class CustomHeightLimitations implements Listener
|
|||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
final double nextY = event.getTo() == null ? 1 : event.getTo().getY();
|
final double nextY = event.getTo() == null ? 1 : event.getTo().getY();
|
||||||
|
|
||||||
if (CaveBlock.SKY_WALKER_FLAG.isSetForWorld(player.getWorld()) ||
|
if (this.shouldNotBeCancelled(nextY, player, event.getFrom(), event.getTo()))
|
||||||
player.isOp() ||
|
|
||||||
player.isDead() ||
|
|
||||||
player.getGameMode().equals(GameMode.CREATIVE) ||
|
|
||||||
player.getGameMode().equals(GameMode.SPECTATOR) ||
|
|
||||||
this.addon.getPlayers().isInTeleport(player.getUniqueId()) ||
|
|
||||||
player.hasPermission("caveblock.skywalker") ||
|
|
||||||
!Util.sameWorld(this.addon.getOverWorld(), player.getWorld()) ||
|
|
||||||
nextY < this.worldHeight ||
|
|
||||||
// Next check will allow to go down, but never up.
|
|
||||||
event.getFrom().getY() >= nextY &&
|
|
||||||
event.getFrom().getBlockX() == event.getTo().getBlockX() &&
|
|
||||||
event.getFrom().getBlockZ() == event.getTo().getBlockZ())
|
|
||||||
{
|
{
|
||||||
// interested only in movements that is below 0 or above height limit.
|
// interested only in movements that is below 0 or above height limit.
|
||||||
return;
|
return;
|
||||||
@ -111,98 +85,30 @@ public class CustomHeightLimitations implements Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method onPlayerMove disables movement if player is falling in void and alternative
|
* This method checks and returns if current player movement from location to to location should be
|
||||||
* teleport flag is enabled.
|
* managed by current addon.
|
||||||
* It will work only when player reach negative Y coordinates.
|
* @param nextY NextY location for player.
|
||||||
*
|
* @param player Player who makes movement
|
||||||
* @param event of type PlayerMoveEvent
|
* @param from Start location
|
||||||
|
* @param to Next location
|
||||||
|
* @return {@code true} if addon should not manage current movement, {@code false} otherwise.
|
||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
private boolean shouldNotBeCancelled(double nextY, Player player, Location from, Location to)
|
||||||
public void onPlayerLeftWorld(PlayerMoveEvent event)
|
|
||||||
{
|
{
|
||||||
Player player = event.getPlayer();
|
return nextY < this.worldHeight ||
|
||||||
final double nextY = event.getTo() == null ? 1 : event.getTo().getY();
|
from == to ||
|
||||||
|
from.getY() >= nextY &&
|
||||||
if (event.isCancelled() ||
|
from.getBlockX() == to.getBlockX() &&
|
||||||
!CaveBlock.ALTERNATIVE_TELEPORT_FLAG.isSetForWorld(player.getWorld()) ||
|
from.getBlockZ() == to.getBlockZ() ||
|
||||||
|
player.isOp() ||
|
||||||
player.isDead() ||
|
player.isDead() ||
|
||||||
|
player.getGameMode().equals(GameMode.CREATIVE) ||
|
||||||
player.getGameMode().equals(GameMode.SPECTATOR) ||
|
player.getGameMode().equals(GameMode.SPECTATOR) ||
|
||||||
|
player.hasPermission("caveblock.skywalker") ||
|
||||||
this.addon.getPlayers().isInTeleport(player.getUniqueId()) ||
|
this.addon.getPlayers().isInTeleport(player.getUniqueId()) ||
|
||||||
!Util.sameWorld(this.addon.getOverWorld(), player.getWorld()) ||
|
!Util.sameWorld(this.addon.getOverWorld(), player.getWorld()) ||
|
||||||
nextY > 0 ||
|
CaveBlock.SKY_WALKER_FLAG.isSetForWorld(player.getWorld());
|
||||||
// Next check will allow to go down, but never up.
|
|
||||||
event.getFrom().getY() <= nextY &&
|
|
||||||
event.getFrom().getBlockX() == event.getTo().getBlockX() &&
|
|
||||||
event.getFrom().getBlockZ() == event.getTo().getBlockZ())
|
|
||||||
{
|
|
||||||
// interested only in movements that is below 0 or above height limit.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use custom teleport to different world
|
|
||||||
if (CaveBlock.ALTERNATIVE_TELEPORT_FLAG.isSetForWorld(player.getWorld()) && nextY <= 0)
|
|
||||||
{
|
|
||||||
switch (player.getWorld().getEnvironment())
|
|
||||||
{
|
|
||||||
case NORMAL:
|
|
||||||
{
|
|
||||||
// From normal world users will get to nether.
|
|
||||||
|
|
||||||
Location to = this.addon.getIslands().getIslandAt(event.getFrom()).
|
|
||||||
map(i -> i.getSpawnPoint(World.Environment.NETHER)).
|
|
||||||
orElse(event.getFrom().toVector().toLocation(this.addon.getNetherWorld()));
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
|
|
||||||
new SafeSpotTeleport.Builder(this.addon.getPlugin()).
|
|
||||||
entity(event.getPlayer()).
|
|
||||||
location(to).
|
|
||||||
portal().
|
|
||||||
build();
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case NETHER:
|
|
||||||
{
|
|
||||||
// From nether world users will get to the end.
|
|
||||||
|
|
||||||
Location to = this.addon.getIslands().getIslandAt(event.getFrom()).
|
|
||||||
map(i -> i.getSpawnPoint(World.Environment.THE_END)).
|
|
||||||
orElse(event.getFrom().toVector().toLocation(this.addon.getEndWorld()));
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
|
|
||||||
new SafeSpotTeleport.Builder(this.addon.getPlugin()).
|
|
||||||
entity(event.getPlayer()).
|
|
||||||
location(to).
|
|
||||||
portal().
|
|
||||||
build();
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case THE_END:
|
|
||||||
{
|
|
||||||
// From the end users will get to over world.
|
|
||||||
|
|
||||||
Location to = this.addon.getIslands().getIslandAt(event.getFrom()).
|
|
||||||
map(i -> i.getSpawnPoint(World.Environment.NORMAL)).
|
|
||||||
orElse(event.getFrom().toVector().toLocation(this.addon.getOverWorld()));
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
|
|
||||||
new SafeSpotTeleport.Builder(this.addon.getPlugin()).
|
|
||||||
entity(event.getPlayer()).
|
|
||||||
location(to).
|
|
||||||
portal().
|
|
||||||
build();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
name: CaveBlock
|
name: CaveBlock
|
||||||
main: world.bentobox.caveblock.CaveBlock
|
main: world.bentobox.caveblock.CaveBlock
|
||||||
version: ${version}${build.number}
|
version: ${version}${build.number}
|
||||||
|
metrics: true
|
||||||
|
repository: "BentoBoxWorld/CaveBlock"
|
||||||
|
icon: "STONE_PICKAXE"
|
||||||
|
|
||||||
authors: BONNe
|
authors: BONNe
|
||||||
|
|
||||||
@ -15,14 +18,14 @@ permissions:
|
|||||||
description: Allow teleporting to player cave
|
description: Allow teleporting to player cave
|
||||||
default: true
|
default: true
|
||||||
caveblock.island.info:
|
caveblock.island.info:
|
||||||
description: Let the player check their cave level
|
description: Let the player check other players info
|
||||||
default: true
|
|
||||||
caveblock.island.sethome:
|
|
||||||
description: Let the player set their cave teleport point
|
|
||||||
default: true
|
default: true
|
||||||
caveblock.island.lock:
|
caveblock.island.lock:
|
||||||
description: Allows cave locking
|
description: Allows cave locking
|
||||||
default: false
|
default: true
|
||||||
|
caveblock.island.near:
|
||||||
|
description: Players can see nearby cave names
|
||||||
|
default: true
|
||||||
caveblock.island.expel:
|
caveblock.island.expel:
|
||||||
description: Allows expelling of visitors
|
description: Allows expelling of visitors
|
||||||
default: true
|
default: true
|
||||||
@ -53,21 +56,18 @@ permissions:
|
|||||||
caveblock.island.team.coop:
|
caveblock.island.team.coop:
|
||||||
description: Let a player use team coop commands
|
description: Let a player use team coop commands
|
||||||
default: true
|
default: true
|
||||||
|
caveblock.island.team.promote:
|
||||||
|
description: Let a player use promote commands
|
||||||
|
default: true
|
||||||
caveblock.settings.*:
|
caveblock.settings.*:
|
||||||
description: Allow use of settings on cave
|
description: Allow use of settings on cave
|
||||||
default: true
|
default: true
|
||||||
caveblock.mod.info:
|
caveblock.mod.info:
|
||||||
description: Let a moderator see info on a player
|
description: Let a moderator see info on a player
|
||||||
default: op
|
default: op
|
||||||
caveblock.mod.resethome:
|
|
||||||
description: Allows setting or reseting of a player's home position
|
|
||||||
default: op
|
|
||||||
caveblock.mod.clearreset:
|
caveblock.mod.clearreset:
|
||||||
description: Allow clearing of cave reset limit
|
description: Allow clearing of cave reset limit
|
||||||
default: false
|
default: false
|
||||||
caveblock.mod.tp:
|
|
||||||
description: Allows teleport to an cave
|
|
||||||
default: op
|
|
||||||
caveblock.mod.bypasscooldowns:
|
caveblock.mod.bypasscooldowns:
|
||||||
description: Allow moderator to bypass cooldowns
|
description: Allow moderator to bypass cooldowns
|
||||||
default: op
|
default: op
|
||||||
@ -77,21 +77,24 @@ permissions:
|
|||||||
caveblock.mod.bypassexpel:
|
caveblock.mod.bypassexpel:
|
||||||
description: Allow moderator to bypass cave expulsion
|
description: Allow moderator to bypass cave expulsion
|
||||||
default: op
|
default: op
|
||||||
|
caveblock.mod.switch:
|
||||||
|
description: Allows moderator to switch bypass protection on and off
|
||||||
|
default: op
|
||||||
caveblock.mod.lock:
|
caveblock.mod.lock:
|
||||||
description: Locks or unlocks an cave
|
description: Locks or unlocks a cave
|
||||||
default: op
|
default: op
|
||||||
caveblock.mod.bypasslock:
|
caveblock.mod.bypasslock:
|
||||||
description: Bypasses an cave lock
|
description: Bypasses a cave lock
|
||||||
|
default: op
|
||||||
|
caveblock.mod.bypassban:
|
||||||
|
description: Bypasses cave ban
|
||||||
default: op
|
default: op
|
||||||
caveblock.mod.team:
|
caveblock.mod.team:
|
||||||
description: Enables modification of teams via kick and add commands
|
description: Enables modification of teams via kick and add commands
|
||||||
default: false
|
default: false
|
||||||
caveblock.mod.name:
|
caveblock.admin.tp:
|
||||||
description: Enables naming of player's caves
|
description: Allows teleport to a cave
|
||||||
default: false
|
default: op
|
||||||
caveblock.mod.resetname:
|
|
||||||
description: Enables reset of player's cave names
|
|
||||||
default: false
|
|
||||||
caveblock.admin.clearresetall:
|
caveblock.admin.clearresetall:
|
||||||
description: Allow clearing of cave reset limit of all players
|
description: Allow clearing of cave reset limit of all players
|
||||||
default: op
|
default: op
|
||||||
@ -101,17 +104,11 @@ permissions:
|
|||||||
caveblock.admin.delete:
|
caveblock.admin.delete:
|
||||||
description: Let a player completely remove a player (including cave)
|
description: Let a player completely remove a player (including cave)
|
||||||
default: op
|
default: op
|
||||||
caveblock.admin.deleteisland:
|
|
||||||
description: Let a player completely remove the cave the player is on
|
|
||||||
default: op
|
|
||||||
caveblock.admin.register:
|
caveblock.admin.register:
|
||||||
description: Let a player register the nearest cave to another player.
|
description: Let a player register the nearest cave to another player.
|
||||||
default: op
|
default: op
|
||||||
caveblock.admin.unregister:
|
caveblock.admin.unregister:
|
||||||
description: Removes a player from an cave without deleting the cave blocks.
|
description: Removes a player from a cave without deleting the cave blocks.
|
||||||
default: op
|
|
||||||
caveblock.admin.purge:
|
|
||||||
description: Let a player purge old caves.
|
|
||||||
default: op
|
default: op
|
||||||
caveblock.admin.setspawn:
|
caveblock.admin.setspawn:
|
||||||
description: Allows use of spawn tools
|
description: Allows use of spawn tools
|
||||||
@ -119,18 +116,15 @@ permissions:
|
|||||||
caveblock.admin.setrange:
|
caveblock.admin.setrange:
|
||||||
description: Allows setting of cave protection range
|
description: Allows setting of cave protection range
|
||||||
default: op
|
default: op
|
||||||
caveblock.admin.reserve:
|
|
||||||
description: Reserves an empty spot for a player's next cave
|
|
||||||
default: op
|
|
||||||
caveblock.admin.settingsreset:
|
caveblock.admin.settingsreset:
|
||||||
description: Resets all the caves to default protection settings
|
description: Resets all the caves to default protection settings
|
||||||
default: op
|
default: op
|
||||||
caveblock.admin.noban:
|
caveblock.admin.noban:
|
||||||
description: Player cannot be banned from an cave
|
description: Player cannot be banned from a cave
|
||||||
|
default: op
|
||||||
|
caveblock.admin.noexpel:
|
||||||
|
description: Player cannot be expelled from a cave
|
||||||
default: op
|
default: op
|
||||||
caveblock.admin.setlanguage:
|
caveblock.admin.setlanguage:
|
||||||
description: Resets all player languages and sets the default language
|
description: Resets all player languages and sets the default language
|
||||||
default: op
|
default: op
|
||||||
caveblock.skywalker:
|
|
||||||
description: Allows player to walk over the heigh limit.
|
|
||||||
default: op
|
|
1
src/main/resources/blueprints/cave
Normal file
1
src/main/resources/blueprints/cave
Normal file
File diff suppressed because one or more lines are too long
BIN
src/main/resources/blueprints/cave.blu
Normal file
BIN
src/main/resources/blueprints/cave.blu
Normal file
Binary file not shown.
17
src/main/resources/blueprints/default.json
Normal file
17
src/main/resources/blueprints/default.json
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"uniqueId": "default",
|
||||||
|
"icon": "STONE",
|
||||||
|
"displayName": "§eThe Default CaveBlock",
|
||||||
|
"description": [
|
||||||
|
"§bStandard cave, with a cow - moo!",
|
||||||
|
"§aIncludes an Overworld cave",
|
||||||
|
"§cIncludes a Nether cave",
|
||||||
|
"§6Includes an End cave"
|
||||||
|
],
|
||||||
|
"requirePermission": false,
|
||||||
|
"blueprints": {
|
||||||
|
"NORMAL": "cave",
|
||||||
|
"NETHER": "nether-cave",
|
||||||
|
"THE_END": "end-cave"
|
||||||
|
}
|
||||||
|
}
|
1
src/main/resources/blueprints/end-cave
Normal file
1
src/main/resources/blueprints/end-cave
Normal file
File diff suppressed because one or more lines are too long
BIN
src/main/resources/blueprints/end-cave.blu
Normal file
BIN
src/main/resources/blueprints/end-cave.blu
Normal file
Binary file not shown.
1
src/main/resources/blueprints/nether-cave
Normal file
1
src/main/resources/blueprints/nether-cave
Normal file
File diff suppressed because one or more lines are too long
BIN
src/main/resources/blueprints/nether-cave.blu
Normal file
BIN
src/main/resources/blueprints/nether-cave.blu
Normal file
Binary file not shown.
@ -1,7 +1,4 @@
|
|||||||
# CaveBlock Configuration ${version}
|
# CaveBlock Configuration ${version}
|
||||||
# This config file is dynamic and saved when the server is shutdown.
|
|
||||||
# If you edit it while the server is running use /cbadmin reload
|
|
||||||
# otherwise your settings will be lost.
|
|
||||||
caveblock:
|
caveblock:
|
||||||
command:
|
command:
|
||||||
# Cave Command. What command users will run to access their cave.
|
# Cave Command. What command users will run to access their cave.
|
||||||
@ -15,10 +12,10 @@ world:
|
|||||||
friendly-name: CaveBlock
|
friendly-name: CaveBlock
|
||||||
# Name of the world - if it does not exist then it will be generated.
|
# 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)
|
# It acts like a prefix for nether and end (e.g. CaveBlock-world, CaveBlock-world_nether, CaveBlock-world_end)
|
||||||
world-name: CaveBlock-world
|
world-name: caveblock-world
|
||||||
# World difficulty setting - PEACEFUL, EASY, NORMAL, HARD
|
# World difficulty setting - PEACEFUL, EASY, NORMAL, HARD
|
||||||
# Other plugins may override this setting
|
# Other plugins may override this setting
|
||||||
difficulty: NORMAL
|
difficulty: HARD
|
||||||
# Radius of cave in blocks. (So distance between caves is twice this)
|
# Radius of cave in blocks. (So distance between caves is twice this)
|
||||||
# Will be rounded up to the nearest 16 blocks.
|
# Will be rounded up to the nearest 16 blocks.
|
||||||
# It is the same for every dimension : Overworld, Nether and End.
|
# It is the same for every dimension : Overworld, Nether and End.
|
||||||
@ -278,8 +275,7 @@ island:
|
|||||||
# Leave this true to avoid players exploiting free islands
|
# Leave this true to avoid players exploiting free islands
|
||||||
leavers-lose-reset: false
|
leavers-lose-reset: false
|
||||||
# Allow kicked players to keep their inventory.
|
# Allow kicked players to keep their inventory.
|
||||||
# If false, kicked player's inventory will be thrown at the island leader if the
|
# Overrides the on-leave inventory reset for kicked players.
|
||||||
# kicked player is online and in the island world.
|
|
||||||
kicked-keep-inventory: false
|
kicked-keep-inventory: false
|
||||||
on-join:
|
on-join:
|
||||||
# What the plugin should reset when the player joins or creates an island
|
# What the plugin should reset when the player joins or creates an island
|
||||||
@ -317,7 +313,6 @@ island:
|
|||||||
counted: true
|
counted: true
|
||||||
# Maximum number of deaths to count. The death count can be used by add-ons.
|
# Maximum number of deaths to count. The death count can be used by add-ons.
|
||||||
max: 10
|
max: 10
|
||||||
sum-team: false
|
|
||||||
# When a player joins a team, reset their death count
|
# When a player joins a team, reset their death count
|
||||||
team-join-reset: true
|
team-join-reset: true
|
||||||
protection:
|
protection:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,310 +0,0 @@
|
|||||||
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
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in New Issue
Block a user