mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-12-31 21:07:50 +01:00
Now we use Maven - plugin description/website added to
plugin.yml - a bit of missing whitespace formatting
This commit is contained in:
parent
d502f66472
commit
79d545f5e3
31
.gitignore
vendored
Normal file
31
.gitignore
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Eclipse stuff
|
||||||
|
/.classpath
|
||||||
|
/.project
|
||||||
|
/.settings
|
||||||
|
|
||||||
|
# netbeans
|
||||||
|
/nbproject
|
||||||
|
|
||||||
|
# we use maven!
|
||||||
|
/build.xml
|
||||||
|
|
||||||
|
# maven
|
||||||
|
/target
|
||||||
|
|
||||||
|
# vim
|
||||||
|
.*.sw[a-p]
|
||||||
|
|
||||||
|
# various other potential build files
|
||||||
|
/build
|
||||||
|
/bin
|
||||||
|
/dist
|
||||||
|
/manifest.mf
|
||||||
|
|
||||||
|
# Mac filesystem dust
|
||||||
|
/.DS_Store
|
||||||
|
|
||||||
|
# intellij
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
.idea/
|
@ -1,9 +1,12 @@
|
|||||||
name: NoCheat
|
name: NoCheat
|
||||||
|
version: ${project.version}
|
||||||
|
description: ${project.description}
|
||||||
|
|
||||||
author: Evenprime
|
author: Evenprime
|
||||||
|
website: ${project.url}
|
||||||
|
|
||||||
main: cc.co.evenprime.bukkit.nocheat.NoCheat
|
main: cc.co.evenprime.bukkit.nocheat.NoCheat
|
||||||
version: 2.16c
|
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
nocheat:
|
nocheat:
|
||||||
|
84
pom.xml
Normal file
84
pom.xml
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>NoCheat</groupId>
|
||||||
|
<artifactId>NoCheat</artifactId>
|
||||||
|
<version>2.16c</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>NoCheat</name>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
<pluginRepositories>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>bukkit-plugins</id>
|
||||||
|
<url>http://repo.bukkit.org/artifactory/plugins-release</url>
|
||||||
|
</pluginRepository>
|
||||||
|
</pluginRepositories>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>craftbukkit</artifactId>
|
||||||
|
<version>1.8.1-R5-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>bukkit-repo</id>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</releases>
|
||||||
|
<url>http://repo.bukkit.org/artifactory/repo</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<description>Detect and Fight the exploitation of various Flaws/Bugs in Minecraft.</description>
|
||||||
|
<url>http://dev.bukkit.org/server-mods/nocheat</url>
|
||||||
|
<scm>
|
||||||
|
<connection>scm:git:https://github.com/Evenprime/NoCheat.git</connection>
|
||||||
|
<developerConnection>scm:git:https://github.com/Evenprime/NoCheat.git</developerConnection>
|
||||||
|
<url>https://github.com/Evenprime/NoCheat</url>
|
||||||
|
</scm>
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>${basedir}/src</sourceDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<targetPath>.</targetPath>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<directory>.</directory>
|
||||||
|
<includes>
|
||||||
|
<include>plugin.yml</include>
|
||||||
|
<include>README.txt</include>
|
||||||
|
<include>LICENSE.txt</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<defaultGoal>clean install</defaultGoal>
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>2.1</version>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<addMavenDescriptor>false</addMavenDescriptor>
|
||||||
|
</archive>
|
||||||
|
<finalName>NoCheat</finalName>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>2.0.2</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.6</source>
|
||||||
|
<target>1.6</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -8,7 +8,7 @@ import cc.co.evenprime.bukkit.nocheat.data.BaseData;
|
|||||||
public interface NoCheatPlayer {
|
public interface NoCheatPlayer {
|
||||||
|
|
||||||
public boolean hasPermission(String permission);
|
public boolean hasPermission(String permission);
|
||||||
|
|
||||||
public String getName();
|
public String getName();
|
||||||
|
|
||||||
public Player getPlayer();
|
public Player getPlayer();
|
||||||
@ -16,11 +16,11 @@ public interface NoCheatPlayer {
|
|||||||
public BaseData getData();
|
public BaseData getData();
|
||||||
|
|
||||||
public boolean isSprinting();
|
public boolean isSprinting();
|
||||||
|
|
||||||
public int getTicksLived();
|
public int getTicksLived();
|
||||||
|
|
||||||
public void increaseAge(int ticks);
|
public void increaseAge(int ticks);
|
||||||
|
|
||||||
public ConfigurationCache getConfiguration();
|
public ConfigurationCache getConfiguration();
|
||||||
|
|
||||||
public float getSpeedAmplifier();
|
public float getSpeedAmplifier();
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package cc.co.evenprime.bukkit.nocheat.checks;
|
package cc.co.evenprime.bukkit.nocheat.checks;
|
||||||
|
|
||||||
|
|
||||||
import cc.co.evenprime.bukkit.nocheat.NoCheat;
|
import cc.co.evenprime.bukkit.nocheat.NoCheat;
|
||||||
import cc.co.evenprime.bukkit.nocheat.NoCheatPlayer;
|
import cc.co.evenprime.bukkit.nocheat.NoCheatPlayer;
|
||||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionWithParameters.WildCard;
|
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionWithParameters.WildCard;
|
||||||
|
@ -82,7 +82,7 @@ public class DirectionCheck extends BlockBreakCheck {
|
|||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().blockbreak.directionVL);
|
return String.format(Locale.US, "%d", (int) player.getData().blockbreak.directionVL);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
|
@ -36,13 +36,13 @@ public class NoswingCheck extends BlockBreakCheck {
|
|||||||
public boolean isEnabled(CCBlockBreak cc) {
|
public boolean isEnabled(CCBlockBreak cc) {
|
||||||
return cc.noswingCheck;
|
return cc.noswingCheck;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
||||||
|
|
||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().blockbreak.noswingVL);
|
return String.format(Locale.US, "%d", (int) player.getData().blockbreak.noswingVL);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
|
@ -55,7 +55,7 @@ public class ReachCheck extends BlockBreakCheck {
|
|||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().blockbreak.reachVL);
|
return String.format(Locale.US, "%d", (int) player.getData().blockbreak.reachVL);
|
||||||
|
|
||||||
case REACHDISTANCE:
|
case REACHDISTANCE:
|
||||||
return String.format(Locale.US, "%.2f", player.getData().blockbreak.reachDistance);
|
return String.format(Locale.US, "%.2f", player.getData().blockbreak.reachDistance);
|
||||||
|
@ -96,7 +96,7 @@ public class DirectionCheck extends BlockPlaceCheck {
|
|||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().blockplace.directionVL);
|
return String.format(Locale.US, "%d", (int) player.getData().blockplace.directionVL);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
|
@ -56,7 +56,7 @@ public class ReachCheck extends BlockPlaceCheck {
|
|||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().blockplace.reachVL);
|
return String.format(Locale.US, "%d", (int) player.getData().blockplace.reachVL);
|
||||||
|
|
||||||
case REACHDISTANCE:
|
case REACHDISTANCE:
|
||||||
return String.format(Locale.US, "%.2f", player.getData().blockplace.reachdistance);
|
return String.format(Locale.US, "%.2f", player.getData().blockplace.reachdistance);
|
||||||
|
@ -77,7 +77,7 @@ public class DirectionCheck extends FightCheck {
|
|||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().fight.directionVL);
|
return String.format(Locale.US, "%d", (int) player.getData().fight.directionVL);
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ public class NoswingCheck extends FightCheck {
|
|||||||
public boolean check(NoCheatPlayer player, FightData data, CCFight cc) {
|
public boolean check(NoCheatPlayer player, FightData data, CCFight cc) {
|
||||||
|
|
||||||
boolean cancel = false;
|
boolean cancel = false;
|
||||||
|
|
||||||
// did he swing his arm before?
|
// did he swing his arm before?
|
||||||
if(data.armswung) {
|
if(data.armswung) {
|
||||||
data.armswung = false;
|
data.armswung = false;
|
||||||
@ -37,13 +37,13 @@ public class NoswingCheck extends FightCheck {
|
|||||||
public boolean isEnabled(CCFight cc) {
|
public boolean isEnabled(CCFight cc) {
|
||||||
return cc.noswingCheck;
|
return cc.noswingCheck;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
||||||
|
|
||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().fight.noswingVL);
|
return String.format(Locale.US, "%d", (int) player.getData().fight.noswingVL);
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ public class SelfhitCheck extends FightCheck {
|
|||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().fight.selfhitVL);
|
return String.format(Locale.US, "%d", (int) player.getData().fight.selfhitVL);
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
}
|
}
|
||||||
|
@ -47,10 +47,9 @@ public class FlyingCheck extends MovingCheck {
|
|||||||
// In case of creative gamemode, give at least 0.60 speed limit
|
// In case of creative gamemode, give at least 0.60 speed limit
|
||||||
// horizontal
|
// horizontal
|
||||||
double speedLimitHorizontal = player.isCreative() ? Math.max(creativeSpeed, ccmoving.flyingSpeedLimitHorizontal) : ccmoving.flyingSpeedLimitHorizontal;
|
double speedLimitHorizontal = player.isCreative() ? Math.max(creativeSpeed, ccmoving.flyingSpeedLimitHorizontal) : ccmoving.flyingSpeedLimitHorizontal;
|
||||||
|
|
||||||
|
|
||||||
speedLimitHorizontal *= player.getSpeedAmplifier();
|
speedLimitHorizontal *= player.getSpeedAmplifier();
|
||||||
|
|
||||||
result += Math.max(0.0D, horizontalDistance - moving.horizFreedom - speedLimitHorizontal);
|
result += Math.max(0.0D, horizontalDistance - moving.horizFreedom - speedLimitHorizontal);
|
||||||
|
|
||||||
boolean sprinting = player.isSprinting();
|
boolean sprinting = player.isSprinting();
|
||||||
@ -99,13 +98,13 @@ public class FlyingCheck extends MovingCheck {
|
|||||||
public boolean isEnabled(CCMoving moving) {
|
public boolean isEnabled(CCMoving moving) {
|
||||||
return moving.allowFlying && moving.runflyCheck;
|
return moving.allowFlying && moving.runflyCheck;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
||||||
|
|
||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().moving.runflyVL);
|
return String.format(Locale.US, "%d", (int) player.getData().moving.runflyVL);
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ public class MorePacketsCheck extends MovingCheck {
|
|||||||
// went over the limit
|
// went over the limit
|
||||||
if(!plugin.skipCheck() && packetsAboveLimit > 0) {
|
if(!plugin.skipCheck() && packetsAboveLimit > 0) {
|
||||||
data.morePacketsVL += packetsAboveLimit;
|
data.morePacketsVL += packetsAboveLimit;
|
||||||
|
|
||||||
data.packets = packetsAboveLimit;
|
data.packets = packetsAboveLimit;
|
||||||
|
|
||||||
final boolean cancel = executeActions(player, cc.morePacketsActions.getActions(data.morePacketsVL));
|
final boolean cancel = executeActions(player, cc.morePacketsActions.getActions(data.morePacketsVL));
|
||||||
@ -103,13 +103,13 @@ public class MorePacketsCheck extends MovingCheck {
|
|||||||
public boolean isEnabled(CCMoving moving) {
|
public boolean isEnabled(CCMoving moving) {
|
||||||
return moving.morePacketsCheck;
|
return moving.morePacketsCheck;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
public String getParameter(WildCard wildcard, NoCheatPlayer player) {
|
||||||
|
|
||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().moving.morePacketsVL);
|
return String.format(Locale.US, "%d", (int) player.getData().moving.morePacketsVL);
|
||||||
case PACKETS:
|
case PACKETS:
|
||||||
return String.valueOf(player.getData().moving.packets);
|
return String.valueOf(player.getData().moving.packets);
|
||||||
default:
|
default:
|
||||||
|
@ -106,7 +106,7 @@ public class NoFallCheck extends MovingCheck {
|
|||||||
|
|
||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().moving.nofallVL);
|
return String.format(Locale.US, "%d", (int) player.getData().moving.nofallVL);
|
||||||
case FALLDISTANCE:
|
case FALLDISTANCE:
|
||||||
return String.format(Locale.US, "%.2f", player.getData().moving.fallDistance);
|
return String.format(Locale.US, "%.2f", player.getData().moving.fallDistance);
|
||||||
default:
|
default:
|
||||||
|
@ -37,7 +37,7 @@ public class GodmodeCheck extends TimedCheck {
|
|||||||
boolean cancel = false;
|
boolean cancel = false;
|
||||||
|
|
||||||
// How far behind is the player with his ticks
|
// How far behind is the player with his ticks
|
||||||
int behind = Math.min(10, (data.ticksLived + cc.tickTime) - ticksLived);
|
int behind = Math.min(10, (data.ticksLived + cc.tickTime) - ticksLived);
|
||||||
// difference should be >= tickTime for perfect synchronization
|
// difference should be >= tickTime for perfect synchronization
|
||||||
if(behind <= 1) {
|
if(behind <= 1) {
|
||||||
// player as fast as expected, give him credit for that
|
// player as fast as expected, give him credit for that
|
||||||
@ -45,7 +45,7 @@ public class GodmodeCheck extends TimedCheck {
|
|||||||
// Reduce violation level over time
|
// Reduce violation level over time
|
||||||
data.godmodeVL -= cc.tickTime / 2.0;
|
data.godmodeVL -= cc.tickTime / 2.0;
|
||||||
|
|
||||||
} else if(behind <= (cc.tickTime / 2)+1) {
|
} else if(behind <= (cc.tickTime / 2) + 1) {
|
||||||
// close enough, let it pass
|
// close enough, let it pass
|
||||||
data.ticksBehind -= cc.tickTime / 4;
|
data.ticksBehind -= cc.tickTime / 4;
|
||||||
// Reduce violation level over time
|
// Reduce violation level over time
|
||||||
@ -63,16 +63,14 @@ public class GodmodeCheck extends TimedCheck {
|
|||||||
|
|
||||||
cancel = executeActions(player, cc.godmodeActions.getActions(data.godmodeVL));
|
cancel = executeActions(player, cc.godmodeActions.getActions(data.godmodeVL));
|
||||||
|
|
||||||
|
|
||||||
if(cancel) {
|
if(cancel) {
|
||||||
// Catch up for at least some of the ticks
|
// Catch up for at least some of the ticks
|
||||||
try {
|
try {
|
||||||
player.increaseAge(cc.tickTime);
|
player.increaseAge(cc.tickTime);
|
||||||
}
|
} catch(Exception e) {
|
||||||
catch(Exception e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reduce the time the player is behind accordingly
|
// Reduce the time the player is behind accordingly
|
||||||
data.ticksBehind -= cc.tickTime;
|
data.ticksBehind -= cc.tickTime;
|
||||||
}
|
}
|
||||||
@ -82,7 +80,7 @@ public class GodmodeCheck extends TimedCheck {
|
|||||||
if(data.ticksBehind < 0) {
|
if(data.ticksBehind < 0) {
|
||||||
data.ticksBehind = 0;
|
data.ticksBehind = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(data.godmodeVL < 0) {
|
if(data.godmodeVL < 0) {
|
||||||
data.godmodeVL = 0;
|
data.godmodeVL = 0;
|
||||||
}
|
}
|
||||||
@ -104,7 +102,7 @@ public class GodmodeCheck extends TimedCheck {
|
|||||||
switch (wildcard) {
|
switch (wildcard) {
|
||||||
|
|
||||||
case VIOLATIONS:
|
case VIOLATIONS:
|
||||||
return String.format(Locale.US, "%d", (int)player.getData().timed.godmodeVL);
|
return String.format(Locale.US, "%d", (int) player.getData().timed.godmodeVL);
|
||||||
default:
|
default:
|
||||||
return super.getParameter(wildcard, player);
|
return super.getParameter(wildcard, player);
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ public abstract class Configuration {
|
|||||||
private final static OptionNode DEBUG = new OptionNode("debug", ROOT, DataType.PARENT);
|
private final static OptionNode DEBUG = new OptionNode("debug", ROOT, DataType.PARENT);
|
||||||
public final static OptionNode DEBUG_SHOWACTIVECHECKS = new OptionNode("showactivechecks", DEBUG, DataType.BOOLEAN);
|
public final static OptionNode DEBUG_SHOWACTIVECHECKS = new OptionNode("showactivechecks", DEBUG, DataType.BOOLEAN);
|
||||||
public static final OptionNode DEBUG_COMPATIBILITY = new OptionNode("compatibility", DEBUG, DataType.BOOLEAN);
|
public static final OptionNode DEBUG_COMPATIBILITY = new OptionNode("compatibility", DEBUG, DataType.BOOLEAN);
|
||||||
|
|
||||||
private final static OptionNode MOVING = new OptionNode("moving", ROOT, DataType.PARENT);
|
private final static OptionNode MOVING = new OptionNode("moving", ROOT, DataType.PARENT);
|
||||||
public final static OptionNode MOVING_CHECK = new OptionNode("check", MOVING, DataType.BOOLEAN);
|
public final static OptionNode MOVING_CHECK = new OptionNode("check", MOVING, DataType.BOOLEAN);
|
||||||
public final static OptionNode MOVING_IDENTIFYCREATIVEMODE = new OptionNode("identifycreativemode", MOVING, DataType.BOOLEAN);
|
public final static OptionNode MOVING_IDENTIFYCREATIVEMODE = new OptionNode("identifycreativemode", MOVING, DataType.BOOLEAN);
|
||||||
|
@ -48,7 +48,7 @@ public class FlatFileAction {
|
|||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Action a : actions) {
|
for(Action a : actions) {
|
||||||
mapper.addAction(a);
|
mapper.addAction(a);
|
||||||
}
|
}
|
||||||
@ -62,50 +62,45 @@ public class FlatFileAction {
|
|||||||
|
|
||||||
// four pieces is the minimum we need, no matter what it is
|
// four pieces is the minimum we need, no matter what it is
|
||||||
if(parts.length < 4) {
|
if(parts.length < 4) {
|
||||||
throw new IllegalArgumentException("The line "+line+" of the file "+file.getName()+" is malformed. It has not enough parts.");
|
throw new IllegalArgumentException("The line " + line + " of the file " + file.getName() + " is malformed. It has not enough parts.");
|
||||||
}
|
}
|
||||||
|
|
||||||
String type = parts[0];
|
String type = parts[0];
|
||||||
String name = parts[1];
|
String name = parts[1];
|
||||||
|
|
||||||
int delay = 0;
|
int delay = 0;
|
||||||
try {
|
try {
|
||||||
delay = Integer.parseInt(parts[2]);
|
delay = Integer.parseInt(parts[2]);
|
||||||
|
} catch(Exception e) {
|
||||||
|
throw new IllegalArgumentException("Couldn't parse third parameter of action " + name + " from file " + file.getName() + ". It is " + parts[2] + " but should be a number.");
|
||||||
}
|
}
|
||||||
catch(Exception e) {
|
|
||||||
throw new IllegalArgumentException("Couldn't parse third parameter of action "+name+" from file "+file.getName()+". It is "+parts[2]+" but should be a number.");
|
|
||||||
}
|
|
||||||
|
|
||||||
int repeat = 0;
|
int repeat = 0;
|
||||||
try {
|
try {
|
||||||
repeat = Integer.parseInt(parts[3]);
|
repeat = Integer.parseInt(parts[3]);
|
||||||
|
} catch(Exception e) {
|
||||||
|
throw new IllegalArgumentException("Couldn't parse fourth parameter of action " + name + " from file " + file.getName() + ". It is " + parts[2] + " but should be a number.");
|
||||||
}
|
}
|
||||||
catch(Exception e) {
|
|
||||||
throw new IllegalArgumentException("Couldn't parse fourth parameter of action "+name+" from file "+file.getName()+". It is "+parts[2]+" but should be a number.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(type.equalsIgnoreCase("log")) {
|
if(type.equalsIgnoreCase("log")) {
|
||||||
// A log action, it seems
|
// A log action, it seems
|
||||||
if(parts.length < 5) {
|
if(parts.length < 5) {
|
||||||
throw new IllegalArgumentException("Missing fifth parameter of action "+name+" from file "+file.getName()+".");
|
throw new IllegalArgumentException("Missing fifth parameter of action " + name + " from file " + file.getName() + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
return readLogAction(name, delay, repeat, parts[4]);
|
return readLogAction(name, delay, repeat, parts[4]);
|
||||||
}
|
} else if(type.equalsIgnoreCase("consolecommand")) {
|
||||||
else if(type.equalsIgnoreCase("consolecommand")) {
|
|
||||||
// A consolecommand action, it seems
|
// A consolecommand action, it seems
|
||||||
if(parts.length < 5) {
|
if(parts.length < 5) {
|
||||||
throw new IllegalArgumentException("Missing fifth parameter of action "+name+" from file "+file.getName()+".");
|
throw new IllegalArgumentException("Missing fifth parameter of action " + name + " from file " + file.getName() + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ConsolecommandAction(name, delay, repeat, parts[4]);
|
return new ConsolecommandAction(name, delay, repeat, parts[4]);
|
||||||
}
|
} else if(type.equalsIgnoreCase("special")) {
|
||||||
else if(type.equalsIgnoreCase("special")) {
|
|
||||||
// A "special" actions, it seems
|
// A "special" actions, it seems
|
||||||
return new SpecialAction(name, delay, repeat);
|
return new SpecialAction(name, delay, repeat);
|
||||||
}
|
} else {
|
||||||
else {
|
throw new IllegalArgumentException("Unknown action type " + type + " of action with name " + name + ".");
|
||||||
throw new IllegalArgumentException("Unknown action type "+type+ " of action with name "+name+".");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,19 +108,18 @@ public class FlatFileAction {
|
|||||||
private Action readLogAction(String name, int delay, int repeat, String lastPart) {
|
private Action readLogAction(String name, int delay, int repeat, String lastPart) {
|
||||||
|
|
||||||
String[] rest = lastPart.split("\\s+", 2);
|
String[] rest = lastPart.split("\\s+", 2);
|
||||||
|
|
||||||
if(rest.length < 2) {
|
if(rest.length < 2) {
|
||||||
throw new IllegalArgumentException("Missing sixth parameter of action "+name+" from file "+file.getName()+".");
|
throw new IllegalArgumentException("Missing sixth parameter of action " + name + " from file " + file.getName() + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
LogLevel level;
|
LogLevel level;
|
||||||
try {
|
try {
|
||||||
level = LogLevel.getLogLevelFromString(rest[0]);
|
level = LogLevel.getLogLevelFromString(rest[0]);
|
||||||
|
} catch(IllegalArgumentException e) {
|
||||||
|
throw new IllegalArgumentException("Illegal fifth parameter of action " + name + ". " + e.getMessage());
|
||||||
}
|
}
|
||||||
catch(IllegalArgumentException e) {
|
|
||||||
throw new IllegalArgumentException("Illegal fifth parameter of action "+name+". "+e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
return new LogAction(name, delay, repeat, level, rest[1]);
|
return new LogAction(name, delay, repeat, level, rest[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ public class CCDebug {
|
|||||||
|
|
||||||
public final boolean showchecks;
|
public final boolean showchecks;
|
||||||
public final boolean overrideIdiocy;
|
public final boolean overrideIdiocy;
|
||||||
|
|
||||||
|
|
||||||
public CCDebug(Configuration data) {
|
public CCDebug(Configuration data) {
|
||||||
|
|
||||||
|
@ -38,12 +38,12 @@ public class CCMoving {
|
|||||||
|
|
||||||
check = data.getBoolean(Configuration.MOVING_CHECK);
|
check = data.getBoolean(Configuration.MOVING_CHECK);
|
||||||
identifyCreativeMode = data.getBoolean(Configuration.MOVING_IDENTIFYCREATIVEMODE);
|
identifyCreativeMode = data.getBoolean(Configuration.MOVING_IDENTIFYCREATIVEMODE);
|
||||||
|
|
||||||
runflyCheck = data.getBoolean(Configuration.MOVING_RUNFLY_CHECK);
|
runflyCheck = data.getBoolean(Configuration.MOVING_RUNFLY_CHECK);
|
||||||
walkingSpeedLimit = ((double) data.getInteger(Configuration.MOVING_RUNFLY_WALKINGSPEEDLIMIT)) / 100D;
|
walkingSpeedLimit = ((double) data.getInteger(Configuration.MOVING_RUNFLY_WALKINGSPEEDLIMIT)) / 100D;
|
||||||
sprintingSpeedLimit = ((double) data.getInteger(Configuration.MOVING_RUNFLY_SPRINTINGSPEEDLIMIT)) / 100D;
|
sprintingSpeedLimit = ((double) data.getInteger(Configuration.MOVING_RUNFLY_SPRINTINGSPEEDLIMIT)) / 100D;
|
||||||
jumpheight = ((double) data.getInteger(Configuration.MOVING_RUNFLY_JUMPHEIGHT)) / 100D;
|
jumpheight = ((double) data.getInteger(Configuration.MOVING_RUNFLY_JUMPHEIGHT)) / 100D;
|
||||||
actions = data.getActionList(Configuration.MOVING_RUNFLY_ACTIONS);
|
actions = data.getActionList(Configuration.MOVING_RUNFLY_ACTIONS);
|
||||||
|
|
||||||
swimmingCheck = data.getBoolean(Configuration.MOVING_RUNFLY_CHECKSWIMMING);
|
swimmingCheck = data.getBoolean(Configuration.MOVING_RUNFLY_CHECKSWIMMING);
|
||||||
swimmingSpeedLimit = ((double) data.getInteger(Configuration.MOVING_RUNFLY_SWIMMINGSPEEDLIMIT)) / 100D;
|
swimmingSpeedLimit = ((double) data.getInteger(Configuration.MOVING_RUNFLY_SWIMMINGSPEEDLIMIT)) / 100D;
|
||||||
|
@ -17,7 +17,7 @@ public class BlockBreakData extends Data {
|
|||||||
public double noswingVL = 0.0D;
|
public double noswingVL = 0.0D;
|
||||||
public double reachDistance;
|
public double reachDistance;
|
||||||
public boolean armswung = true;
|
public boolean armswung = true;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearCriticalData() {
|
public void clearCriticalData() {
|
||||||
instaBrokenBlockLocation.reset();
|
instaBrokenBlockLocation.reset();
|
||||||
|
@ -68,7 +68,7 @@ public class PlayerManager {
|
|||||||
public void cleanDataMap() {
|
public void cleanDataMap() {
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
List<String> removals = new ArrayList<String>(5);
|
List<String> removals = new ArrayList<String>(5);
|
||||||
|
|
||||||
for(Entry<String, NoCheatPlayerImpl> e : this.players.entrySet()) {
|
for(Entry<String, NoCheatPlayerImpl> e : this.players.entrySet()) {
|
||||||
if(e.getValue().shouldBeRemoved(time)) {
|
if(e.getValue().shouldBeRemoved(time)) {
|
||||||
removals.add(e.getKey());
|
removals.add(e.getKey());
|
||||||
|
@ -3,9 +3,10 @@ package cc.co.evenprime.bukkit.nocheat.data;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class to store x,y,z triple data, instead of using bukkits Location objects,
|
* A class to store x,y,z triple data, instead of using bukkits Location
|
||||||
|
* objects,
|
||||||
* which can't be easily recycled
|
* which can't be easily recycled
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public final class PreciseLocation {
|
public final class PreciseLocation {
|
||||||
|
|
||||||
@ -32,6 +33,7 @@ public final class PreciseLocation {
|
|||||||
public final boolean isSet() {
|
public final boolean isSet() {
|
||||||
return x != Double.MAX_VALUE;
|
return x != Double.MAX_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void reset() {
|
public final void reset() {
|
||||||
x = Double.MAX_VALUE;
|
x = Double.MAX_VALUE;
|
||||||
y = Double.MAX_VALUE;
|
y = Double.MAX_VALUE;
|
||||||
|
@ -9,11 +9,10 @@ import cc.co.evenprime.bukkit.nocheat.config.cache.ConfigurationCache;
|
|||||||
import cc.co.evenprime.bukkit.nocheat.events.EventManager;
|
import cc.co.evenprime.bukkit.nocheat.events.EventManager;
|
||||||
import cc.co.evenprime.bukkit.nocheat.log.LogLevel;
|
import cc.co.evenprime.bukkit.nocheat.log.LogLevel;
|
||||||
|
|
||||||
|
|
||||||
public class ActiveCheckPrinter {
|
public class ActiveCheckPrinter {
|
||||||
|
|
||||||
public static void printActiveChecks(NoCheat plugin, List<EventManager> eventManagers) {
|
public static void printActiveChecks(NoCheat plugin, List<EventManager> eventManagers) {
|
||||||
|
|
||||||
boolean introPrinted = false;
|
boolean introPrinted = false;
|
||||||
String intro = "[NoCheat] Active Checks: ";
|
String intro = "[NoCheat] Active Checks: ";
|
||||||
|
|
||||||
|
@ -1,46 +1,43 @@
|
|||||||
package cc.co.evenprime.bukkit.nocheat.debug;
|
package cc.co.evenprime.bukkit.nocheat.debug;
|
||||||
|
|
||||||
|
|
||||||
public class Performance {
|
public class Performance {
|
||||||
|
|
||||||
private long totalTime = 0;
|
private long totalTime = 0;
|
||||||
private long counter = 1; // start with 1 to avoid DIV/0 errors
|
private long counter = 1; // start with 1 to avoid
|
||||||
private final boolean enabled;
|
// DIV/0 errors
|
||||||
|
private final boolean enabled;
|
||||||
private static final long NANO = 1;
|
|
||||||
private static final long MICRO = NANO * 1000;
|
private static final long NANO = 1;
|
||||||
private static final long MILLI = MICRO * 1000;
|
private static final long MICRO = NANO * 1000;
|
||||||
private static final long SECOND = MILLI * 1000;
|
private static final long MILLI = MICRO * 1000;
|
||||||
private static final long MINUTE = SECOND * 60;
|
private static final long SECOND = MILLI * 1000;
|
||||||
|
private static final long MINUTE = SECOND * 60;
|
||||||
|
|
||||||
public Performance(boolean enabled) {
|
public Performance(boolean enabled) {
|
||||||
this.enabled = enabled;
|
this.enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addTime(long nanoTime) {
|
public void addTime(long nanoTime) {
|
||||||
counter++;
|
counter++;
|
||||||
this.totalTime += nanoTime;
|
this.totalTime += nanoTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTotalTime() {
|
public long getTotalTime() {
|
||||||
return this.totalTime;
|
return this.totalTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getRelativeTime() {
|
public long getRelativeTime() {
|
||||||
return this.totalTime / this.counter;
|
return this.totalTime / this.counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public long getCounter() {
|
public long getCounter() {
|
||||||
return this.counter;
|
return this.counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getAppropriateUnit(long timeInNanoseconds) {
|
private static String getAppropriateUnit(long timeInNanoseconds) {
|
||||||
|
|
||||||
// more than 10 minutes
|
// more than 10 minutes
|
||||||
@ -83,7 +80,7 @@ public class Performance {
|
|||||||
return timeInNanoseconds / NANO;
|
return timeInNanoseconds / NANO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String toString(long timeInNanoseconds) {
|
public static String toString(long timeInNanoseconds) {
|
||||||
return convertToAppropriateUnit(timeInNanoseconds) + " " + getAppropriateUnit(timeInNanoseconds);
|
return convertToAppropriateUnit(timeInNanoseconds) + " " + getAppropriateUnit(timeInNanoseconds);
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,6 @@ public class PerformanceManager {
|
|||||||
BLOCKBREAK, BLOCKDAMAGE, BLOCKPLACE, CHAT, MOVING, VELOCITY, FIGHT, TIMED
|
BLOCKBREAK, BLOCKDAMAGE, BLOCKPLACE, CHAT, MOVING, VELOCITY, FIGHT, TIMED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private final Map<Type, Performance> map;
|
private final Map<Type, Performance> map;
|
||||||
|
|
||||||
public PerformanceManager() {
|
public PerformanceManager() {
|
||||||
|
@ -87,7 +87,7 @@ public class BlockBreakEventManager extends EventManager {
|
|||||||
// direction check that are insta-breaks
|
// direction check that are insta-breaks
|
||||||
data.instaBrokenBlockLocation.set(event.getBlock());
|
data.instaBrokenBlockLocation.set(event.getBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void handlePlayerAnimationEvent(final PlayerAnimationEvent event, final Priority priority) {
|
protected void handlePlayerAnimationEvent(final PlayerAnimationEvent event, final Priority priority) {
|
||||||
plugin.getPlayer(event.getPlayer()).getData().blockbreak.armswung = true;
|
plugin.getPlayer(event.getPlayer()).getData().blockbreak.armswung = true;
|
||||||
|
@ -46,7 +46,7 @@ public class ChatEventManager extends EventManager {
|
|||||||
|
|
||||||
final NoCheatPlayer player = plugin.getPlayer(event.getPlayer());
|
final NoCheatPlayer player = plugin.getPlayer(event.getPlayer());
|
||||||
final CCChat cc = player.getConfiguration().chat;
|
final CCChat cc = player.getConfiguration().chat;
|
||||||
|
|
||||||
if(!cc.check || player.hasPermission(Permissions.CHAT)) {
|
if(!cc.check || player.hasPermission(Permissions.CHAT)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,7 @@ public abstract class EventManager {
|
|||||||
m.handlePlayerAnimationEvent(event, priority);
|
m.handlePlayerAnimationEvent(event, priority);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerToggleSprint(final PlayerToggleSprintEvent event) {
|
public void onPlayerToggleSprint(final PlayerToggleSprintEvent event) {
|
||||||
if(ignoreCancelledEvents && event.isCancelled())
|
if(ignoreCancelledEvents && event.isCancelled())
|
||||||
|
@ -70,7 +70,7 @@ public class FightEventManager extends EventManager {
|
|||||||
if(cancelled)
|
if(cancelled)
|
||||||
event.setCancelled(cancelled);
|
event.setCancelled(cancelled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void handlePlayerAnimationEvent(final PlayerAnimationEvent event, final Priority priority) {
|
protected void handlePlayerAnimationEvent(final PlayerAnimationEvent event, final Priority priority) {
|
||||||
plugin.getPlayer(event.getPlayer()).getData().fight.armswung = true;
|
plugin.getPlayer(event.getPlayer()).getData().fight.armswung = true;
|
||||||
|
@ -89,7 +89,7 @@ public class MovingEventManager extends EventManager {
|
|||||||
if(event.getPlayer().isInsideVehicle()) {
|
if(event.getPlayer().isInsideVehicle()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the world-specific configuration that applies here
|
// Get the world-specific configuration that applies here
|
||||||
final NoCheatPlayer player = plugin.getPlayer(event.getPlayer());
|
final NoCheatPlayer player = plugin.getPlayer(event.getPlayer());
|
||||||
final CCMoving cc = player.getConfiguration().moving;
|
final CCMoving cc = player.getConfiguration().moving;
|
||||||
|
@ -80,7 +80,7 @@ public class TimedEventManager extends EventManager {
|
|||||||
if(performanceCheck)
|
if(performanceCheck)
|
||||||
nanoTimeStart = System.nanoTime();
|
nanoTimeStart = System.nanoTime();
|
||||||
|
|
||||||
handleEvent(plugin.getPlayer((Player)p.getBukkitEntity()));
|
handleEvent(plugin.getPlayer((Player) p.getBukkitEntity()));
|
||||||
|
|
||||||
// store performance time
|
// store performance time
|
||||||
if(performanceCheck)
|
if(performanceCheck)
|
||||||
|
@ -4,16 +4,16 @@ import org.bukkit.ChatColor;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Somehow manage color codes in NoCheat
|
* Somehow manage color codes in NoCheat
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class Colors {
|
public class Colors {
|
||||||
|
|
||||||
public static String replaceColors(String text) {
|
public static String replaceColors(String text) {
|
||||||
|
|
||||||
for(ChatColor c : ChatColor.values()) {
|
for(ChatColor c : ChatColor.values()) {
|
||||||
text = text.replace("&" + Integer.toHexString(c.getCode()), c.toString());
|
text = text.replace("&" + Integer.toHexString(c.getCode()), c.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user