forked from SteamWar/SteamWar
Configurable techhider interaction suppression
This commit is contained in:
@@ -32,6 +32,7 @@ import de.steamwar.fightsystem.states.StateDependent;
|
|||||||
import de.steamwar.fightsystem.states.StateDependentListener;
|
import de.steamwar.fightsystem.states.StateDependentListener;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import de.steamwar.techhider.TechHider;
|
import de.steamwar.techhider.TechHider;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -114,6 +115,11 @@ public class TechHiderWrapper extends StateDependent implements TechHider.Locati
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean suppressInteractions(Player player) {
|
||||||
|
return player.getGameMode() == GameMode.SPECTATOR;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipChunk(Player player, int chunkX, int chunkZ) {
|
public boolean skipChunk(Player player, int chunkX, int chunkZ) {
|
||||||
return getHiddenRegion(player).chunkOutside(chunkX, chunkZ);
|
return getHiddenRegion(player).chunkOutside(chunkX, chunkZ);
|
||||||
|
|||||||
@@ -19,15 +19,16 @@
|
|||||||
|
|
||||||
package de.steamwar.techhider;
|
package de.steamwar.techhider;
|
||||||
|
|
||||||
import de.steamwar.Reflection;
|
|
||||||
import com.comphenix.tinyprotocol.TinyProtocol;
|
import com.comphenix.tinyprotocol.TinyProtocol;
|
||||||
|
import de.steamwar.Reflection;
|
||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.GameMode;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.UnaryOperator;
|
import java.util.function.UnaryOperator;
|
||||||
@@ -91,9 +92,9 @@ public class TechHider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(Core.getVersion() > 8){
|
if(Core.getVersion() > 8){
|
||||||
techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundUseItemOnPacket"), (p, packet) -> p.getGameMode() == GameMode.SPECTATOR ? null : packet);
|
techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundUseItemOnPacket"), (p, packet) -> locationEvaluator.suppressInteractions(p) ? null : packet);
|
||||||
}
|
}
|
||||||
techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundInteractPacket"), (p, packet) -> p.getGameMode() == GameMode.SPECTATOR ? null : packet);
|
techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundInteractPacket"), (p, packet) -> locationEvaluator.suppressInteractions(p) ? null : packet);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,6 +162,10 @@ public class TechHider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface LocationEvaluator {
|
public interface LocationEvaluator {
|
||||||
|
default boolean suppressInteractions(Player player) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
boolean skipChunk(Player player, int x, int z);
|
boolean skipChunk(Player player, int x, int z);
|
||||||
default boolean skipChunkSection(Player player, int x, int y, int z) {
|
default boolean skipChunkSection(Player player, int x, int y, int z) {
|
||||||
return skipChunk(player, x, z);
|
return skipChunk(player, x, z);
|
||||||
|
|||||||
Reference in New Issue
Block a user