From 6e5d506a35ef0e6fd42ae16ceede7f6774c99bca Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 8 Jan 2020 09:37:18 -0500 Subject: [PATCH] Stub implementation of action filters --- core/src/mindustry/core/NetServer.java | 1 + core/src/mindustry/entities/type/Player.java | 3 +-- core/src/mindustry/net/Administration.java | 28 ++++++++++++++++++++ core/src/mindustry/net/NetConnection.java | 3 +-- gradle.properties | 2 +- 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 183bd02238..f4da9a2564 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -15,6 +15,7 @@ import mindustry.entities.*; import mindustry.entities.traits.BuilderTrait.*; import mindustry.entities.traits.*; import mindustry.entities.type.*; +import mindustry.net.Administration; import mindustry.game.EventType.*; import mindustry.game.*; import mindustry.game.Teams.*; diff --git a/core/src/mindustry/entities/type/Player.java b/core/src/mindustry/entities/type/Player.java index af1c2e5d8b..79bb9a0bbd 100644 --- a/core/src/mindustry/entities/type/Player.java +++ b/core/src/mindustry/entities/type/Player.java @@ -48,8 +48,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{ public float baseRotation; public float pointerX, pointerY; public String name = "noname"; - public @Nullable - String uuid, usid; + public @Nullable String uuid, usid; public boolean isAdmin, isTransferring, isShooting, isBoosting, isMobile, isTyping, isBuilding = true; public boolean buildWasAutoPaused = false; public float boostHeat, shootHeat, destructTime; diff --git a/core/src/mindustry/net/Administration.java b/core/src/mindustry/net/Administration.java index 47979cb2a5..972eac567e 100644 --- a/core/src/mindustry/net/Administration.java +++ b/core/src/mindustry/net/Administration.java @@ -17,6 +17,7 @@ public class Administration{ private Array bannedIPs = new Array<>(); private Array whitelist = new Array<>(); private Array chatFilters = new Array<>(); + private Array actionFilters = new Array<>(); public Administration(){ load(); @@ -71,6 +72,21 @@ public class Administration{ return current; } + /** Add a filter to actions, preventing things such as breaking or configuring blocks. */ + public void addActionFilter(ActionFilter filter){ + actionFilters.add(filter); + } + + /** @return whether this action is allowed by the action filters. */ + public boolean allowAction(Player player, PlayerAction action){ + for(ActionFilter filter : actionFilters){ + if(!filter.allow(player, action)){ + return false; + } + } + return true; + } + public int getPlayerLimit(){ return Core.settings.getInt("playerlimit", 0); } @@ -452,11 +468,18 @@ public class Administration{ } } + /** Handles chat messages from players and changes their contents. */ public interface ChatFilter{ /** @return the filtered message; a null string signals that the message should not be sent. */ @Nullable String filter(Player player, String message); } + /** Allows or disallows player actions. */ + public interface ActionFilter{ + /** @return whether this action should be permitted. if applicable, make sure to send this player a message specify why the action was prohibited. */ + boolean allow(Player player, PlayerAction action); + } + public static class TraceInfo{ public String ip, uuid; public boolean modded, mobile; @@ -469,4 +492,9 @@ public class Administration{ } } + //TODO implement + public static class PlayerAction{ + + } + } diff --git a/core/src/mindustry/net/NetConnection.java b/core/src/mindustry/net/NetConnection.java index 495b5b26f7..104ed2d431 100644 --- a/core/src/mindustry/net/NetConnection.java +++ b/core/src/mindustry/net/NetConnection.java @@ -15,8 +15,7 @@ import static mindustry.Vars.netServer; public abstract class NetConnection{ public final String address; public boolean mobile, modclient; - public @Nullable - Player player; + public @Nullable Player player; /** ID of last recieved client snapshot. */ public int lastRecievedClientSnapshot = -1; diff --git a/gradle.properties b/gradle.properties index ecc45979db..ec7e6cb03f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=dbdce4d5bfcf9d53dd21480c7d14e90a637eaa8e +archash=3b9feb19bb8e608958bcf52ca8efa99b1bd90b96