Advanced-Portals/core/src/main/java/com/sekwah/advancedportals/core/api/portal/AdvancedPortal.java

117 lines
3.7 KiB
Java
Raw Normal View History

package com.sekwah.advancedportals.core.api.portal;
2018-02-02 11:38:31 +01:00
import com.google.gson.annotations.SerializedName;
2018-01-28 02:12:25 +01:00
import com.sekwah.advancedportals.core.AdvancedPortalsCore;
import com.sekwah.advancedportals.core.registry.TagRegistry;
import com.sekwah.advancedportals.core.api.warphandler.ActivationData;
import com.sekwah.advancedportals.core.api.warphandler.TagHandler;
2020-06-29 01:39:27 +02:00
import com.sekwah.advancedportals.core.data.DataTag;
import com.sekwah.advancedportals.core.data.PortalLocation;
import com.sekwah.advancedportals.core.connector.container.PlayerContainer;
2018-01-25 22:04:30 +01:00
2018-02-03 21:31:50 +01:00
import java.util.ArrayList;
2018-01-25 22:04:30 +01:00
import java.util.HashMap;
import java.util.Map;
/**
* @author sekwah41
*/
2018-01-24 11:05:46 +01:00
public class AdvancedPortal {
2018-02-21 03:52:21 +01:00
2018-02-02 11:38:31 +01:00
@SerializedName("max")
2018-01-25 22:04:30 +01:00
private PortalLocation maxLoc;
2018-02-02 11:38:31 +01:00
@SerializedName("min")
2018-01-25 22:04:30 +01:00
private PortalLocation minLoc;
2018-02-02 11:38:31 +01:00
@SerializedName("t")
2018-02-21 16:38:08 +01:00
private String[] triggerBlocks = {"PORTAL"};
2018-02-02 11:38:31 +01:00
@SerializedName("a")
2018-01-25 22:04:30 +01:00
private HashMap<String, String> args = new HashMap<>();
2018-02-02 11:38:31 +01:00
2018-01-25 22:04:30 +01:00
public AdvancedPortal(PortalLocation maxLoc, PortalLocation minLoc) {
this.maxLoc = maxLoc;
this.minLoc = minLoc;
}
public PortalLocation getMaxLoc() {
return this.maxLoc;
}
public PortalLocation getMinLoc() {
return this.minLoc;
}
public String getArg(String argName) {
return this.args.get(argName);
}
public void setArg(String argName, String argValue) {
this.args.put(argName, argValue);
2018-01-28 02:12:25 +01:00
}
public void removeArg(String arg) {
this.args.remove(arg);
}
2018-02-21 16:38:08 +01:00
public boolean hasTriggerBlock(String blockMaterial) {
for(String triggerBlock : triggerBlocks) {
if(blockMaterial.equals(triggerBlock)) {
return true;
}
}
return false;
}
public boolean activate(PlayerContainer player) {
TagRegistry<AdvancedPortal> tagRegistry = AdvancedPortalsCore.getPortalTagRegistry();
2018-01-28 02:12:25 +01:00
ActivationData data = new ActivationData();
2018-02-21 16:38:08 +01:00
DataTag[] portalTags = new DataTag[args.size()];
int i = 0;
for(Map.Entry<String, String> entry : args.entrySet()) {
portalTags[i++] = new DataTag(entry.getKey(), entry.getValue());
2018-01-28 02:12:25 +01:00
}
for(DataTag portalTag : portalTags) {
TagHandler.Activation<AdvancedPortal> activationHandler = tagRegistry.getActivationHandler(portalTag.NAME);
if(activationHandler != null) {
activationHandler.preActivated(this, player, data, this.getArg(portalTag.NAME));
2018-02-21 05:57:32 +01:00
}
2018-01-28 02:12:25 +01:00
}
for(DataTag portalTag : portalTags) {
TagHandler.Activation<AdvancedPortal> activationHandler = tagRegistry.getActivationHandler(portalTag.NAME);
if(activationHandler != null) {
activationHandler.activated(this, player, data, this.getArg(portalTag.NAME));
}
2018-01-28 02:12:25 +01:00
}
2018-02-03 21:31:50 +01:00
for(DataTag portalTag : portalTags) {
2018-02-21 16:38:08 +01:00
TagHandler.Activation<AdvancedPortal> activationHandler = tagRegistry.getActivationHandler(portalTag.NAME);
if(activationHandler != null) {
activationHandler.postActivated(this, player, data, this.getArg(portalTag.NAME));
}
2018-01-28 02:12:25 +01:00
}
return true;
2018-01-25 22:04:30 +01:00
}
2018-02-03 21:31:50 +01:00
public void setArg(DataTag portalTag) {
this.setArg(portalTag.NAME, portalTag.VALUE);
}
2018-02-03 21:31:50 +01:00
public ArrayList<DataTag> getArgs() {
ArrayList<DataTag> tagList = new ArrayList<>();
for(Map.Entry<String, String> entry : this.args.entrySet()){
tagList.add(new DataTag(entry.getKey(), entry.getValue()));
}
2018-02-21 16:38:08 +01:00
return tagList;
2018-02-03 21:31:50 +01:00
}
2018-02-21 18:03:20 +01:00
public void setTriggerBlocks(String[] triggerBlocks) {
this.triggerBlocks = triggerBlocks;
}
2018-02-22 04:44:37 +01:00
public String[] getTriggerBlocks() {
return triggerBlocks;
}
}