Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
445638a561 | |||
7f9dc6756b | |||
b2bb995d7e | |||
f92fd2de5d | |||
2ed0fe7817 | |||
27b964837f | |||
4b34ea3cf5 | |||
0740cd0a66 | |||
bab51d76fd |
14
README.md
14
README.md
@ -389,6 +389,20 @@ portalInfoServer=Server: %server%
|
||||
|
||||
# Changes
|
||||
|
||||
#### \[Version 0.9.2.3] EpicKnarvik97 fork
|
||||
|
||||
- Fixes a typo which caused both colors to change into the highlightSignColor
|
||||
|
||||
#### \[Version 0.9.2.2] EpicKnarvik97 fork
|
||||
|
||||
- Prevents teleportation of a player holding creatures on a leash when handleLeashedCreatures is disabled, to prevent
|
||||
players accidentally losing the creatures during teleportation
|
||||
- Fixes a potential exception when a gate's open-block or closed-block is set to a material which isn't a block
|
||||
- Fixes a potential exception when a portal without a sign has an invalid gate type
|
||||
- Prevents loading of gate files using non-blocks as part of the border
|
||||
- Prevents a player smuggling another player through a restricted stargate by sitting on a creature held in a lead by
|
||||
the first player
|
||||
|
||||
#### \[Version 0.9.2.1] EpicKnarvik97 fork
|
||||
|
||||
- Makes sure to only reload whatever is necessary when config values are changed using commands, instead of reloading
|
||||
|
2
pom.xml
2
pom.xml
@ -4,7 +4,7 @@
|
||||
|
||||
<groupId>net.knarcraft</groupId>
|
||||
<artifactId>Stargate</artifactId>
|
||||
<version>0.9.2.1</version>
|
||||
<version>0.9.2.3</version>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
|
@ -188,15 +188,13 @@ public final class StargateGateConfig {
|
||||
* @param mainSignColor <p>A string representing the main sign color</p>
|
||||
*/
|
||||
private void loadSignColor(String mainSignColor, String highlightSignColor) {
|
||||
if (mainSignColor != null && highlightSignColor != null) {
|
||||
try {
|
||||
PortalSignDrawer.setMainColor(ChatColor.valueOf(highlightSignColor.toUpperCase()));
|
||||
PortalSignDrawer.setHighlightColor(ChatColor.valueOf(highlightSignColor.toUpperCase()));
|
||||
} catch (IllegalArgumentException | NullPointerException ignored) {
|
||||
Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE");
|
||||
PortalSignDrawer.setMainColor(ChatColor.BLACK);
|
||||
PortalSignDrawer.setHighlightColor(ChatColor.WHITE);
|
||||
}
|
||||
try {
|
||||
PortalSignDrawer.setMainColor(ChatColor.valueOf(mainSignColor.toUpperCase()));
|
||||
PortalSignDrawer.setHighlightColor(ChatColor.valueOf(highlightSignColor.toUpperCase()));
|
||||
} catch (IllegalArgumentException | NullPointerException exception) {
|
||||
Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE");
|
||||
PortalSignDrawer.setMainColor(ChatColor.BLACK);
|
||||
PortalSignDrawer.setHighlightColor(ChatColor.WHITE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import net.knarcraft.stargate.portal.Portal;
|
||||
import net.knarcraft.stargate.portal.PortalActivator;
|
||||
import net.knarcraft.stargate.portal.PortalHandler;
|
||||
import net.knarcraft.stargate.portal.teleporter.PlayerTeleporter;
|
||||
import net.knarcraft.stargate.portal.teleporter.Teleporter;
|
||||
import net.knarcraft.stargate.portal.teleporter.VehicleTeleporter;
|
||||
import net.knarcraft.stargate.utility.BungeeHelper;
|
||||
import net.knarcraft.stargate.utility.MaterialHelper;
|
||||
@ -170,7 +171,9 @@ public class PlayerEventListener implements Listener {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
//Make sure to check if the player has any leashed creatures, even though leashed teleportation is disabled
|
||||
return Teleporter.noLeashedCreaturesPreventTeleportation(player);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,6 +3,7 @@ package net.knarcraft.stargate.listener;
|
||||
import net.knarcraft.stargate.Stargate;
|
||||
import net.knarcraft.stargate.portal.Portal;
|
||||
import net.knarcraft.stargate.portal.PortalHandler;
|
||||
import net.knarcraft.stargate.portal.teleporter.Teleporter;
|
||||
import net.knarcraft.stargate.portal.teleporter.VehicleTeleporter;
|
||||
import net.knarcraft.stargate.utility.EconomyHelper;
|
||||
import net.knarcraft.stargate.utility.EntityHelper;
|
||||
@ -166,10 +167,14 @@ public class VehicleEventListener implements Listener {
|
||||
//Check if the player is able to afford the teleport fee
|
||||
int cost = EconomyHelper.getUseCost(player, entrancePortal, destinationPortal);
|
||||
boolean canAffordFee = cost <= 0 || Stargate.getEconomyConfig().canAffordFee(player, cost);
|
||||
if (!canAffordFee && !entrancePortal.getOptions().isSilent()) {
|
||||
Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("ecoInFunds"));
|
||||
if (!canAffordFee) {
|
||||
if (!entrancePortal.getOptions().isSilent()) {
|
||||
Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("ecoInFunds"));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return canAffordFee;
|
||||
|
||||
return Teleporter.noLeashedCreaturesPreventTeleportation(player);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -293,7 +293,10 @@ public class PortalSignDrawer {
|
||||
* @param lineIndex <p>The index of the line the invalid portal was found at</p>
|
||||
*/
|
||||
public static void markPortalWithInvalidGate(PortalLocation portalLocation, String gateName, int lineIndex) {
|
||||
Sign sign = (Sign) portalLocation.getSignLocation().getBlock().getState();
|
||||
BlockState blockState = portalLocation.getSignLocation().getBlock().getState();
|
||||
if (!(blockState instanceof Sign sign)) {
|
||||
return;
|
||||
}
|
||||
sign.setLine(3, errorColor + Stargate.getString("signInvalidGate"));
|
||||
sign.update();
|
||||
|
||||
|
@ -69,6 +69,15 @@ public class Gate {
|
||||
return layout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a copy of the character to material mapping for this gate
|
||||
*
|
||||
* @return <p>The character to material map</p>
|
||||
*/
|
||||
public Map<Character, Material> getCharacterMaterialMap() {
|
||||
return new HashMap<>(characterMaterialMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the material type used for this gate's control blocks
|
||||
*
|
||||
|
@ -188,16 +188,35 @@ public class GateHandler {
|
||||
* @return <p>True if the gate is valid. False otherwise</p>
|
||||
*/
|
||||
private static boolean validateGate(Gate gate, String fileName) {
|
||||
String failString = String.format("Could not load Gate %s", fileName) + " - %s";
|
||||
|
||||
if (gate.getLayout().getControls().length != 2) {
|
||||
Stargate.logSevere(String.format("Could not load Gate %s - Gates must have exactly 2 control points.",
|
||||
fileName));
|
||||
Stargate.logSevere(String.format(failString, "Gates must have exactly 2 control points."));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!MaterialHelper.isButtonCompatible(gate.getPortalButton())) {
|
||||
Stargate.logSevere(String.format("Could not load Gate %s - Gate button must be a type of button.", fileName));
|
||||
Stargate.logSevere(String.format(failString, "Gate button must be a type of button."));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!gate.getPortalOpenBlock().isBlock()) {
|
||||
Stargate.logSevere(String.format(failString, "Gate open block must be a type of block."));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!gate.getPortalClosedBlock().isBlock()) {
|
||||
Stargate.logSevere(String.format(failString, "Gate closed block must be a type of block."));
|
||||
return false;
|
||||
}
|
||||
|
||||
for (Material material : gate.getCharacterMaterialMap().values()) {
|
||||
if (!material.isBlock()) {
|
||||
Stargate.logSevere(String.format(failString, "Every gate border block must be a type of block."));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -250,9 +250,37 @@ public abstract class Teleporter {
|
||||
return chunksToLoad;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a player has leashed creatures that block the teleportation
|
||||
*
|
||||
* @param player <p>The player trying to teleport</p>
|
||||
* @return <p>False if the player has leashed any creatures that cannot go through the portal</p>
|
||||
*/
|
||||
public static boolean noLeashedCreaturesPreventTeleportation(Player player) {
|
||||
//Find any nearby leashed entities to teleport with the player
|
||||
List<Creature> nearbyCreatures = getLeashedCreatures(player);
|
||||
|
||||
//Disallow creatures with passengers to prevent smuggling
|
||||
for (Creature creature : nearbyCreatures) {
|
||||
if (!creature.getPassengers().isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//If it's enabled, there is no problem
|
||||
if (Stargate.getGateConfig().handleLeashedCreatures()) {
|
||||
return true;
|
||||
} else {
|
||||
return nearbyCreatures.isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Teleports any creatures leashed by the player
|
||||
*
|
||||
* <p>Will return false if the teleportation should be aborted because the player has leashed creatures that
|
||||
* aren't allowed to be teleported with the player.</p>
|
||||
*
|
||||
* @param player <p>The player which is teleported</p>
|
||||
* @param origin <p>The portal the player is teleporting from</p>
|
||||
*/
|
||||
@ -264,6 +292,7 @@ public abstract class Teleporter {
|
||||
|
||||
//Find any nearby leashed entities to teleport with the player
|
||||
List<Creature> nearbyEntities = getLeashedCreatures(player);
|
||||
|
||||
//Teleport all creatures leashed by the player to the portal the player is to exit from
|
||||
for (Creature creature : nearbyEntities) {
|
||||
creature.setLeashHolder(null);
|
||||
@ -280,7 +309,7 @@ public abstract class Teleporter {
|
||||
* @param player <p>The player to check</p>
|
||||
* @return <p>A list of all creatures the player is holding in a leash (lead)</p>
|
||||
*/
|
||||
protected List<Creature> getLeashedCreatures(Player player) {
|
||||
protected static List<Creature> getLeashedCreatures(Player player) {
|
||||
List<Creature> leashedCreatures = new ArrayList<>();
|
||||
//Find any nearby leashed entities to teleport with the player
|
||||
List<Entity> nearbyEntities = player.getNearbyEntities(15, 15, 15);
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: Stargate
|
||||
main: net.knarcraft.stargate.Stargate
|
||||
version: 0.9.2.1
|
||||
version: 0.9.2.3
|
||||
description: Stargate mod for Bukkit Revived
|
||||
author: EpicKnarvik97
|
||||
authors: [ Drakia, PseudoKnight, EpicKnarvik97 ]
|
||||
|
Reference in New Issue
Block a user