mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-11-16 23:55:23 +01:00
Redesigned how RuleLists were compiled and created to be less roundabout.
This commit is contained in:
parent
579143a5dd
commit
dc1f3f54b1
@ -5,11 +5,11 @@
|
|||||||
* Copyright (c) the WorldGuard team and contributors
|
* Copyright (c) the WorldGuard team and contributors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
@ -19,22 +19,57 @@
|
|||||||
package com.sk89q.rulelists;
|
package com.sk89q.rulelists;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An object that can learn rules and possibly implement them. Attachments can be
|
* An attachment is analogous to an event.
|
||||||
* analogous to events that occur in the game. An attachment, for example, would be
|
|
||||||
* a block break event.
|
|
||||||
*/
|
*/
|
||||||
public interface Attachment {
|
public final class Attachment {
|
||||||
|
|
||||||
|
private static int NEXT_ID = 0;
|
||||||
|
|
||||||
|
private final int id;
|
||||||
|
private final String alias;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Learn a rule.
|
* Create a new attachment with the given alias. The alias is used in rule list
|
||||||
|
* files.
|
||||||
*
|
*
|
||||||
* @param rule rule
|
* @param alias alias name
|
||||||
*/
|
*/
|
||||||
public void learn(Rule<?> rule);
|
public Attachment(String alias) {
|
||||||
|
this.alias = alias;
|
||||||
|
|
||||||
|
// No internal ID
|
||||||
|
id = -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Forget all previously learned rules.
|
* Create a new attachment with the given alias. The alias is used in rule list
|
||||||
|
* files.
|
||||||
|
*
|
||||||
|
* @param alias alias name
|
||||||
|
* @param isInternal true to assign this attachment a standard internal ID
|
||||||
*/
|
*/
|
||||||
public void forgetRules();
|
Attachment(String alias, boolean isInternal) {
|
||||||
|
this.alias = alias;
|
||||||
|
|
||||||
|
id = isInternal ? NEXT_ID++ : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the internal ID.
|
||||||
|
*
|
||||||
|
* @return ID number, possibly -1 for no internal ID
|
||||||
|
*/
|
||||||
|
int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the alias used inside rule list files.
|
||||||
|
*
|
||||||
|
* @return alias
|
||||||
|
*/
|
||||||
|
public String getAlias() {
|
||||||
|
return alias;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
* Copyright (c) the WorldGuard team and contributors
|
* Copyright (c) the WorldGuard team and contributors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
@ -19,44 +19,59 @@
|
|||||||
package com.sk89q.rulelists;
|
package com.sk89q.rulelists;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.sk89q.rebar.config.Loader;
|
||||||
|
import com.sk89q.rebar.config.LoaderBuilderException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages known attachment points.
|
* A database of valid attachments.
|
||||||
*
|
|
||||||
* @see Attachment
|
|
||||||
*/
|
*/
|
||||||
public class AttachmentManager {
|
public final class AttachmentManager implements Loader<Attachment> {
|
||||||
|
|
||||||
private final Map<String, Attachment> attachments = new HashMap<String, Attachment>();
|
private Set<Attachment> attachments = new HashSet<Attachment>();
|
||||||
|
private Map<String, Attachment> aliasMap = new HashMap<String, Attachment>();
|
||||||
|
|
||||||
/**
|
public AttachmentManager() {
|
||||||
* Register an {@link Attachment}.
|
|
||||||
*
|
|
||||||
* @param name name of the attachment (used in a rule's 'when' clause) (case insensitive)
|
|
||||||
* @param attachment attachment
|
|
||||||
*/
|
|
||||||
public void register(String name, Attachment attachment) {
|
|
||||||
attachments.put(name.toLowerCase(), attachment);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an attachment.
|
* Register an attachment.
|
||||||
*
|
*
|
||||||
* @param name name of the attachment (case insensitive)
|
* @param attachment the attachment
|
||||||
* @return attachment
|
|
||||||
*/
|
*/
|
||||||
public Attachment get(String name) {
|
public synchronized void register(Attachment attachment) {
|
||||||
return attachments.get(name.toLowerCase());
|
if (attachments.contains(attachment)
|
||||||
}
|
|| aliasMap.containsKey(attachment.getAlias().toLowerCase())) {
|
||||||
|
throw new IllegalArgumentException("Attachment '" + attachment + "' already registered.");
|
||||||
/**
|
|
||||||
* Forget all the rules in the registered attachments.
|
|
||||||
*/
|
|
||||||
public void forgetRules() {
|
|
||||||
for (Attachment attachment : attachments.values()) {
|
|
||||||
attachment.forgetRules();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
attachments.add(attachment);
|
||||||
|
aliasMap.put(attachment.getAlias().toLowerCase(), attachment);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an attachment by its alias.
|
||||||
|
*
|
||||||
|
* @param alias alias, case in-sensitive
|
||||||
|
* @return an attachment or null
|
||||||
|
*/
|
||||||
|
public synchronized Attachment lookup(String alias) {
|
||||||
|
return aliasMap.get(alias.toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Attachment read(Object value) throws LoaderBuilderException {
|
||||||
|
String id = String.valueOf(value);
|
||||||
|
|
||||||
|
Attachment attachment = lookup(id);
|
||||||
|
if (attachment == null) {
|
||||||
|
throw new LoaderBuilderException("Unknown RuleList attachment: " + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return attachment;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
80
src/main/java/com/sk89q/rulelists/DefaultAttachments.java
Normal file
80
src/main/java/com/sk89q/rulelists/DefaultAttachments.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
// $Id$
|
||||||
|
/*
|
||||||
|
* This file is a part of WorldGuard.
|
||||||
|
* Copyright (c) sk89q <http://www.sk89q.com>
|
||||||
|
* Copyright (c) the WorldGuard team and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
* WARRANTY), without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sk89q.rulelists;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains names of standard attachments.
|
||||||
|
*/
|
||||||
|
public final class DefaultAttachments {
|
||||||
|
|
||||||
|
public final static Attachment BLOCK_BREAK = new Attachment("block-break", true);
|
||||||
|
public final static Attachment BLOCK_PLACE = new Attachment("block-place", true);
|
||||||
|
public final static Attachment BLOCK_SPREAD = new Attachment("block-spread", true);
|
||||||
|
public final static Attachment BLOCK_PHYSICS = new Attachment("block-physics", true);
|
||||||
|
public final static Attachment BLOCK_INTERACT = new Attachment("block-interact", true);
|
||||||
|
public final static Attachment BLOCK_FADE = new Attachment("block-fade", true);
|
||||||
|
public final static Attachment BLOCK_FORM = new Attachment("block-form", true);
|
||||||
|
public final static Attachment PLAYER_JOIN = new Attachment("player-join", true);
|
||||||
|
public final static Attachment PLAYER_RESPAWN = new Attachment("player-respawn", true);
|
||||||
|
public final static Attachment PLAYER_QUIT = new Attachment("player-quit", true);
|
||||||
|
public final static Attachment ENTITY_EXPLODE = new Attachment("entity-explode", true);
|
||||||
|
public final static Attachment ENTITY_DAMAGE = new Attachment("entity-damage", true);
|
||||||
|
public final static Attachment ENTITY_DEATH = new Attachment("entity-death", true);
|
||||||
|
public final static Attachment ENTITY_IGNITE = new Attachment("entity-ignite", true);
|
||||||
|
public final static Attachment ENTITY_SPAWN = new Attachment("entity-spawn", true);
|
||||||
|
public final static Attachment ENTITY_STRIKE = new Attachment("entity-strike", true);
|
||||||
|
public final static Attachment ENTITY_INTERACT = new Attachment("entity-interact", true);
|
||||||
|
public final static Attachment CHAT = new Attachment("chat", true);
|
||||||
|
public final static Attachment ITEM_DROP = new Attachment("item-drop", true);
|
||||||
|
public final static Attachment ITEM_PICKUP = new Attachment("item-pickup", true);
|
||||||
|
public final static Attachment ITEM_USE = new Attachment("item-use", true);
|
||||||
|
public final static Attachment WEATHER_PHENOMENON = new Attachment("weather-phenomenon", true);
|
||||||
|
public final static Attachment WEATHER_TRANSITION = new Attachment("weather-transition", true);
|
||||||
|
public final static Attachment WORLD_LOAD = new Attachment("world-load", true);
|
||||||
|
public final static Attachment WORLD_UNLOAD = new Attachment("world-unload", true);
|
||||||
|
public final static Attachment WORLD_SAVE = new Attachment("world-save", true);
|
||||||
|
|
||||||
|
private DefaultAttachments() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the attachments in this class with the given manager.
|
||||||
|
*
|
||||||
|
* @param manager the manager
|
||||||
|
*/
|
||||||
|
public static void registerWith(AttachmentManager manager) {
|
||||||
|
for (Field field : DefaultAttachments.class.getFields()) {
|
||||||
|
if (Modifier.isStatic(field.getModifiers())
|
||||||
|
&& Attachment.class.isAssignableFrom(field.getType())) {
|
||||||
|
try {
|
||||||
|
manager.register((Attachment) field.get(null));
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
throw new RuntimeException("Failed to register default attachment", e);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
throw new RuntimeException("Failed to register default attachment", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,90 +0,0 @@
|
|||||||
// $Id$
|
|
||||||
/*
|
|
||||||
* This file is a part of WorldGuard.
|
|
||||||
* Copyright (c) sk89q <http://www.sk89q.com>
|
|
||||||
* Copyright (c) the WorldGuard team and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY), without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.sk89q.rulelists;
|
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Contains names of standard attachments.
|
|
||||||
*/
|
|
||||||
public enum KnownAttachment {
|
|
||||||
|
|
||||||
BLOCK_BREAK("block-break"),
|
|
||||||
BLOCK_PLACE("block-place"),
|
|
||||||
BLOCK_SPREAD("block-spread"),
|
|
||||||
BLOCK_PHYSICS("block-physics"),
|
|
||||||
BLOCK_INTERACT("block-interact"),
|
|
||||||
BLOCK_FADE("block-fade"),
|
|
||||||
BLOCK_FORM("block-form"),
|
|
||||||
PLAYER_JOIN("player-join"),
|
|
||||||
PLAYER_RESPAWN("player-respawn"),
|
|
||||||
PLAYER_QUIT("player-quit"),
|
|
||||||
ENTITY_EXPLODE("entity-explode"),
|
|
||||||
ENTITY_DAMAGE("entity-damage"),
|
|
||||||
ENTITY_DEATH("entity-death"),
|
|
||||||
ENTITY_IGNITE("entity-ignite"),
|
|
||||||
ENTITY_SPAWN("entity-spawn"),
|
|
||||||
ENTITY_STRIKE("entity-strike"),
|
|
||||||
ENTITY_INTERACT("entity-interact"),
|
|
||||||
CHAT("chat"),
|
|
||||||
ITEM_DROP("item-drop"),
|
|
||||||
ITEM_PICKUP("item-pickup"),
|
|
||||||
ITEM_USE("item-use"),
|
|
||||||
WEATHER_PHENOMENON("weather-phenomenon"),
|
|
||||||
WEATHER_TRANSITION("weather-transition"),
|
|
||||||
WORLD_LOAD("world-load"),
|
|
||||||
WORLD_UNLOAD("world-unload"),
|
|
||||||
WORLD_SAVE("world-save");
|
|
||||||
|
|
||||||
private final static Map<String, KnownAttachment> ids = new HashMap<String, KnownAttachment>();
|
|
||||||
|
|
||||||
static {
|
|
||||||
for (KnownAttachment attachment : EnumSet.allOf(KnownAttachment.class)) {
|
|
||||||
ids.put(attachment.getId().toLowerCase(), attachment);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private final String id;
|
|
||||||
|
|
||||||
KnownAttachment(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the attachment's string ID.
|
|
||||||
*
|
|
||||||
* @return string ID
|
|
||||||
*/
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get an attachment from a given string ID. Not case sensitive.
|
|
||||||
*
|
|
||||||
* @param id string ID
|
|
||||||
* @return attachment name
|
|
||||||
*/
|
|
||||||
public static KnownAttachment fromId(String id) {
|
|
||||||
return ids.get(id.toLowerCase());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
// $Id$
|
|
||||||
/*
|
|
||||||
* This file is a part of WorldGuard.
|
|
||||||
* Copyright (c) sk89q <http://www.sk89q.com>
|
|
||||||
* Copyright (c) the WorldGuard team and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.sk89q.rulelists;
|
|
||||||
|
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds known attachment rule sets for every {@link KnownAttachment}.
|
|
||||||
*/
|
|
||||||
public class KnownAttachmentRules {
|
|
||||||
|
|
||||||
private Map<KnownAttachment, RuleSet> ruleSets =
|
|
||||||
new EnumMap<KnownAttachment, RuleSet>(KnownAttachment.class);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build a new instance, with every attachment having an empty {@link RuleSet}
|
|
||||||
* defined for it.
|
|
||||||
*/
|
|
||||||
public KnownAttachmentRules() {
|
|
||||||
for (KnownAttachment attachment : KnownAttachment.values()) {
|
|
||||||
ruleSets.put(attachment, new RuleSet());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a rule set for a given attachment.
|
|
||||||
*
|
|
||||||
* @param attachment the attachment
|
|
||||||
* @return the rule set
|
|
||||||
*/
|
|
||||||
public RuleSet get(KnownAttachment attachment) {
|
|
||||||
return ruleSets.get(attachment);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -5,11 +5,11 @@
|
|||||||
* Copyright (c) the WorldGuard team and contributors
|
* Copyright (c) the WorldGuard team and contributors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
@ -21,36 +21,36 @@
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A pair of attachment/event names a rule.
|
* A pair of attachments and a rule.
|
||||||
*/
|
*/
|
||||||
public class RuleEntry {
|
public class RuleEntry {
|
||||||
|
|
||||||
private final List<String> attachmentNames;
|
private final List<Attachment> attachments;
|
||||||
private final Rule<?> rule;
|
private final Rule<?> rule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct the rule entry with the list of attachment names and rules.
|
* Construct the rule entry with the list of attachments and rules.
|
||||||
*
|
*
|
||||||
* @param attachmentNames attachment names
|
* @param attachments attachment names
|
||||||
* @param rule rules
|
* @param rule rules
|
||||||
*/
|
*/
|
||||||
public RuleEntry(List<String> attachmentNames, Rule<?> rule) {
|
public RuleEntry(List<Attachment> attachments, Rule<?> rule) {
|
||||||
this.attachmentNames = attachmentNames;
|
this.attachments = attachments;
|
||||||
this.rule = rule;
|
this.rule = rule;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of attachment names.
|
* Get the list of attachments.
|
||||||
*
|
*
|
||||||
* @return attachment names
|
* @return attachment
|
||||||
*/
|
*/
|
||||||
public List<String> getAttachmentNames() {
|
public List<Attachment> getAttachments() {
|
||||||
return attachmentNames;
|
return attachments;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the rule.
|
* Get the rule.
|
||||||
*
|
*
|
||||||
* @return rule
|
* @return rule
|
||||||
*/
|
*/
|
||||||
public Rule<?> getRule() {
|
public Rule<?> getRule() {
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.sk89q.rulelists;
|
package com.sk89q.rulelists;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
@ -34,8 +33,10 @@
|
|||||||
public class RuleEntryLoader extends AbstractNodeLoader<RuleEntry> {
|
public class RuleEntryLoader extends AbstractNodeLoader<RuleEntry> {
|
||||||
|
|
||||||
public static final String INLINE = "_";
|
public static final String INLINE = "_";
|
||||||
private static Logger logger = LoggerUtils.getLogger(RuleEntryLoader.class, "[WorldGuard] RuleList: ");
|
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerUtils.getLogger(RuleEntryLoader.class);
|
||||||
|
|
||||||
|
private final AttachmentManager attachmentManager;
|
||||||
private final DefinitionLoader<Criteria<?>> criteriaLoader;
|
private final DefinitionLoader<Criteria<?>> criteriaLoader;
|
||||||
private final DefinitionLoader<Action<?>> actionLoader;
|
private final DefinitionLoader<Action<?>> actionLoader;
|
||||||
|
|
||||||
@ -45,6 +46,7 @@ public class RuleEntryLoader extends AbstractNodeLoader<RuleEntry> {
|
|||||||
* @param ruleListsManager the action lists manager
|
* @param ruleListsManager the action lists manager
|
||||||
*/
|
*/
|
||||||
public RuleEntryLoader(RuleListsManager ruleListsManager) {
|
public RuleEntryLoader(RuleListsManager ruleListsManager) {
|
||||||
|
attachmentManager = ruleListsManager.getAttachments();
|
||||||
criteriaLoader = new DefinitionLoader<Criteria<?>>(ruleListsManager.getCriterion(), true);
|
criteriaLoader = new DefinitionLoader<Criteria<?>>(ruleListsManager.getCriterion(), true);
|
||||||
actionLoader = new DefinitionLoader<Action<?>>(ruleListsManager.getActions(), false);
|
actionLoader = new DefinitionLoader<Action<?>>(ruleListsManager.getActions(), false);
|
||||||
}
|
}
|
||||||
@ -56,7 +58,7 @@ public RuleEntry read(ConfigurationNode node) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> when = node.getStringList("when", new ArrayList<String>());
|
List<Attachment> when = node.listOf("when", attachmentManager);
|
||||||
|
|
||||||
// Check to see if the rule has any events defined
|
// Check to see if the rule has any events defined
|
||||||
if (when.size() == 0) {
|
if (when.size() == 0) {
|
||||||
@ -150,12 +152,12 @@ public T read(ConfigurationNode node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// No class defined!
|
// No class defined!
|
||||||
logger.warning("EventListeners: Missing '?' parameter in definition " +
|
logger.warning("RuleList: Missing '?' parameter in definition " +
|
||||||
"(to define what kind of criteria/action it is)");
|
"(to define what kind of criteria/action it is)");
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
} catch (DefinitionException e) {
|
} catch (DefinitionException e) {
|
||||||
logger.warning("EventListeners: Invalid definition " +
|
logger.warning("RuleList: Invalid definition " +
|
||||||
"identified by type '" + id + "': " + e.getMessage());
|
"identified by type '" + id + "': " + e.getMessage());
|
||||||
|
|
||||||
// Throw an exception in strict mode
|
// Throw an exception in strict mode
|
||||||
|
83
src/main/java/com/sk89q/rulelists/RuleList.java
Normal file
83
src/main/java/com/sk89q/rulelists/RuleList.java
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
// $Id$
|
||||||
|
/*
|
||||||
|
* This file is a part of WorldGuard.
|
||||||
|
* Copyright (c) sk89q <http://www.sk89q.com>
|
||||||
|
* Copyright (c) the WorldGuard team and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sk89q.rulelists;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds all the rules.
|
||||||
|
*/
|
||||||
|
public class RuleList {
|
||||||
|
|
||||||
|
private Map<Attachment, RuleSet> collections = new HashMap<Attachment, RuleSet>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build a new instance.
|
||||||
|
*/
|
||||||
|
public RuleList() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a rule set for a given attachment. A rule set is guaranteed to be
|
||||||
|
* returned for all given attachments.
|
||||||
|
*
|
||||||
|
* @param attachment the attachment
|
||||||
|
* @return the rule set
|
||||||
|
*/
|
||||||
|
public synchronized RuleSet get(Attachment attachment) {
|
||||||
|
RuleSet collection = collections.get(attachment);
|
||||||
|
if (collection == null) {
|
||||||
|
collection = new RuleSet();
|
||||||
|
collections.put(attachment, collection);
|
||||||
|
}
|
||||||
|
return collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a rule with this rule list.
|
||||||
|
*
|
||||||
|
* @param entry entry
|
||||||
|
*/
|
||||||
|
public void learn(RuleEntry entry) {
|
||||||
|
Rule<?> rule = entry.getRule();
|
||||||
|
|
||||||
|
for (Attachment attachment : entry.getAttachments()) {
|
||||||
|
learn(attachment, rule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a rule with this rule list.
|
||||||
|
*
|
||||||
|
* @param attachment the attachment for the rule
|
||||||
|
* @param rule the rule itself
|
||||||
|
*/
|
||||||
|
public void learn(Attachment attachment, Rule<?> rule) {
|
||||||
|
get(attachment).learn(rule);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forget all rules.
|
||||||
|
*/
|
||||||
|
public void clear() {
|
||||||
|
collections.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -5,11 +5,11 @@
|
|||||||
* Copyright (c) the WorldGuard team and contributors
|
* Copyright (c) the WorldGuard team and contributors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
@ -41,7 +41,7 @@ public AttachmentManager getAttachments() {
|
|||||||
/**
|
/**
|
||||||
* Get the criterion manager.
|
* Get the criterion manager.
|
||||||
*
|
*
|
||||||
* @return criteron manager
|
* @return criterion manager
|
||||||
*/
|
*/
|
||||||
public DefinitionManager<Criteria<?>> getCriterion() {
|
public DefinitionManager<Criteria<?>> getCriterion() {
|
||||||
return criterion;
|
return criterion;
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
* Copyright (c) the WorldGuard team and contributors
|
* Copyright (c) the WorldGuard team and contributors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public License along with
|
* You should have received a copy of the GNU Lesser General Public License along with
|
||||||
@ -18,43 +18,75 @@
|
|||||||
|
|
||||||
package com.sk89q.rulelists;
|
package com.sk89q.rulelists;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RuleSet implements Attachment {
|
/**
|
||||||
|
* Holds a collection of rules that can be applied to a context.
|
||||||
|
*
|
||||||
|
* @see RuleList
|
||||||
|
*/
|
||||||
|
public class RuleSet {
|
||||||
|
|
||||||
private List<Rule<?>> rules = new LinkedList<Rule<?>>();
|
private List<Rule<?>> rules = new LinkedList<Rule<?>>();
|
||||||
|
|
||||||
@Override
|
RuleSet() {
|
||||||
public void learn(Rule<?> rule) {
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the given rule to this set.
|
||||||
|
*
|
||||||
|
* @param rule the rule
|
||||||
|
*/
|
||||||
|
public synchronized void learn(Rule<?> rule) {
|
||||||
rules.add(rule);
|
rules.add(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
public void forgetRules() {
|
* Forget all rules.
|
||||||
|
*/
|
||||||
|
public synchronized void clear() {
|
||||||
rules.clear();
|
rules.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasRules() {
|
/**
|
||||||
|
* Return whether this set has rules.
|
||||||
|
*
|
||||||
|
* @return true if there are rules
|
||||||
|
*/
|
||||||
|
public synchronized boolean hasRules() {
|
||||||
return rules.size() > 0;
|
return rules.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Rule<?>> getRules() {
|
/**
|
||||||
return rules;
|
* Get the list of rules. The returned list cannot be modified.
|
||||||
|
*
|
||||||
|
* @return rule list
|
||||||
|
*/
|
||||||
|
public synchronized List<Rule<?>> getRules() {
|
||||||
|
return Collections.unmodifiableList(rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply this rule set onto the given context. Only one thread should call
|
||||||
|
* this method at a given time.
|
||||||
|
*
|
||||||
|
* @param context the context
|
||||||
|
* @return true if the event has been cancelled
|
||||||
|
*/
|
||||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||||
public boolean process(Context context) {
|
public boolean process(Context context) {
|
||||||
if (context.isCancelled()) {
|
if (context.isCancelled()) {
|
||||||
return true; // Ignore cancelled events for now
|
return true; // Ignore cancelled events for now
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Rule rule : rules) {
|
for (Rule rule : rules) {
|
||||||
if (rule.matches(context)) {
|
if (rule.matches(context)) {
|
||||||
rule.apply(context);
|
rule.apply(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return context.isCancelled();
|
return context.isCancelled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,8 +35,7 @@
|
|||||||
import com.sk89q.rebar.config.ConfigurationNode;
|
import com.sk89q.rebar.config.ConfigurationNode;
|
||||||
import com.sk89q.rebar.config.YamlConfigurationFile;
|
import com.sk89q.rebar.config.YamlConfigurationFile;
|
||||||
import com.sk89q.rebar.util.LoggerUtils;
|
import com.sk89q.rebar.util.LoggerUtils;
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.RuleList;
|
||||||
import com.sk89q.rulelists.KnownAttachmentRules;
|
|
||||||
import com.sk89q.rulelists.RuleEntry;
|
import com.sk89q.rulelists.RuleEntry;
|
||||||
import com.sk89q.rulelists.RuleEntryLoader;
|
import com.sk89q.rulelists.RuleEntryLoader;
|
||||||
import com.sk89q.rulelists.RuleTemplateEntryLoader;
|
import com.sk89q.rulelists.RuleTemplateEntryLoader;
|
||||||
@ -61,7 +60,7 @@ public class WorldConfiguration {
|
|||||||
private final String worldName;
|
private final String worldName;
|
||||||
|
|
||||||
private Blacklist blacklist;
|
private Blacklist blacklist;
|
||||||
private KnownAttachmentRules ruleList = new KnownAttachmentRules();
|
private RuleList ruleList = new RuleList();
|
||||||
private ChestProtection chestProtection = new SignChestProtection();
|
private ChestProtection chestProtection = new SignChestProtection();
|
||||||
private SpongeApplicator spongeApplicator = null;
|
private SpongeApplicator spongeApplicator = null;
|
||||||
|
|
||||||
@ -113,6 +112,7 @@ private void load() {
|
|||||||
loadConfig();
|
loadConfig();
|
||||||
|
|
||||||
// Load rule lists
|
// Load rule lists
|
||||||
|
ruleList.clear();
|
||||||
loadBuiltInRules();
|
loadBuiltInRules();
|
||||||
loadUserRules();
|
loadUserRules();
|
||||||
loadBlacklist();
|
loadBlacklist();
|
||||||
@ -204,7 +204,7 @@ private void loadBuiltInRules() {
|
|||||||
|
|
||||||
for (List<RuleEntry> entries : plugin.getBuiltInRules().listOf("", loader)) {
|
for (List<RuleEntry> entries : plugin.getBuiltInRules().listOf("", loader)) {
|
||||||
for (RuleEntry entry : entries) {
|
for (RuleEntry entry : entries) {
|
||||||
learnRule(entry);
|
ruleList.learn(entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -227,7 +227,7 @@ private void loadUserRules() {
|
|||||||
rulesConfig.load();
|
rulesConfig.load();
|
||||||
|
|
||||||
for (RuleEntry entry : rulesConfig.listOf(ConfigurationNode.ROOT, entryLoader)) {
|
for (RuleEntry entry : rulesConfig.listOf(ConfigurationNode.ROOT, entryLoader)) {
|
||||||
learnRule(entry);
|
ruleList.learn(entry);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.log(Level.SEVERE, "Failed to load " + rulesFile.getAbsolutePath(), e);
|
logger.log(Level.SEVERE, "Failed to load " + rulesFile.getAbsolutePath(), e);
|
||||||
@ -360,23 +360,7 @@ public int getMaxRegionCount(Player player) {
|
|||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
public KnownAttachmentRules getRuleList() {
|
public RuleList getRuleList() {
|
||||||
return ruleList;
|
return ruleList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Register a rule with this rule list.
|
|
||||||
*
|
|
||||||
* @param entry entry
|
|
||||||
*/
|
|
||||||
public void learnRule(RuleEntry entry) {
|
|
||||||
for (String name : entry.getAttachmentNames()) {
|
|
||||||
KnownAttachment attachment = KnownAttachment.fromId(name);
|
|
||||||
if (attachment != null) {
|
|
||||||
ruleList.get(attachment).learn(entry.getRule());
|
|
||||||
} else {
|
|
||||||
logger.warning("Don't know what the RuleList event '" + name + "' is");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
import org.bukkit.event.block.LeavesDecayEvent;
|
import org.bukkit.event.block.LeavesDecayEvent;
|
||||||
import org.bukkit.event.block.SignChangeEvent;
|
import org.bukkit.event.block.SignChangeEvent;
|
||||||
|
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
import com.sk89q.worldedit.blocks.BlockID;
|
import com.sk89q.worldedit.blocks.BlockID;
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ public void onBlockDamage(BlockDamageEvent event) {
|
|||||||
// handle them a bit separately
|
// handle them a bit separately
|
||||||
if (blockDamaged.getTypeId() == BlockID.CAKE_BLOCK) {
|
if (blockDamaged.getTypeId() == BlockID.CAKE_BLOCK) {
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_INTERACT);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_INTERACT);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(player);
|
context.setSourceEntity(player);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
@ -102,7 +102,7 @@ public void onBlockBreak(BlockBreakEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_BREAK);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_BREAK);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(player);
|
context.setSourceEntity(player);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
@ -142,7 +142,7 @@ public void onBlockFromTo(BlockFromToEvent event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_SPREAD);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_SPREAD);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceBlock(event.getBlock().getState());
|
context.setSourceBlock(event.getBlock().getState());
|
||||||
context.setTargetBlock(event.getToBlock().getState());
|
context.setTargetBlock(event.getToBlock().getState());
|
||||||
@ -176,7 +176,7 @@ public void onBlockIgnite(BlockIgniteEvent event) {
|
|||||||
switch (event.getCause()) {
|
switch (event.getCause()) {
|
||||||
case FLINT_AND_STEEL:
|
case FLINT_AND_STEEL:
|
||||||
// Consider flint and steel as an item use
|
// Consider flint and steel as an item use
|
||||||
rules = wcfg.getRuleList().get(KnownAttachment.ITEM_USE);
|
rules = wcfg.getRuleList().get(DefaultAttachments.ITEM_USE);
|
||||||
context = new BukkitContext(plugin, event);
|
context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
@ -195,7 +195,7 @@ public void onBlockIgnite(BlockIgniteEvent event) {
|
|||||||
case LAVA:
|
case LAVA:
|
||||||
case SPREAD:
|
case SPREAD:
|
||||||
// Consider everything else as a block spread
|
// Consider everything else as a block spread
|
||||||
rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_SPREAD);
|
rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_SPREAD);
|
||||||
context = new BukkitContext(plugin, event);
|
context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
|
|
||||||
@ -217,7 +217,7 @@ public void onBlockIgnite(BlockIgniteEvent event) {
|
|||||||
case FIREBALL:
|
case FIREBALL:
|
||||||
case LIGHTNING:
|
case LIGHTNING:
|
||||||
// Consider everything else as a block spread
|
// Consider everything else as a block spread
|
||||||
rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_PLACE);
|
rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_PLACE);
|
||||||
context = new BukkitContext(plugin, event);
|
context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ public void onBlockBurn(BlockBurnEvent event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_BREAK);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_BREAK);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
BlockState virtualFireState = event.getBlock().getState();
|
BlockState virtualFireState = event.getBlock().getState();
|
||||||
virtualFireState.setType(Material.FIRE);
|
virtualFireState.setType(Material.FIRE);
|
||||||
@ -269,7 +269,7 @@ public void onBlockPhysics(BlockPhysicsEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_PHYSICS);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_PHYSICS);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -305,7 +305,7 @@ public void onBlockPlace(BlockPlaceEvent event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_PLACE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_PLACE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
context.setPlacedBlock(event.getBlockReplacedState());
|
context.setPlacedBlock(event.getBlockReplacedState());
|
||||||
@ -378,7 +378,7 @@ public void onSignChange(SignChangeEvent event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_INTERACT);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_INTERACT);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -393,7 +393,7 @@ public void onLeavesDecay(LeavesDecayEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_FADE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_FADE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -408,7 +408,7 @@ public void onBlockForm(BlockFormEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_FORM);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_FORM);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
context.setPlacedBlock(event.getNewState());
|
context.setPlacedBlock(event.getNewState());
|
||||||
@ -424,7 +424,7 @@ public void onBlockSpread(BlockSpreadEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_SPREAD);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_SPREAD);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceBlock(event.getSource().getState());
|
context.setSourceBlock(event.getSource().getState());
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
@ -441,7 +441,7 @@ public void onBlockFade(BlockFadeEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_FADE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_FADE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
context.setPlacedBlock(event.getNewState());
|
context.setPlacedBlock(event.getNewState());
|
||||||
@ -457,7 +457,7 @@ public void onBlockDispense(BlockDispenseEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ITEM_DROP);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ITEM_DROP);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceBlock(event.getBlock().getState());
|
context.setSourceBlock(event.getBlock().getState());
|
||||||
context.setItem(event.getItem());
|
context.setItem(event.getItem());
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
||||||
import org.bukkit.event.entity.PigZapEvent;
|
import org.bukkit.event.entity.PigZapEvent;
|
||||||
import org.bukkit.event.entity.PotionSplashEvent;
|
import org.bukkit.event.entity.PotionSplashEvent;
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
import com.sk89q.worldguard.protection.GlobalRegionManager;
|
import com.sk89q.worldguard.protection.GlobalRegionManager;
|
||||||
import com.sk89q.worldguard.protection.flags.DefaultFlag;
|
import com.sk89q.worldguard.protection.flags.DefaultFlag;
|
||||||
@ -78,7 +78,7 @@ public void onEntityInteract(EntityInteractEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_INTERACT);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_INTERACT);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getEntity());
|
context.setSourceEntity(event.getEntity());
|
||||||
context.setTargetBlock(event.getBlock().getState());
|
context.setTargetBlock(event.getBlock().getState());
|
||||||
@ -96,7 +96,7 @@ public void onEntityDeath(EntityDeathEvent event) {
|
|||||||
/* --- No short-circuit returns below this line --- */
|
/* --- No short-circuit returns below this line --- */
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DEATH);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DEATH);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ public void onEntityDamage(EntityDamageEvent event) {
|
|||||||
// Redirect damage done by an entity
|
// Redirect damage done by an entity
|
||||||
if (event instanceof EntityDamageByEntityEvent) {
|
if (event instanceof EntityDamageByEntityEvent) {
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DAMAGE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DAMAGE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(((EntityDamageByEntityEvent) event).getDamager());
|
context.setSourceEntity(((EntityDamageByEntityEvent) event).getDamager());
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
@ -133,7 +133,7 @@ public void onEntityDamage(EntityDamageEvent event) {
|
|||||||
// Redirect damage done by blocks
|
// Redirect damage done by blocks
|
||||||
} else if (event instanceof EntityDamageByBlockEvent) {
|
} else if (event instanceof EntityDamageByBlockEvent) {
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DAMAGE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DAMAGE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
Block damager = ((EntityDamageByBlockEvent) event).getDamager();
|
Block damager = ((EntityDamageByBlockEvent) event).getDamager();
|
||||||
if (damager != null) { // Should NOT be null!
|
if (damager != null) { // Should NOT be null!
|
||||||
@ -148,7 +148,7 @@ public void onEntityDamage(EntityDamageEvent event) {
|
|||||||
// Other damage
|
// Other damage
|
||||||
} else {
|
} else {
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DAMAGE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DAMAGE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -166,7 +166,7 @@ public void onEntityCombust(EntityCombustEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(entity.getWorld());
|
WorldConfiguration wcfg = cfg.get(entity.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_IGNITE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_IGNITE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(entity);
|
context.setTargetEntity(entity);
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -183,7 +183,7 @@ public void onEntityExplode(EntityExplodeEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_EXPLODE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_EXPLODE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -198,7 +198,7 @@ public void onEntityExplode(EntityExplodeEvent event) {
|
|||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
Block block = iter.next();
|
Block block = iter.next();
|
||||||
|
|
||||||
rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_BREAK);
|
rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_BREAK);
|
||||||
context = new BukkitContext(plugin, event);
|
context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getEntity());
|
context.setSourceEntity(event.getEntity());
|
||||||
context.setTargetBlock(block.getState());
|
context.setTargetBlock(block.getState());
|
||||||
@ -215,7 +215,7 @@ public void onExplosionPrime(ExplosionPrimeEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_EXPLODE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_EXPLODE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -230,7 +230,7 @@ public void onCreatureSpawn(CreatureSpawnEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_SPAWN);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_SPAWN);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -245,7 +245,7 @@ public void onPigZap(PigZapEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_STRIKE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_STRIKE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -260,7 +260,7 @@ public void onCreeperPower(CreeperPowerEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_STRIKE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_STRIKE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
@ -278,7 +278,7 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) {
|
|||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(event.getTo() == Material.AIR ?
|
RuleSet rules = wcfg.getRuleList().get(event.getTo() == Material.AIR ?
|
||||||
KnownAttachment.BLOCK_BREAK : KnownAttachment.BLOCK_PLACE);
|
DefaultAttachments.BLOCK_BREAK : DefaultAttachments.BLOCK_PLACE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(entity);
|
context.setSourceEntity(entity);
|
||||||
BlockState newState = event.getBlock().getState(); // This event is lame
|
BlockState newState = event.getBlock().getState(); // This event is lame
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
||||||
import org.bukkit.event.hanging.HangingBreakEvent;
|
import org.bukkit.event.hanging.HangingBreakEvent;
|
||||||
import org.bukkit.event.hanging.HangingPlaceEvent;
|
import org.bukkit.event.hanging.HangingPlaceEvent;
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -63,7 +63,7 @@ public void onHangingingBreak(HangingBreakEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DAMAGE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DAMAGE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
if (event instanceof HangingBreakByEntityEvent) {
|
if (event instanceof HangingBreakByEntityEvent) {
|
||||||
context.setSourceEntity(((HangingBreakByEntityEvent) event).getRemover());
|
context.setSourceEntity(((HangingBreakByEntityEvent) event).getRemover());
|
||||||
@ -84,7 +84,7 @@ public void onHangingPlace(HangingPlaceEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_SPAWN);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_SPAWN);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setTargetEntity(event.getEntity());
|
context.setTargetEntity(event.getEntity());
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
|
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
|
||||||
import org.bukkit.event.painting.PaintingBreakEvent;
|
import org.bukkit.event.painting.PaintingBreakEvent;
|
||||||
import org.bukkit.event.painting.PaintingPlaceEvent;
|
import org.bukkit.event.painting.PaintingPlaceEvent;
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,7 +65,7 @@ public void onPaintingBreak(PaintingBreakEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DAMAGE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DAMAGE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
if (event instanceof PaintingBreakByEntityEvent) {
|
if (event instanceof PaintingBreakByEntityEvent) {
|
||||||
context.setSourceEntity(((PaintingBreakByEntityEvent) event).getRemover());
|
context.setSourceEntity(((PaintingBreakByEntityEvent) event).getRemover());
|
||||||
@ -86,7 +86,7 @@ public void onPaintingPlace(PaintingPlaceEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_SPAWN);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_SPAWN);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setTargetEntity(event.getPainting());
|
context.setTargetEntity(event.getPainting());
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,7 +96,7 @@ public void onPlayerJoin(PlayerJoinEvent event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.PLAYER_JOIN);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.PLAYER_JOIN);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(player);
|
context.setTargetEntity(player);
|
||||||
rules.process(context);
|
rules.process(context);
|
||||||
@ -108,7 +108,7 @@ public void onPlayerChat(AsyncPlayerChatEvent event) {
|
|||||||
WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld());
|
WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.CHAT);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.CHAT);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setMessage(event.getMessage());
|
context.setMessage(event.getMessage());
|
||||||
@ -159,7 +159,7 @@ public void onPlayerQuit(PlayerQuitEvent event) {
|
|||||||
/* --- No short-circuit returns below this line --- */
|
/* --- No short-circuit returns below this line --- */
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.PLAYER_QUIT);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.PLAYER_QUIT);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(player);
|
context.setSourceEntity(player);
|
||||||
rules.process(context);
|
rules.process(context);
|
||||||
@ -185,7 +185,7 @@ public void onPlayerInteract(PlayerInteractEvent event) {
|
|||||||
// Send one for the block
|
// Send one for the block
|
||||||
Block block = event.getClickedBlock();
|
Block block = event.getClickedBlock();
|
||||||
if (block != null) {
|
if (block != null) {
|
||||||
rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_INTERACT);
|
rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_INTERACT);
|
||||||
context = new BukkitContext(plugin, event);
|
context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(player);
|
context.setSourceEntity(player);
|
||||||
context.setTargetBlock(event.getClickedBlock().getState());
|
context.setTargetBlock(event.getClickedBlock().getState());
|
||||||
@ -197,7 +197,7 @@ public void onPlayerInteract(PlayerInteractEvent event) {
|
|||||||
// Send one for the item in the end
|
// Send one for the item in the end
|
||||||
ItemStack heldItem = event.getPlayer().getItemInHand();
|
ItemStack heldItem = event.getPlayer().getItemInHand();
|
||||||
if (heldItem != null) {
|
if (heldItem != null) {
|
||||||
rules = wcfg.getRuleList().get(KnownAttachment.ITEM_USE);
|
rules = wcfg.getRuleList().get(DefaultAttachments.ITEM_USE);
|
||||||
context = new BukkitContext(plugin, event);
|
context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setItem(heldItem);
|
context.setItem(heldItem);
|
||||||
@ -214,7 +214,7 @@ public void onPlayerDropItem(PlayerDropItemEvent event) {
|
|||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ITEM_DROP);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ITEM_DROP);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(player);
|
context.setSourceEntity(player);
|
||||||
context.setItem(event.getItemDrop().getItemStack());
|
context.setItem(event.getItemDrop().getItemStack());
|
||||||
@ -230,7 +230,7 @@ public void onPlayerPickupItem(PlayerPickupItemEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getPlayer().getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getPlayer().getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ITEM_PICKUP);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ITEM_PICKUP);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setItem(event.getItem().getItemStack());
|
context.setItem(event.getItem().getItemStack());
|
||||||
@ -250,7 +250,7 @@ public void onPlayerDeath(PlayerDeathEvent event) {
|
|||||||
/* --- No short-circuit returns below this line --- */
|
/* --- No short-circuit returns below this line --- */
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DEATH);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DEATH);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetEntity(player);
|
context.setTargetEntity(player);
|
||||||
rules.process(context);
|
rules.process(context);
|
||||||
@ -265,7 +265,7 @@ public void onPlayerBucketFill(PlayerBucketFillEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ITEM_USE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ITEM_USE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setItem(event.getItemStack());
|
context.setItem(event.getItemStack());
|
||||||
@ -284,7 +284,7 @@ public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(world);
|
WorldConfiguration wcfg = cfg.get(world);
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ITEM_USE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ITEM_USE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
context.setItem(event.getItemStack());
|
context.setItem(event.getItemStack());
|
||||||
@ -304,7 +304,7 @@ public void onPlayerRespawn(PlayerRespawnEvent event) {
|
|||||||
/* --- No short-circuit returns below this line --- */
|
/* --- No short-circuit returns below this line --- */
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.PLAYER_RESPAWN);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.PLAYER_RESPAWN);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(event.getPlayer());
|
context.setSourceEntity(event.getPlayer());
|
||||||
rules.process(context);
|
rules.process(context);
|
||||||
@ -318,7 +318,7 @@ public void onPlayerBedEnter(PlayerBedEnterEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(player.getWorld());
|
WorldConfiguration wcfg = cfg.get(player.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.BLOCK_INTERACT);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.BLOCK_INTERACT);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(player);
|
context.setSourceEntity(player);
|
||||||
context.setTargetBlock(event.getBed().getState());
|
context.setTargetBlock(event.getBed().getState());
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
import com.sk89q.rebar.config.YamlConfigurationResource;
|
import com.sk89q.rebar.config.YamlConfigurationResource;
|
||||||
import com.sk89q.rulelists.Action;
|
import com.sk89q.rulelists.Action;
|
||||||
import com.sk89q.rulelists.Criteria;
|
import com.sk89q.rulelists.Criteria;
|
||||||
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.DefinitionManager;
|
import com.sk89q.rulelists.DefinitionManager;
|
||||||
import com.sk89q.rulelists.ResolverManager;
|
import com.sk89q.rulelists.ResolverManager;
|
||||||
import com.sk89q.rulelists.RuleListsManager;
|
import com.sk89q.rulelists.RuleListsManager;
|
||||||
@ -317,10 +318,8 @@ public RegionQueryCache getRegionCache() {
|
|||||||
* Get the built-in rules.
|
* Get the built-in rules.
|
||||||
*
|
*
|
||||||
* @return built-in rules
|
* @return built-in rules
|
||||||
* @throws ConfigurationException
|
* @throws ConfigurationException on config error
|
||||||
* on config error
|
* @throws IOException on I/O exception
|
||||||
* @throws IOException
|
|
||||||
* on I/O exception
|
|
||||||
*/
|
*/
|
||||||
public YamlConfiguration getBuiltInRules() throws IOException, ConfigurationException {
|
public YamlConfiguration getBuiltInRules() throws IOException, ConfigurationException {
|
||||||
YamlConfiguration rules = new YamlConfigurationResource(getClass(),
|
YamlConfiguration rules = new YamlConfigurationResource(getClass(),
|
||||||
@ -333,6 +332,8 @@ public YamlConfiguration getBuiltInRules() throws IOException, ConfigurationExce
|
|||||||
* Register RuleList resolvers, criterion, and actions.
|
* Register RuleList resolvers, criterion, and actions.
|
||||||
*/
|
*/
|
||||||
private void registerRuleList() {
|
private void registerRuleList() {
|
||||||
|
DefaultAttachments.registerWith(ruleListsManager.getAttachments());
|
||||||
|
|
||||||
// Subject resolvers
|
// Subject resolvers
|
||||||
ResolverManager resolvers = ruleListsManager.getResolvers();
|
ResolverManager resolvers = ruleListsManager.getResolvers();
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.vehicle.VehicleDestroyEvent;
|
import org.bukkit.event.vehicle.VehicleDestroyEvent;
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,7 +45,7 @@ public void onVehicleDestroy(VehicleDestroyEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(vehicle.getWorld());
|
WorldConfiguration wcfg = cfg.get(vehicle.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.ENTITY_DAMAGE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.ENTITY_DAMAGE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setSourceEntity(destroyer);
|
context.setSourceEntity(destroyer);
|
||||||
context.setTargetEntity(vehicle);
|
context.setTargetEntity(vehicle);
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
import org.bukkit.event.weather.ThunderChangeEvent;
|
import org.bukkit.event.weather.ThunderChangeEvent;
|
||||||
import org.bukkit.event.weather.WeatherChangeEvent;
|
import org.bukkit.event.weather.WeatherChangeEvent;
|
||||||
|
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,7 +58,7 @@ public void onWeatherChange(WeatherChangeEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.WEATHER_TRANSITION);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.WEATHER_TRANSITION);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
@ -72,7 +72,7 @@ public void onThunderChange(ThunderChangeEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.WEATHER_TRANSITION);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.WEATHER_TRANSITION);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
@ -88,7 +88,7 @@ public void onLightningStrike(LightningStrikeEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.WEATHER_PHENOMENON);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.WEATHER_PHENOMENON);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
context.setTargetBlock(loc.getBlock().getState());
|
context.setTargetBlock(loc.getBlock().getState());
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
import org.bukkit.event.world.WorldSaveEvent;
|
import org.bukkit.event.world.WorldSaveEvent;
|
||||||
import org.bukkit.event.world.WorldUnloadEvent;
|
import org.bukkit.event.world.WorldUnloadEvent;
|
||||||
|
|
||||||
import com.sk89q.rulelists.KnownAttachment;
|
import com.sk89q.rulelists.DefaultAttachments;
|
||||||
import com.sk89q.rulelists.RuleSet;
|
import com.sk89q.rulelists.RuleSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,7 +45,7 @@ public void onWorldLoad(WorldLoadEvent event) {
|
|||||||
/* --- No short-circuit returns below this line --- */
|
/* --- No short-circuit returns below this line --- */
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.WORLD_LOAD);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.WORLD_LOAD);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
rules.process(context);
|
rules.process(context);
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ public void onWorldLoad(WorldUnloadEvent event) {
|
|||||||
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
WorldConfiguration wcfg = cfg.get(event.getWorld());
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.WORLD_UNLOAD);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.WORLD_UNLOAD);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
if (rules.process(context)) {
|
if (rules.process(context)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
@ -72,7 +72,7 @@ public void onWorldSave(WorldSaveEvent event) {
|
|||||||
/* --- No short-circuit returns below this line --- */
|
/* --- No short-circuit returns below this line --- */
|
||||||
|
|
||||||
// RuleLists
|
// RuleLists
|
||||||
RuleSet rules = wcfg.getRuleList().get(KnownAttachment.WORLD_SAVE);
|
RuleSet rules = wcfg.getRuleList().get(DefaultAttachments.WORLD_SAVE);
|
||||||
BukkitContext context = new BukkitContext(plugin, event);
|
BukkitContext context = new BukkitContext(plugin, event);
|
||||||
rules.process(context);
|
rules.process(context);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user