mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-09-29 23:17:41 +02:00
Extend functionality by adding conditions and allow set to AND/OR.
This commit is contained in:
parent
d670d8066c
commit
bdf5e7aa71
@ -87,13 +87,34 @@ public class Activation implements IDescriptiveActivation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final List<IActivation> conditions = new LinkedList<IActivation>();
|
private final List<IActivation> conditions = new LinkedList<IActivation>();
|
||||||
|
private boolean conditionsAND = true;
|
||||||
|
|
||||||
private String neutralDescription = null;
|
private String neutralDescription = null;
|
||||||
|
|
||||||
private boolean advertise = false;
|
private boolean advertise = false;
|
||||||
|
|
||||||
|
public Activation setConditionsAND() {
|
||||||
|
conditionsAND = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getConditionsAND() {
|
||||||
|
return conditionsAND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Activation setConditionsOR() {
|
||||||
|
conditionsAND = false;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getConditionsOR() {
|
||||||
|
return !conditionsAND;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
|
if (conditionsAND) {
|
||||||
|
// AND
|
||||||
for (IActivation condition : conditions) {
|
for (IActivation condition : conditions) {
|
||||||
if (!condition.isAvailable()) {
|
if (!condition.isAvailable()) {
|
||||||
return false;
|
return false;
|
||||||
@ -101,6 +122,16 @@ public class Activation implements IDescriptiveActivation {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
// OR
|
||||||
|
for (IActivation condition : conditions) {
|
||||||
|
if (condition.isAvailable()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Activation neutralDescription(String neutralDescription) {
|
public Activation neutralDescription(String neutralDescription) {
|
||||||
// TODO: Another interface to combine description with activation (e.g. IFeature)?
|
// TODO: Another interface to combine description with activation (e.g. IFeature)?
|
||||||
@ -423,11 +454,24 @@ public class Activation implements IDescriptiveActivation {
|
|||||||
return this.advertise;
|
return this.advertise;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: set operation ( AND / OR ( / ...) ) + addCondition(IActivation).
|
/**
|
||||||
|
* Add an IActivation instances as condition.
|
||||||
|
*
|
||||||
|
* @param condition
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public IActivation condition(IActivation condition) {
|
||||||
|
conditions.add(condition);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: server version not contains (+ignore case).
|
// TODO: server version not contains (+ignore case).
|
||||||
// TODO: Might use testing methods for parts: meetsServerVersionRequirements(), more complicated...
|
// TODO: Might use testing methods for parts: meetsServerVersionRequirements(), more complicated...
|
||||||
|
/*
|
||||||
// (Well... specific member types, methods, :p...)
|
* TODO: Consider a getter for filtered conditions, e.g. if configuration
|
||||||
|
* overrides something, alternatively provide an optional condition that is
|
||||||
|
* checking the configuration (?).
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user