Fixed block usage for blocks without metadata + public use

This commit is contained in:
kuroppoi 2022-01-16 04:56:04 +01:00
parent 4a36864036
commit a10f2d04b2
3 changed files with 28 additions and 2 deletions

View file

@ -180,7 +180,11 @@ public class PlayerManager {
public Player getPlayer(String name) {
return playersByName.get(name.toLowerCase());
}
public Player getPlayerById(String id) {
return playersById.get(id);
}
public Player getPlayer(Connection connection) {
return playersByConnection.get(connection);
}

View file

@ -14,6 +14,8 @@ public enum ItemUseType {
FIELDABLE,
FLY,
MULTI,
PROTECTED,
PUBLIC,
SWITCH,
SWITCHED,
TELEPORT,

View file

@ -48,6 +48,26 @@ public class BlockUseRequest extends PlayerRequest {
Item item = block.getItem(layer);
int mod = block.getMod(layer);
if(metaBlock != null && item.hasUse(ItemUseType.PROTECTED)) {
Player owner = GameServer.getInstance().getPlayerManager().getPlayerById(metaBlock.getOwner());
if(player != owner) {
if(item.hasUse(ItemUseType.PUBLIC)) {
String publicUse = item.getUse(ItemUseType.PUBLIC).toString();
switch(publicUse) {
case "owner":
player.alert(String.format("This %s is owned by %s.",
item.getTitle().toLowerCase(), owner == null ? "nobody.." : owner.getName()));
break;
}
} else {
player.alert("Sorry, that belongs to somebody else.");
return;
}
}
}
for(Entry<ItemUseType, Object> entry : item.getUses().entrySet()) {
ItemUseType use = entry.getKey();
Object value = entry.getValue();
@ -55,7 +75,7 @@ public class BlockUseRequest extends PlayerRequest {
switch(use) {
case DIALOG:
case CREATE_DIALOG:
if(metaBlock != null && player.getDocumentId().equals(metaBlock.getOwner()) && data != null && value instanceof Map) {
if(data != null && value instanceof Map) {
Map<String, Object> config = (Map<String, Object>)value;
String target = MapHelper.getString(config, "target", "none");