mirror of
https://github.com/trainerlord/WorldSystem.git
synced 2024-10-02 04:57:43 +02:00
Removed generator, rework of PlayerDeathListener, documented Events
This commit is contained in:
parent
2ab15b12a6
commit
965fb782cd
@ -1,5 +1,5 @@
|
||||
name: WorldSystem
|
||||
version: 2.3.1.1
|
||||
version: 2.3.1.4
|
||||
author: Butzlabben
|
||||
main: de.butzlabben.world.WorldSystem
|
||||
|
||||
@ -59,6 +59,7 @@ permissions:
|
||||
children:
|
||||
ws.tp.*: true
|
||||
ws.get: true
|
||||
ws.sethome: true
|
||||
ws.tp.world: true
|
||||
ws.tp.toother: true
|
||||
ws.tp.other: true
|
||||
|
@ -6,6 +6,8 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
/**
|
||||
* Event for adding somebody to a world
|
||||
*
|
||||
* @author Butzlabben
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
@ -21,14 +23,23 @@ public class WorldAddmemberEvent extends WorldEvent {
|
||||
this.adder = adder;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return player who adds somebody
|
||||
*/
|
||||
public Player getAdding() {
|
||||
return adder;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return UUID of player who gets added
|
||||
*/
|
||||
public UUID getUUID() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return worldname for which it happens
|
||||
*/
|
||||
public String getWorldname() {
|
||||
return worldname;
|
||||
}
|
||||
@ -38,6 +49,5 @@ public class WorldAddmemberEvent extends WorldEvent {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
|
||||
public final static HandlerList handlers = new HandlerList();
|
||||
}
|
||||
|
@ -4,6 +4,13 @@ import org.bukkit.WorldCreator;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
/**
|
||||
* Event if a SystemWorld gets created.
|
||||
* Do mix up with the WorldCreateEvent from Bukkit
|
||||
*
|
||||
* @author Butzlabben
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
public class WorldCreateEvent extends WorldEvent {
|
||||
|
||||
private final Player owner;
|
||||
@ -14,6 +21,9 @@ public class WorldCreateEvent extends WorldEvent {
|
||||
this.setWorldCreator(creator);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return owner of world that gets created
|
||||
*/
|
||||
public Player getOwner() {
|
||||
return owner;
|
||||
}
|
||||
|
@ -5,6 +5,12 @@ import org.bukkit.event.HandlerList;
|
||||
|
||||
import de.butzlabben.world.wrapper.SystemWorld;
|
||||
|
||||
/**
|
||||
* Event if a systemworld gets deleted
|
||||
*
|
||||
* @author Butzlabben
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
public class WorldDeleteEvent extends WorldEvent {
|
||||
|
||||
private final SystemWorld world;
|
||||
@ -29,8 +35,6 @@ public class WorldDeleteEvent extends WorldEvent {
|
||||
return executor;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public final static HandlerList handlers = new HandlerList();
|
||||
|
||||
public final static HandlerList getHandlerList() {
|
||||
|
@ -5,6 +5,12 @@ import org.bukkit.event.HandlerList;
|
||||
|
||||
import de.butzlabben.world.wrapper.SystemWorld;
|
||||
|
||||
/**
|
||||
* Event for loading a world
|
||||
*
|
||||
* @author Butzlabben
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
public class WorldLoadEvent extends WorldEvent {
|
||||
|
||||
private final Player owner;
|
||||
|
@ -21,14 +21,23 @@ public class WorldRemovememberEvent extends WorldEvent {
|
||||
this.remover = remover;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return player who removes somebody
|
||||
*/
|
||||
public Player getRemoving() {
|
||||
return remover;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return uuid of player who gets removed
|
||||
*/
|
||||
public UUID getUUID() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return worldname for which it happens
|
||||
*/
|
||||
public String getWorldname() {
|
||||
return worldname;
|
||||
}
|
||||
|
@ -5,6 +5,12 @@ import org.bukkit.event.HandlerList;
|
||||
|
||||
import de.butzlabben.world.wrapper.SystemWorld;
|
||||
|
||||
/**
|
||||
* Event when a world gets reset
|
||||
*
|
||||
* @author Butzlabben
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
public class WorldResetEvent extends WorldEvent {
|
||||
|
||||
private final SystemWorld world;
|
||||
@ -15,10 +21,16 @@ public class WorldResetEvent extends WorldEvent {
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return world which gets reset
|
||||
*/
|
||||
public SystemWorld getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Executor of the command
|
||||
*/
|
||||
public CommandSender getExecutor() {
|
||||
return executor;
|
||||
}
|
||||
|
@ -5,6 +5,10 @@ import org.bukkit.event.HandlerList;
|
||||
|
||||
import de.butzlabben.world.wrapper.SystemWorld;
|
||||
|
||||
/**
|
||||
* @author Butzlabben
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
public class WorldToggleFireEvent extends WorldEvent {
|
||||
|
||||
private final SystemWorld world;
|
||||
@ -17,18 +21,30 @@ public class WorldToggleFireEvent extends WorldEvent {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return if fire now gets enabled or disabled
|
||||
*/
|
||||
public boolean getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param val if fire should be enabled or disabled
|
||||
*/
|
||||
public void setValue(boolean val) {
|
||||
value = val;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return world get world
|
||||
*/
|
||||
public SystemWorld getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return get executor who toggles fire
|
||||
*/
|
||||
public CommandSender getExecutor() {
|
||||
return executor;
|
||||
}
|
||||
|
@ -5,6 +5,10 @@ import org.bukkit.event.HandlerList;
|
||||
|
||||
import de.butzlabben.world.wrapper.SystemWorld;
|
||||
|
||||
/**
|
||||
* @author Butzlabben
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
public class WorldToggleTntEvent extends WorldEvent {
|
||||
|
||||
private final SystemWorld world;
|
||||
@ -17,24 +21,35 @@ public class WorldToggleTntEvent extends WorldEvent {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return if tnt now gets enabled or disabled
|
||||
*/
|
||||
public boolean getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param val if tnt should be enabled or disabled
|
||||
*/
|
||||
public void setValue(boolean val) {
|
||||
value = val;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return world get world
|
||||
*/
|
||||
public SystemWorld getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return get executor who toggles tnt
|
||||
*/
|
||||
public CommandSender getExecutor() {
|
||||
return executor;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public final static HandlerList handlers = new HandlerList();
|
||||
|
||||
public final static HandlerList getHandlerList() {
|
||||
|
@ -6,7 +6,7 @@ import de.butzlabben.world.wrapper.SystemWorld;
|
||||
|
||||
/**
|
||||
* @author Butzlabben
|
||||
* @since 2017
|
||||
* @since 09.05.2018
|
||||
*/
|
||||
public class WorldUnloadEvent extends WorldEvent {
|
||||
|
||||
@ -16,6 +16,9 @@ public class WorldUnloadEvent extends WorldEvent {
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return world which gets unloaded
|
||||
*/
|
||||
public SystemWorld getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
@ -2,13 +2,11 @@ package de.butzlabben.world;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@ -53,11 +51,9 @@ import de.butzlabben.world.wrapper.SystemWorld;
|
||||
*/
|
||||
public class WorldSystem extends JavaPlugin {
|
||||
|
||||
public static HashMap<Player, World> deathLocations = new HashMap<>();
|
||||
|
||||
final private String version = this.getDescription().getVersion();
|
||||
|
||||
public static CreatorAdapter creator;
|
||||
private CreatorAdapter creator;
|
||||
|
||||
private static boolean is1_13 = false;
|
||||
|
||||
@ -215,6 +211,10 @@ public class WorldSystem extends JavaPlugin {
|
||||
public static WorldSystem getInstance() {
|
||||
return JavaPlugin.getPlugin(WorldSystem.class);
|
||||
}
|
||||
|
||||
public CreatorAdapter getAdapter() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
public static boolean is1_13() {
|
||||
return is1_13;
|
||||
|
@ -19,6 +19,7 @@ import de.butzlabben.world.WorldSystem;
|
||||
import de.butzlabben.world.config.DependenceConfig;
|
||||
import de.butzlabben.world.config.MessageConfig;
|
||||
import de.butzlabben.world.config.PluginConfig;
|
||||
import de.butzlabben.world.config.WorldConfig;
|
||||
import de.butzlabben.world.wrapper.SystemWorld;
|
||||
|
||||
public class WSResetCommand implements CommandExecutor {
|
||||
@ -73,6 +74,10 @@ public class WSResetCommand implements CommandExecutor {
|
||||
toConfirm.remove(p);
|
||||
|
||||
FileUtils.moveDirectoryToDirectory(f, Bukkit.getWorldContainer(), false);
|
||||
|
||||
WorldConfig config = WorldConfig.getWorldConfig(worldname);
|
||||
config.setHome(null);
|
||||
config.save();
|
||||
|
||||
p.sendMessage(MessageConfig.getWorldReseted());
|
||||
|
||||
@ -91,7 +96,7 @@ public class WSResetCommand implements CommandExecutor {
|
||||
|
||||
sw.setCreating(true);
|
||||
// For #16
|
||||
WorldSystem.creator.create(creator, sw, () -> {
|
||||
WorldSystem.getInstance().getAdapter().create(creator, sw, () -> {
|
||||
if (p != null && p.isOnline())
|
||||
p.sendMessage(MessageConfig.getWorldCreated());
|
||||
});
|
||||
|
@ -438,6 +438,8 @@ public class WorldConfig {
|
||||
cfg.set("Settings.home.z", home.getZ());
|
||||
cfg.set("Settings.home.yaw", home.getYaw());
|
||||
cfg.set("Settings.home.pitch", home.getPitch());
|
||||
} else {
|
||||
cfg.set("Settings.home", null);
|
||||
}
|
||||
|
||||
cfg.set("Members", null);
|
||||
|
@ -19,6 +19,7 @@ public class CommandExecutorClickListener implements OrcClickListener {
|
||||
p.closeInventory();
|
||||
String msg = message;
|
||||
p.chat(msg);
|
||||
// Fix for #9
|
||||
inv.redraw(p);
|
||||
}
|
||||
}
|
||||
|
@ -1,25 +1,29 @@
|
||||
package de.butzlabben.world.listener;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
|
||||
import de.butzlabben.world.WorldSystem;
|
||||
import de.butzlabben.world.config.PluginConfig;
|
||||
import de.butzlabben.world.config.WorldConfig;
|
||||
import de.butzlabben.world.wrapper.WorldPlayer;
|
||||
|
||||
public class PlayerDeathListener implements Listener {
|
||||
|
||||
private HashMap<UUID, World> deathLocations = new HashMap<>();
|
||||
|
||||
@EventHandler
|
||||
public void onDie(PlayerDeathEvent e) {
|
||||
e.setDeathMessage(null);
|
||||
Player p = e.getEntity();
|
||||
WorldPlayer wp = new WorldPlayer(p, p.getWorld().getName());
|
||||
if (wp.isOnSystemWorld()) {
|
||||
WorldSystem.deathLocations.put(p, p.getLocation().getWorld());
|
||||
deathLocations.put(p.getUniqueId(), p.getLocation().getWorld());
|
||||
} else {
|
||||
p.setGameMode(PluginConfig.getSpawnGamemode());
|
||||
}
|
||||
@ -28,10 +32,20 @@ public class PlayerDeathListener implements Listener {
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerRespawnEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
if (WorldSystem.deathLocations.containsKey(p)) {
|
||||
Location loc =PluginConfig.getWorldSpawn(WorldSystem.deathLocations.get(p));
|
||||
e.setRespawnLocation(loc);
|
||||
WorldSystem.deathLocations.remove(p);
|
||||
if (deathLocations.containsKey(p.getUniqueId())) {
|
||||
World world = deathLocations.remove(p.getUniqueId());
|
||||
|
||||
WorldConfig config = WorldConfig.getWorldConfig(world.getName());
|
||||
|
||||
if (config.getHome() != null) {
|
||||
e.setRespawnLocation(config.getHome());
|
||||
} else {
|
||||
if (PluginConfig.useWorldSpawn()) {
|
||||
e.setRespawnLocation(PluginConfig.getWorldSpawn(world));
|
||||
} else {
|
||||
e.setRespawnLocation(world.getSpawnLocation());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -328,7 +328,7 @@ public class SystemWorld {
|
||||
SystemWorld sw = SystemWorld.getSystemWorld(worldname);
|
||||
sw.setCreating(true);
|
||||
// For #16
|
||||
WorldSystem.creator.create(event.getWorldCreator(), sw, () -> {
|
||||
WorldSystem.getInstance().getAdapter().create(event.getWorldCreator(), sw, () -> {
|
||||
if (p != null && p.isOnline())
|
||||
p.sendMessage(MessageConfig.getWorldCreated());
|
||||
});
|
||||
|
@ -1,49 +0,0 @@
|
||||
package de.jubeki.generator;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
|
||||
abstract class AbstractGenerator extends ChunkGenerator {
|
||||
|
||||
void checkHeight(byte[][] result, int y) {
|
||||
if (result[y >> 4] == null) {
|
||||
result[y >> 4] = new byte[4096];
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
void setBlock(byte[][] result, int x, int y, int z, Material mat) {
|
||||
result[y >> 4][((y & 0xF) << 8) | (z << 4) | x] = (byte) mat.getId();
|
||||
}
|
||||
|
||||
byte[][] createDefaultResult() {
|
||||
byte[][] result = new byte[16][];
|
||||
checkHeight(result, 0);
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int z = 0; z < 16; z++) {
|
||||
setBlock(result, x, 0, z, Material.BEDROCK);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void setMaterial(byte[][] result, int min, int max, Material mat) {
|
||||
for (int y = min; y <= max; y++) {
|
||||
checkHeight(result, y);
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int z = 0; z < 16; z++) {
|
||||
setBlock(result, x, 0, z, mat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setBiome(BiomeGrid biomes, Biome biome) {
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int z = 0; z < 16; z++) {
|
||||
biomes.setBiome(x, z, biome);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package de.jubeki.generator;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
public class FlatGenerator extends AbstractGenerator {
|
||||
|
||||
private final byte[][] result = createDefaultResult();
|
||||
|
||||
public FlatGenerator() {
|
||||
this(3);
|
||||
}
|
||||
|
||||
public FlatGenerator(int height) {
|
||||
if(height < 1) {
|
||||
height = 1;
|
||||
}
|
||||
setDirt(height);
|
||||
setGrass(height);
|
||||
}
|
||||
|
||||
public byte[][] generateBlockSections(World world, Random random, int x, int z, BiomeGrid biomes) {
|
||||
setBiome(biomes, Biome.PLAINS);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void setGrass(int height) {
|
||||
checkHeight(result, height);
|
||||
for(int x = 0; x < 16; x++) {
|
||||
for(int z = 0; z < 16; z++) {
|
||||
setBlock(result, x, height, z, Material.GRASS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setDirt(int height) {
|
||||
for(int y = 1; y < height; y++) {
|
||||
checkHeight(result, y);
|
||||
for(int x = 0; x < 16; x++) {
|
||||
for(int z = 0; z < 16; z++) {
|
||||
setBlock(result, x, y, z, Material.DIRT);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
package de.jubeki.generator;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
public class GridGenerator extends AbstractGenerator {
|
||||
|
||||
public GridGenerator() {
|
||||
this(3, 15);
|
||||
}
|
||||
|
||||
public GridGenerator(int grid) {
|
||||
this(3, grid);
|
||||
}
|
||||
|
||||
private final int height, grid;
|
||||
private final byte[][] result = createDefaultResult();
|
||||
|
||||
public GridGenerator(int height, int grid) {
|
||||
this.height = height < 1 ? 1 : height;
|
||||
this.grid = (grid < 1 ? 2 : grid+1);
|
||||
setMaterial(result, 1, height-1, Material.DIRT);
|
||||
if(grid == 16) {
|
||||
for(int i = 0; i < 16; i++) {
|
||||
for(int k = 0; k < 16; k++) {
|
||||
if(i == 0 || k == 0) {
|
||||
setBlock(result, i, height, k, Material.BEDROCK);
|
||||
} else {
|
||||
setBlock(result, i, height, k, Material.GRASS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public byte[][] generateBlockSections(World world, Random random, int x, int z, BiomeGrid biomes) {
|
||||
setBiome(biomes, Biome.PLAINS);
|
||||
if(grid == 16) {
|
||||
return result;
|
||||
}
|
||||
int diffx = 16*x;
|
||||
int diffz = 16*z;
|
||||
for(int i = 0; i < 16; i++) {
|
||||
boolean set = (diffx + i) % grid == 0;
|
||||
for(int k = 0; k < 16; k++) {
|
||||
if(set || (diffz + k) % grid == 0) {
|
||||
setBlock(result, i, height, k, Material.BEDROCK);
|
||||
} else {
|
||||
setBlock(result, i, height, k, Material.GRASS);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package de.jubeki.generator;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.World;
|
||||
|
||||
public class VoidGenerator extends AbstractGenerator {
|
||||
|
||||
private final byte[][] result = new byte[16][];
|
||||
|
||||
public byte[][] generateBlockSections(World world, Random random, int x, int z, BiomeGrid biomes) {
|
||||
// setBiome(biomes, Biome.VOID);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
name: WorldSystem
|
||||
version: 2.3.1.1
|
||||
version: 2.3.1.4
|
||||
author: Butzlabben
|
||||
main: de.butzlabben.world.WorldSystem
|
||||
|
||||
@ -59,6 +59,7 @@ permissions:
|
||||
children:
|
||||
ws.tp.*: true
|
||||
ws.get: true
|
||||
ws.sethome: true
|
||||
ws.tp.world: true
|
||||
ws.tp.toother: true
|
||||
ws.tp.other: true
|
||||
|
Loading…
Reference in New Issue
Block a user