Merge remote-tracking branch 'origin/develop'
Conflicts: pom.xml
This commit is contained in:
commit
db3b1fe5cf
6
pom.xml
6
pom.xml
|
@ -58,15 +58,15 @@
|
||||||
<!-- Non-minecraft related dependencies -->
|
<!-- Non-minecraft related dependencies -->
|
||||||
<powermock.version>2.0.2</powermock.version>
|
<powermock.version>2.0.2</powermock.version>
|
||||||
<!-- More visible way how to change dependency versions -->
|
<!-- More visible way how to change dependency versions -->
|
||||||
<spigot.version>1.16.1-R0.1-SNAPSHOT</spigot.version>
|
<spigot.version>1.16.3-R0.1-SNAPSHOT</spigot.version>
|
||||||
<bentobox.version>1.14.0</bentobox.version>
|
<bentobox.version>1.15.4</bentobox.version>
|
||||||
<level.version>1.5.0</level.version>
|
<level.version>1.5.0</level.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>
|
||||||
<!-- Do not change unless you want different name for local builds. -->
|
<!-- Do not change unless you want different name for local builds. -->
|
||||||
<build.number>-LOCAL</build.number>
|
<build.number>-LOCAL</build.number>
|
||||||
<!-- This allows to change between versions. -->
|
<!-- This allows to change between versions. -->
|
||||||
<build.version>1.10.1</build.version>
|
<build.version>1.10.2</build.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<!-- Profiles will allow to automatically change build version. -->
|
<!-- Profiles will allow to automatically change build version. -->
|
||||||
|
|
|
@ -186,7 +186,12 @@ public class WarpSignsManager {
|
||||||
// Load into map
|
// Load into map
|
||||||
if (warpsData != null) {
|
if (warpsData != null) {
|
||||||
warpsData.getWarpSigns().forEach((k,v) -> {
|
warpsData.getWarpSigns().forEach((k,v) -> {
|
||||||
if (k != null && k.getWorld() != null && k.getBlock().getType().name().contains("SIGN")) {
|
if (k != null && k.getWorld() != null) {
|
||||||
|
if (k.getWorld().isChunkLoaded(k.getBlockX() >> 4, k.getBlockZ() >> 4)
|
||||||
|
&& !k.getBlock().getType().name().contains("SIGN")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Add to map
|
// Add to map
|
||||||
getWarpMap(k.getWorld()).put(v, k);
|
getWarpMap(k.getWorld()).put(v, k);
|
||||||
}
|
}
|
||||||
|
@ -327,13 +332,17 @@ public class WarpSignsManager {
|
||||||
final Location actualWarp = new Location(inFront.getWorld(), inFront.getBlockX() + 0.5D, inFront.getBlockY(),
|
final Location actualWarp = new Location(inFront.getWorld(), inFront.getBlockX() + 0.5D, inFront.getBlockY(),
|
||||||
inFront.getBlockZ() + 0.5D, yaw, 30F);
|
inFront.getBlockZ() + 0.5D, yaw, 30F);
|
||||||
Util.teleportAsync(user.getPlayer(), actualWarp, TeleportCause.COMMAND);
|
Util.teleportAsync(user.getPlayer(), actualWarp, TeleportCause.COMMAND);
|
||||||
|
User warpOwner = User.getInstance(signOwner);
|
||||||
|
// Hide invisible players
|
||||||
|
if (warpOwner.isOnline() && !warpOwner.getPlayer().canSee(user.getPlayer())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (pvp) {
|
if (pvp) {
|
||||||
user.sendMessage("protection.flags.PVP_OVERWORLD.active");
|
user.sendMessage("protection.flags.PVP_OVERWORLD.active");
|
||||||
user.getWorld().playSound(user.getLocation(), Sound.ENTITY_ARROW_HIT, 1F, 1F);
|
user.getWorld().playSound(user.getLocation(), Sound.ENTITY_ARROW_HIT, 1F, 1F);
|
||||||
} else {
|
} else {
|
||||||
user.getWorld().playSound(user.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 1F, 1F);
|
user.getWorld().playSound(user.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 1F, 1F);
|
||||||
}
|
}
|
||||||
User warpOwner = User.getInstance(signOwner);
|
|
||||||
if (!warpOwner.equals(user)) {
|
if (!warpOwner.equals(user)) {
|
||||||
warpOwner.sendMessage("warps.player-warped", "[name]", user.getName());
|
warpOwner.sendMessage("warps.player-warped", "[name]", user.getName());
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ import world.bentobox.warps.Warp;
|
||||||
* The /is warp <name> command
|
* The /is warp <name> command
|
||||||
*
|
*
|
||||||
* @author tastybento
|
* @author tastybento
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class WarpCommand extends DelayedTeleportCommand {
|
public class WarpCommand extends DelayedTeleportCommand {
|
||||||
|
|
||||||
|
@ -52,12 +51,22 @@ public class WarpCommand extends DelayedTeleportCommand {
|
||||||
user.sendMessage("warps.warpTip", "[text]", addon.getSettings().getWelcomeLine());
|
user.sendMessage("warps.warpTip", "[text]", addon.getSettings().getWelcomeLine());
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
// Check if this is part of a name
|
// Attemp to find warp with exact player's name
|
||||||
UUID foundWarp = warpList.stream().filter(u -> getPlayers().getName(u).equalsIgnoreCase(args.get(0))
|
UUID foundWarp = warpList.stream().filter(u -> getPlayers().getName(u).equalsIgnoreCase(args.get(0))).findFirst().orElse(null);
|
||||||
|| getPlayers().getName(u).toLowerCase().startsWith(args.get(0).toLowerCase())).findFirst().orElse(null);
|
|
||||||
if (foundWarp == null) {
|
if (foundWarp == null) {
|
||||||
user.sendMessage("warps.error.does-not-exist");
|
|
||||||
return false;
|
// Atempt to find warp which starts with the given name
|
||||||
|
UUID foundAlernativeWarp = warpList.stream().filter(u -> getPlayers().getName(u).toLowerCase().startsWith(args.get(0).toLowerCase())).findFirst().orElse(null);
|
||||||
|
|
||||||
|
if (foundAlernativeWarp == null) {
|
||||||
|
user.sendMessage("warps.error.does-not-exist");
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
// Alternative warp found!
|
||||||
|
this.delayCommand(user, () -> addon.getWarpSignsManager().warpPlayer(world, user, foundAlernativeWarp));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Warp exists!
|
// Warp exists!
|
||||||
this.delayCommand(user, () -> addon.getWarpSignsManager().warpPlayer(world, user, foundWarp));
|
this.delayCommand(user, () -> addon.getWarpSignsManager().warpPlayer(world, user, foundWarp));
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package world.bentobox.warps.listeners;
|
package world.bentobox.warps.listeners;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.*;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -16,9 +15,12 @@ import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.SignChangeEvent;
|
import org.bukkit.event.block.SignChangeEvent;
|
||||||
|
|
||||||
|
import org.bukkit.event.world.ChunkLoadEvent;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import world.bentobox.bentobox.BentoBox;
|
import world.bentobox.bentobox.BentoBox;
|
||||||
import world.bentobox.bentobox.api.events.team.TeamEvent.TeamKickEvent;
|
import world.bentobox.bentobox.api.events.addon.AddonEvent;
|
||||||
import world.bentobox.bentobox.api.events.team.TeamEvent.TeamLeaveEvent;
|
import world.bentobox.bentobox.api.events.team.TeamKickEvent;
|
||||||
|
import world.bentobox.bentobox.api.events.team.TeamLeaveEvent;
|
||||||
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.warps.Warp;
|
import world.bentobox.warps.Warp;
|
||||||
|
@ -44,20 +46,49 @@ public class WarpSignsListener implements Listener {
|
||||||
this.plugin = addon.getPlugin();
|
this.plugin = addon.getPlugin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
|
public void onChunkLoad(ChunkLoadEvent event) {
|
||||||
|
// Delay to wait the chunk to be fully loaded
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
boolean changed = false;
|
||||||
|
Iterator<Map.Entry<UUID, Location>> iterator =
|
||||||
|
addon.getWarpSignsManager().getWarpMap(event.getWorld()).entrySet().iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Map.Entry<UUID, Location> entry = iterator.next();
|
||||||
|
UUID uuid = entry.getKey();
|
||||||
|
Location location = entry.getValue();
|
||||||
|
if (event.getChunk().getX() == location.getBlockX() >> 4
|
||||||
|
&& event.getChunk().getZ() == location.getBlockZ() >> 4
|
||||||
|
&& !Tag.SIGNS.isTagged(location.getBlock().getType())) {
|
||||||
|
iterator.remove();
|
||||||
|
// Remove sign from warp panel cache
|
||||||
|
addon.getWarpPanelManager().removeWarp(event.getWorld(), uuid);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (changed) {
|
||||||
|
addon.getWarpSignsManager().saveWarpList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTask(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onPlayerLeave(TeamLeaveEvent e) {
|
public void onPlayerLeave(TeamLeaveEvent e) {
|
||||||
// Remove any warp signs from this game mode
|
// Remove any warp signs from this game mode
|
||||||
addon.getWarpSignsManager().removeWarp(e.getIsland().getWorld(), e.getPlayerUUID());
|
addon.getWarpSignsManager().removeWarp(e.getIsland().getWorld(), e.getPlayerUUID());
|
||||||
User.getInstance(e.getPlayerUUID()).sendMessage("warps.deactivate");
|
User.getInstance(e.getPlayerUUID()).sendMessage("warps.deactivate");
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onPlayerLeave(TeamKickEvent e) {
|
public void onPlayerLeave(TeamKickEvent e) {
|
||||||
// Remove any warp signs from this game mode
|
// Remove any warp signs from this game mode
|
||||||
addon.getWarpSignsManager().removeWarp(e.getIsland().getWorld(), e.getPlayerUUID());
|
addon.getWarpSignsManager().removeWarp(e.getIsland().getWorld(), e.getPlayerUUID());
|
||||||
User.getInstance(e.getPlayerUUID()).sendMessage("warps.deactivate");
|
User.getInstance(e.getPlayerUUID()).sendMessage("warps.deactivate");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks to see if a sign has been broken
|
* Checks to see if a sign has been broken
|
||||||
* @param e - event
|
* @param e - event
|
||||||
|
@ -197,6 +228,13 @@ public class WarpSignsListener implements Listener {
|
||||||
for (int i = 1; i<4; i++) {
|
for (int i = 1; i<4; i++) {
|
||||||
e.setLine(i, ChatColor.translateAlternateColorCodes('&', e.getLine(i)));
|
e.setLine(i, ChatColor.translateAlternateColorCodes('&', e.getLine(i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Map<String, Object> keyValues = new HashMap<>();
|
||||||
|
keyValues.put("eventName", "WarpCreateEvent");
|
||||||
|
keyValues.put("targetPlayer", user.getUniqueId());
|
||||||
|
keyValues.put("location", Util.getStringLocation(b.getLocation()));
|
||||||
|
|
||||||
|
new AddonEvent().builder().addon(addon).keyValues(keyValues).build();
|
||||||
}
|
}
|
||||||
// Else null player
|
// Else null player
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ name: Warps
|
||||||
main: world.bentobox.warps.Warp
|
main: world.bentobox.warps.Warp
|
||||||
version: ${version}${build.number}
|
version: ${version}${build.number}
|
||||||
icon: OAK_SIGN
|
icon: OAK_SIGN
|
||||||
api-version: 1.14
|
api-version: 1.15.4
|
||||||
|
|
||||||
authors: tastybento
|
authors: tastybento
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,27 @@
|
||||||
###########################################################################################
|
---
|
||||||
# This is a YML file. Be careful when editing. Check your edits in a YAML checker like #
|
warp:
|
||||||
# the one at http://yaml-online-parser.appspot.com #
|
help:
|
||||||
###########################################################################################
|
description: Oyuncunun bölge tabelası.
|
||||||
|
parameters: "<name>"
|
||||||
warp:
|
warps:
|
||||||
help:
|
|
||||||
description: "Oyuncunun bölge tabelası."
|
|
||||||
parameters: <name>
|
|
||||||
warps:
|
|
||||||
deactivate: "&cEski ada warpı silindi!"
|
deactivate: "&cEski ada warpı silindi!"
|
||||||
error:
|
error:
|
||||||
does-not-exist: "&4Malasef sorun oluştu. Tekrar dene."
|
does-not-exist: "&cÜzgünüm. Böyle bir bölge artık yok!"
|
||||||
no-permission: "&4Buna yetkin yok!"
|
no-permission: "&4Buna yetkin yok!"
|
||||||
|
not-safe: "&4Ada bölgesi güvenli değil!"
|
||||||
no-remove: "&4Bu tabelayı kıramazsın!"
|
no-remove: "&4Bu tabelayı kıramazsın!"
|
||||||
no-warps-yet: "&4Böyle bir bölge henüz yok."
|
no-warps-yet: "&4Böyle bir bölge henüz yok."
|
||||||
not-enough-level: "&4Bunu koyman için daha fazla ada leveline ihtiyacın var."
|
not-enough-level: "&4Bunu koyman için daha fazla ada leveline ihtiyacın var."
|
||||||
not-on-island: "&4Adanda değilsin."
|
not-on-island: "&4Adanda değilsin."
|
||||||
not-safe: "&4Ada bölgesi güvenli değil!"
|
|
||||||
your-level-is: "&9Ada levelin &e[level] &9ve &e[required]&9'den fazla olması gerek!"
|
your-level-is: "&9Ada levelin &e[level] &9ve &e[required]&9'den fazla olması gerek!"
|
||||||
help:
|
help:
|
||||||
description: "Bölge panelini açar."
|
description: Bölge panelini açar.
|
||||||
next: "&6Sonraki Sayfa"
|
|
||||||
player-warped: "&d[name] &9ada bölgene ışınlandı!"
|
player-warped: "&d[name] &9ada bölgene ışınlandı!"
|
||||||
previous: "&6Önceki sayfa"
|
|
||||||
sign-removed: "&4Ada tabelası kaldırıldı!"
|
sign-removed: "&4Ada tabelası kaldırıldı!"
|
||||||
success: "&9Başarılı!"
|
success: "&aBaşarılı!"
|
||||||
title: "&3&lSon&b&lCesurlar &e&lBölgeler &5"
|
title: "&dOyuncu bölgeleri &8- &5"
|
||||||
warpTip: "&9Ada warpı açmak için tabelanın en üstüne &e[text] &9yaz!"
|
warpTip: "&6Ada bölgesi açmak için tabelanın en üstüne &a[text] &9yaz!"
|
||||||
warpToPlayersSign: "&d[player] &9bölgesine gidiliyor!"
|
warpToPlayersSign: "&d[player] &9bölgesine gidiliyor!"
|
||||||
|
next: "&6Sonraki Sayfa"
|
||||||
|
previous: "&6Önceki sayfa"
|
||||||
|
random: "&4Rastgele bölgeye git!"
|
||||||
|
|
|
@ -20,13 +20,7 @@ import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.*;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.OfflinePlayer;
|
|
||||||
import org.bukkit.Server;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.World.Environment;
|
import org.bukkit.World.Environment;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
|
@ -165,7 +159,8 @@ public class WarpSignsManagerTest {
|
||||||
when(location.getBlockY()).thenReturn(24);
|
when(location.getBlockY()).thenReturn(24);
|
||||||
when(location.getBlockZ()).thenReturn(25);
|
when(location.getBlockZ()).thenReturn(25);
|
||||||
when(world.getEnvironment()).thenReturn(Environment.NORMAL);
|
when(world.getEnvironment()).thenReturn(Environment.NORMAL);
|
||||||
|
when(world.isChunkLoaded(anyInt(), anyInt())).thenReturn(true);
|
||||||
|
|
||||||
// Block
|
// Block
|
||||||
when(block.getType()).thenReturn(Material.ACACIA_SIGN);
|
when(block.getType()).thenReturn(Material.ACACIA_SIGN);
|
||||||
when(block.getLocation()).thenReturn(location);
|
when(block.getLocation()).thenReturn(location);
|
||||||
|
|
|
@ -219,6 +219,7 @@ public class WarpCommandTest {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testExecuteUserStringListOfStringKnownPlayerStartOnly() {
|
public void testExecuteUserStringListOfStringKnownPlayerStartOnly() {
|
||||||
|
when(pm.getName(any())).thenReturn("tastybento");
|
||||||
warpCommandWarpCompositeCommand();
|
warpCommandWarpCompositeCommand();
|
||||||
assertTrue(wc.execute(user, "warp", Collections.singletonList("tAsTy")));
|
assertTrue(wc.execute(user, "warp", Collections.singletonList("tAsTy")));
|
||||||
//verify(wsm).warpPlayer(eq(world), eq(user), any());
|
//verify(wsm).warpPlayer(eq(world), eq(user), any());
|
||||||
|
|
Loading…
Reference in New Issue