L10nAPI - Fixed compilation errors by...

...
- Removing NetherPortals listener
- Adding a #getTranslation(reference, ...variables) in User
This commit is contained in:
Florian CUNY 2017-12-22 13:31:27 +01:00
parent 4734f79ba1
commit 6178b768bb
5 changed files with 16 additions and 289 deletions

View File

@ -14,7 +14,6 @@ import us.tastybento.bskyblock.database.managers.PlayersManager;
import us.tastybento.bskyblock.database.managers.island.IslandsManager;
import us.tastybento.bskyblock.generators.IslandWorld;
import us.tastybento.bskyblock.listeners.JoinLeaveListener;
import us.tastybento.bskyblock.listeners.NetherPortals;
import us.tastybento.bskyblock.listeners.PanelListener;
import us.tastybento.bskyblock.managers.CommandsManager;
import us.tastybento.bskyblock.managers.LocalesManager;
@ -130,7 +129,6 @@ public class BSkyBlock extends JavaPlugin implements BSModule {
PluginManager manager = getServer().getPluginManager();
// Player join events
manager.registerEvents(new JoinLeaveListener(this), this);
manager.registerEvents(new NetherPortals(this), this);
manager.registerEvents(new PanelListener(this), this);
}

View File

@ -147,18 +147,23 @@ public class User {
return sender.isOp();
}
public String getTranslation(String reference, String... variables) {
String translation = plugin.getLocalesManager().get(sender, reference);
if (variables.length > 1) {
for (int i = 0; i < variables.length; i+=2) {
translation.replace(variables[i], variables[i+1]);
}
}
return translation;
}
/**
* Send a message to sender if message is not empty. Does not include color codes or spaces.
* @param reference - language file reference
* @param variables - CharSequence target, replacement pairs
*/
public void sendMessage(String reference, String... variables) {
String message = plugin.getLocalesManager().get(sender, reference);
if (variables.length > 1) {
for (int i = 0; i < variables.length; i+=2) {
message.replace(variables[i], variables[i+1]);
}
}
String message = getTranslation(reference, variables);
if (!ChatColor.stripColor(message).trim().isEmpty()) {
if (sender != null) {
sender.sendMessage(message);

View File

@ -17,6 +17,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.material.Chest;
import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.commands.User;
import us.tastybento.bskyblock.config.Settings;
import us.tastybento.bskyblock.config.Settings.GameType;
import us.tastybento.bskyblock.database.objects.Island;
@ -478,8 +479,9 @@ public class IslandBuilder {
blockToChange.setType(Material.SIGN_POST);
if (this.playerUUID != null) {
Sign sign = (Sign) blockToChange.getState();
User user = User.getInstance(playerUUID);
for (int i=0; i<4; i++) {
sign.setLine(i, BSkyBlock.getPlugin().getLocale(playerUUID).get("island.sign.line" + i).replace("[player]", playerName));
sign.setLine(i, user.getTranslation("island.sign.line" + i, "[player]", playerName));
}
((org.bukkit.material.Sign) sign.getData()).setFacingDirection(BlockFace.NORTH);
sign.update();

View File

@ -39,7 +39,7 @@ public class JoinLeaveListener implements Listener {
if (playerUUID == null) {
return;
}
User.getInstance(player);
User user = User.getInstance(player);
if (plugin.getPlayers().isKnown(playerUUID)) {
if (DEBUG)
plugin.getLogger().info("DEBUG: known player");
@ -76,7 +76,7 @@ public class JoinLeaveListener implements Listener {
if (!currentIsland.getMembers().contains(playerUUID) && !player.hasPermission(Settings.PERMPREFIX + "mod.bypassprotect")) {
if (DEBUG)
plugin.getLogger().info("DEBUG: No bypass - teleporting");
player.sendMessage(plugin.getLocale(player).get("locked.islandlocked"));
user.sendMessage("locked.islandlocked");
plugin.getIslands().homeTeleport(player);
}
}

View File

@ -1,278 +0,0 @@
package us.tastybento.bskyblock.listeners;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Vehicle;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPortalEvent;
import org.bukkit.event.player.PlayerPortalEvent;
import org.bukkit.event.world.StructureGrowEvent;
import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.config.Settings;
import us.tastybento.bskyblock.database.managers.island.IslandsManager;
import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.database.objects.Island.SettingsFlag;
import us.tastybento.bskyblock.generators.IslandWorld;
import us.tastybento.bskyblock.island.builders.IslandBuilder;
import us.tastybento.bskyblock.island.builders.IslandBuilder.IslandType;
import us.tastybento.bskyblock.util.SafeSpotTeleport;
public class NetherPortals implements Listener {
private final BSkyBlock plugin;
private final static boolean DEBUG = true;
public NetherPortals(BSkyBlock plugin) {
this.plugin = plugin;
}
/**
* This handles non-player portal use
* Currently disables portal use by entities
*
* @param event
*/
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onEntityPortal(EntityPortalEvent event) {
if (DEBUG)
plugin.getLogger().info("DEBUG: nether portal entity " + event.getFrom().getBlock().getType());
// If the nether is disabled then quit immediately
if (!Settings.netherGenerate || IslandWorld.getNetherWorld() == null) {
return;
}
if (event.getEntity() == null) {
return;
}
if (event.getFrom() != null && event.getFrom().getBlock().getType().equals(Material.ENDER_PORTAL)) {
event.setCancelled(true);
// Same action for all worlds except the end itself
if (!event.getFrom().getWorld().getEnvironment().equals(Environment.THE_END)) {
if (plugin.getServer().getWorld(Settings.worldName + "_the_end") != null) {
// The end exists
Location end_place = plugin.getServer().getWorld(Settings.worldName + "_the_end").getSpawnLocation();
event.getEntity().teleport(end_place);
if (DEBUG)
plugin.getLogger().info("DEBUG: Result teleported " + event.getEntityType() + " to " + end_place);
return;
}
}
return;
}
Location currentLocation = event.getFrom().clone();
String currentWorld = currentLocation.getWorld().getName();
// Only operate if this is Island territory
if (!currentWorld.equalsIgnoreCase(Settings.worldName) && !currentWorld.equalsIgnoreCase(Settings.worldName + "_nether")) {
return;
}
// No entities may pass with the old nether
if (!Settings.netherIslands) {
event.setCancelled(true);
return;
}
// New nether
// Entities can pass only if there are adjoining portals
Location dest = event.getFrom().toVector().toLocation(IslandWorld.getIslandWorld());
if (event.getFrom().getWorld().getEnvironment().equals(Environment.NORMAL)) {
dest = event.getFrom().toVector().toLocation(IslandWorld.getNetherWorld());
}
// Vehicles
if (event.getEntity() instanceof Vehicle) {
Vehicle vehicle = (Vehicle)event.getEntity();
vehicle.eject();
}
new SafeSpotTeleport(plugin, event.getEntity(), dest);
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerPortal(PlayerPortalEvent event) {
if (DEBUG)
plugin.getLogger().info("DEBUG: Player portal event - reason =" + event.getCause());
UUID playerUUID = event.getPlayer().getUniqueId();
// If the nether is disabled then quit immediately
if (!Settings.netherGenerate || IslandWorld.getNetherWorld() == null) {
return;
}
Location currentLocation = event.getFrom().clone();
String currentWorld = currentLocation.getWorld().getName();
if (!currentWorld.equalsIgnoreCase(Settings.worldName) && !currentWorld.equalsIgnoreCase(Settings.worldName + "_nether")
&& !currentWorld.equalsIgnoreCase(Settings.worldName + "_the_end")) {
if (DEBUG)
plugin.getLogger().info("DEBUG: not right world");
return;
}
// Check if player has permission
Island island = plugin.getIslands().getIslandAt(currentLocation);
// TODO: if ((island == null && !Settings.defaultWorldSettings.get(SettingsFlag.PORTAL))
if (island == null
|| (island != null && !(island.getFlag(SettingsFlag.PORTAL) || island.getMembers().contains(event.getPlayer().getUniqueId())))) {
// Portals use is not allowed
if (DEBUG)
plugin.getLogger().info("DEBUG: Portal use not allowed");
if (!event.getPlayer().hasPermission(Settings.PERMPREFIX + "mod.bypassprotect")) {
event.getPlayer().sendMessage(plugin.getLocale(event.getPlayer()).get("island.protected"));
event.setCancelled(true);
return;
}
}
// Determine what portal it is
switch (event.getCause()) {
case END_PORTAL:
if (DEBUG)
plugin.getLogger().info("DEBUG: End portal");
// Same action for all worlds except the end itself
if (!event.getFrom().getWorld().getEnvironment().equals(Environment.THE_END)) {
if (plugin.getServer().getWorld(Settings.worldName + "_the_end") != null) {
// The end exists
event.setCancelled(true);
Location end_place = plugin.getServer().getWorld(Settings.worldName + "_the_end").getSpawnLocation();
if (IslandsManager.isSafeLocation(end_place)) {
event.getPlayer().teleport(end_place);
// event.getPlayer().sendBlockChange(end_place,
// end_place.getBlock().getType(),end_place.getBlock().getData());
return;
} else {
event.getPlayer().sendMessage(plugin.getLocale(event.getPlayer()).get("warps.error.NotSafe"));
plugin.getIslands().homeTeleport(event.getPlayer());
return;
}
}
} else {
event.setCancelled(true);
plugin.getIslands().homeTeleport(event.getPlayer());
}
break;
case NETHER_PORTAL:
if (DEBUG)
plugin.getLogger().info("DEBUG: nether portal");
// Get the home world of this player
World homeWorld = IslandWorld.getIslandWorld();
Location home = plugin.getPlayers().getHomeLocation(event.getPlayer().getUniqueId());
if (home != null) {
homeWorld = home.getWorld();
}
if (!Settings.netherIslands) {
// Legacy action
if (event.getFrom().getWorld().getEnvironment().equals(Environment.NORMAL)) {
// Going to Nether
if (homeWorld.getEnvironment().equals(Environment.NORMAL)) {
// Home world is over world
event.setTo(IslandWorld.getNetherWorld().getSpawnLocation());
event.useTravelAgent(true);
} else {
// Home world is nether - going home
event.useTravelAgent(false);
Location dest = plugin.getIslands().getSafeHomeLocation(playerUUID,1);
if (dest != null) {
event.setTo(dest);
} else {
event.setCancelled(true);
new SafeSpotTeleport(plugin, event.getPlayer(), plugin.getIslands().getIslandLocation(playerUUID), 1);
}
}
} else {
// Going to Over world
if (homeWorld.getEnvironment().equals(Environment.NORMAL)) {
// Home world is over world
event.useTravelAgent(false);
Location dest = plugin.getIslands().getSafeHomeLocation(playerUUID,1);
if (dest != null) {
event.setTo(dest);
} else {
event.setCancelled(true);
new SafeSpotTeleport(plugin, event.getPlayer(), plugin.getIslands().getIslandLocation(playerUUID), 1);
}
} else {
// Home world is nether
event.setTo(IslandWorld.getIslandWorld().getSpawnLocation());
event.useTravelAgent(true);
}
}
} else {
// Island Nether
if (DEBUG)
plugin.getLogger().info("DEBUG: Island nether");
// Get location of the island where the player is at
if (island == null) {
if (DEBUG)
plugin.getLogger().info("DEBUG: island is null");
event.setCancelled(true);
return;
}
// Can go both ways now
Location overworldIsland = island.getCenter().toVector().toLocation(IslandWorld.getIslandWorld());
Location netherIsland = island.getCenter().toVector().toLocation(IslandWorld.getNetherWorld());
//Location dest = event.getFrom().toVector().toLocation(IslandWorld.getIslandWorld());
if (event.getFrom().getWorld().getEnvironment().equals(Environment.NORMAL)) {
// Going to Nether
// Check that there is a nether island there. Due to legacy reasons it may not exist
if (DEBUG)
plugin.getLogger().info("DEBUG: island center = " + island.getCenter());
if (netherIsland.getBlock().getType() != Material.BEDROCK) {
// Check to see if there is anything there
if (plugin.getIslands().bigScan(netherIsland, 20) == null) {
if (DEBUG)
plugin.getLogger().info("DEBUG: big scan is null");
plugin.getLogger().warning("Creating nether island for " + event.getPlayer().getName());
new IslandBuilder(island)
.setPlayer(event.getPlayer())
.setChestItems(Settings.chestItems)
.setType(IslandType.NETHER)
.build();
}
}
if (DEBUG)
plugin.getLogger().info("DEBUG: Teleporting to " + event.getFrom().toVector().toLocation(IslandWorld.getNetherWorld()));
event.setCancelled(true);
// Teleport using the new safeSpot teleport
new SafeSpotTeleport(plugin, event.getPlayer(), netherIsland);
return;
}
// Going to the over world - if there isn't an island, do nothing
event.setCancelled(true);
// Teleport using the new safeSpot teleport
new SafeSpotTeleport(plugin, event.getPlayer(), overworldIsland);
}
break;
default:
break;
}
}
/**
* Converts trees to gravel and glowstone
*
* @param e
*/
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onTreeGrow(final StructureGrowEvent e) {
if (DEBUG)
plugin.getLogger().info("DEBUG: " + e.getEventName());
if (!Settings.netherTrees) {
return;
}
if (!Settings.netherGenerate || IslandWorld.getNetherWorld() == null) {
return;
}
// Check world
if (!e.getLocation().getWorld().equals(IslandWorld.getNetherWorld())) {
return;
}
for (BlockState b : e.getBlocks()) {
if (b.getType() == Material.LOG || b.getType() == Material.LOG_2) {
b.setType(Material.GRAVEL);
} else if (b.getType() == Material.LEAVES || b.getType() == Material.LEAVES_2) {
b.setType(Material.GLOWSTONE);
}
}
}
}