mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2024-11-25 03:55:22 +01:00
Finish sign scripts. Closes #48
This commit is contained in:
parent
569ddf5a8a
commit
0791008ea4
@ -36,8 +36,8 @@ public class BlockSign extends DSign {
|
|||||||
private byte offBlockData = 0x0;
|
private byte offBlockData = 0x0;
|
||||||
private byte onBlockData = 0x0;
|
private byte onBlockData = 0x0;
|
||||||
|
|
||||||
public BlockSign(Sign sign, GameWorld gameWorld) {
|
public BlockSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -36,8 +36,8 @@ public class CheckpointSign extends DSign {
|
|||||||
private boolean initialized;
|
private boolean initialized;
|
||||||
private CopyOnWriteArrayList<DGamePlayer> done = new CopyOnWriteArrayList<>();
|
private CopyOnWriteArrayList<DGamePlayer> done = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
public CheckpointSign(Sign sign, GameWorld gameWorld) {
|
public CheckpointSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,8 +33,8 @@ public class ChestSign extends DSign {
|
|||||||
private double moneyReward;
|
private double moneyReward;
|
||||||
private int levelReward;
|
private int levelReward;
|
||||||
|
|
||||||
public ChestSign(Sign sign, GameWorld gameWorld) {
|
public ChestSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -29,8 +29,8 @@ public class ChunkUpdaterSign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeDefault.CHUNK_UPDATER;
|
private DSignType type = DSignTypeDefault.CHUNK_UPDATER;
|
||||||
|
|
||||||
public ChunkUpdaterSign(Sign sign, GameWorld gameWorld) {
|
public ChunkUpdaterSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -31,8 +31,8 @@ public class ClassesSign extends DSign {
|
|||||||
|
|
||||||
private DClass dClass;
|
private DClass dClass;
|
||||||
|
|
||||||
public ClassesSign(Sign sign, GameWorld gameWorld) {
|
public ClassesSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
dClass = plugin.getDClasses().getByName(sign.getLine(1));
|
dClass = plugin.getDClasses().getByName(sign.getLine(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ public class CommandSign extends DSign {
|
|||||||
private String executor;
|
private String executor;
|
||||||
private boolean initialized;
|
private boolean initialized;
|
||||||
|
|
||||||
public CommandSign(Sign sign, GameWorld gameWorld) {
|
public CommandSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,8 +40,8 @@ public class DMobSign extends DSign implements MobSign {
|
|||||||
private boolean active;
|
private boolean active;
|
||||||
private BukkitTask task;
|
private BukkitTask task;
|
||||||
|
|
||||||
public DMobSign(Sign sign, GameWorld gameWorld) {
|
public DMobSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -43,9 +43,9 @@ public abstract class DSign {
|
|||||||
// List of Triggers
|
// List of Triggers
|
||||||
private Set<Trigger> triggers = new HashSet<>();
|
private Set<Trigger> triggers = new HashSet<>();
|
||||||
|
|
||||||
public DSign(Sign sign, GameWorld gameWorld) {
|
public DSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
this.sign = sign;
|
this.sign = sign;
|
||||||
this.lines = sign.getLines();
|
this.lines = lines;
|
||||||
this.gameWorld = gameWorld;
|
this.gameWorld = gameWorld;
|
||||||
|
|
||||||
// Check Trigger
|
// Check Trigger
|
||||||
@ -53,7 +53,7 @@ public abstract class DSign {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String line3 = sign.getLine(3).replaceAll("\\s", "");
|
String line3 = lines[3].replaceAll("\\s", "");
|
||||||
String[] triggerTypes = line3.split(",");
|
String[] triggerTypes = line3.split(",");
|
||||||
|
|
||||||
for (String triggerString : triggerTypes) {
|
for (String triggerString : triggerTypes) {
|
||||||
@ -198,8 +198,8 @@ public abstract class DSign {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Constructor<? extends DSign> constructor = type.getHandler().getConstructor(Sign.class, GameWorld.class);
|
Constructor<? extends DSign> constructor = type.getHandler().getConstructor(Sign.class, String[].class, GameWorld.class);
|
||||||
dSign = constructor.newInstance(sign, gameWorld);
|
dSign = constructor.newInstance(sign, lines, gameWorld);
|
||||||
|
|
||||||
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException exception) {
|
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException exception) {
|
||||||
MessageUtil.log("An error occurred while accessing the handler class of the sign " + type.getName() + ": " + exception.getClass().getSimpleName());
|
MessageUtil.log("An error occurred while accessing the handler class of the sign " + type.getName() + ": " + exception.getClass().getSimpleName());
|
||||||
|
@ -31,8 +31,8 @@ public class EndSign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeDefault.END;
|
private DSignType type = DSignTypeDefault.END;
|
||||||
|
|
||||||
public EndSign(Sign sign, GameWorld gameWorld) {
|
public EndSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -52,8 +52,8 @@ public class ExternalMobSign extends DSign implements MobSign {
|
|||||||
private LivingEntity externalMob;
|
private LivingEntity externalMob;
|
||||||
private List<Entity> externalMobs = new ArrayList<>();
|
private List<Entity> externalMobs = new ArrayList<>();
|
||||||
|
|
||||||
public ExternalMobSign(Sign sign, GameWorld gameWorld) {
|
public ExternalMobSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,8 +33,8 @@ public class FloorSign extends DSign {
|
|||||||
|
|
||||||
private String floor;
|
private String floor;
|
||||||
|
|
||||||
public FloorSign(Sign sign, GameWorld gameWorld) {
|
public FloorSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -35,8 +35,8 @@ public class InteractSign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeDefault.INTERACT;
|
private DSignType type = DSignTypeDefault.INTERACT;
|
||||||
|
|
||||||
public InteractSign(Sign sign, GameWorld gameWorld) {
|
public InteractSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,8 +32,8 @@ public class LeaveSign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeDefault.LEAVE;
|
private DSignType type = DSignTypeDefault.LEAVE;
|
||||||
|
|
||||||
public LeaveSign(Sign sign, GameWorld gameWorld) {
|
public LeaveSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -27,8 +27,8 @@ public class LobbySign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeDefault.LOBBY;
|
private DSignType type = DSignTypeDefault.LOBBY;
|
||||||
|
|
||||||
public LobbySign(Sign sign, GameWorld gameWorld) {
|
public LobbySign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -36,8 +36,8 @@ public class MessageSign extends DSign {
|
|||||||
private boolean initialized;
|
private boolean initialized;
|
||||||
private CopyOnWriteArrayList<Player> done = new CopyOnWriteArrayList<>();
|
private CopyOnWriteArrayList<Player> done = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
public MessageSign(Sign sign, GameWorld gameWorld) {
|
public MessageSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -28,8 +28,8 @@ public class PlaceSign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeDefault.PLACE;
|
private DSignType type = DSignTypeDefault.PLACE;
|
||||||
|
|
||||||
public PlaceSign(Sign sign, GameWorld gameWorld) {
|
public PlaceSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -39,8 +39,8 @@ public class ReadySign extends DSign {
|
|||||||
|
|
||||||
private GameType gameType;
|
private GameType gameType;
|
||||||
|
|
||||||
public ReadySign(Sign sign, GameWorld gameWorld) {
|
public ReadySign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,8 +42,8 @@ public class RedstoneSign extends DSign {
|
|||||||
private int repeat = 1;
|
private int repeat = 1;
|
||||||
private int repeatsToDo = 1;
|
private int repeatsToDo = 1;
|
||||||
|
|
||||||
public RedstoneSign(Sign sign, GameWorld gameWorld) {
|
public RedstoneSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package io.github.dre2n.dungeonsxl.sign;
|
package io.github.dre2n.dungeonsxl.sign;
|
||||||
|
|
||||||
import io.github.dre2n.dungeonsxl.world.GameWorld;
|
import io.github.dre2n.dungeonsxl.world.GameWorld;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,8 +29,9 @@ public class ScriptSign extends DSign {
|
|||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public ScriptSign(Sign sign, GameWorld gameWorld) {
|
public ScriptSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
|
name = lines[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,8 +50,16 @@ public class ScriptSign extends DSign {
|
|||||||
public void onInit() {
|
public void onInit() {
|
||||||
SignScript script = plugin.getSignScripts().getByName(name);
|
SignScript script = plugin.getSignScripts().getByName(name);
|
||||||
for (String[] lines : script.getSigns()) {
|
for (String[] lines : script.getSigns()) {
|
||||||
getGameWorld().getDSigns().add(DSign.create(getSign(), lines, getGameWorld()));
|
DSign dSign = DSign.create(getSign(), lines, getGameWorld());
|
||||||
|
getGameWorld().getDSigns().add(dSign);
|
||||||
|
|
||||||
|
dSign.onInit();
|
||||||
|
if (!dSign.hasTriggers()) {
|
||||||
|
dSign.onTrigger();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSign().getBlock().setType(Material.AIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,7 +33,7 @@ public class SignScript {
|
|||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private List<String[]> signs = new ArrayList<>();
|
private List<String[]> signs;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param file
|
* @param file
|
||||||
@ -51,13 +51,13 @@ public class SignScript {
|
|||||||
*/
|
*/
|
||||||
public SignScript(String name, FileConfiguration config) {
|
public SignScript(String name, FileConfiguration config) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
signs = new ArrayList<>(config.getKeys(false).size());
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
for (String key : config.getKeys(false)) {
|
for (String key : config.getKeys(false)) {
|
||||||
int index = NumberUtil.parseInt(key);
|
int index = NumberUtil.parseInt(key);
|
||||||
String[] lines = config.getStringList(key).toArray(signs.get(i));
|
String[] lines = new String[]{};
|
||||||
signs.set(index, lines);
|
lines = config.getStringList(key).toArray(lines);
|
||||||
i++;
|
signs.add(index, lines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,8 +35,8 @@ public class SoundMessageSign extends DSign {
|
|||||||
private String msg;
|
private String msg;
|
||||||
private CopyOnWriteArrayList<Player> done = new CopyOnWriteArrayList<>();
|
private CopyOnWriteArrayList<Player> done = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
public SoundMessageSign(Sign sign, GameWorld gameWorld) {
|
public SoundMessageSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -27,8 +27,8 @@ public class StartSign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeDefault.START;
|
private DSignType type = DSignTypeDefault.START;
|
||||||
|
|
||||||
public StartSign(Sign sign, GameWorld gameWorld) {
|
public StartSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,8 +38,8 @@ public class TriggerSign extends DSign {
|
|||||||
private int triggerId;
|
private int triggerId;
|
||||||
private boolean initialized;
|
private boolean initialized;
|
||||||
|
|
||||||
public TriggerSign(Sign sign, GameWorld gameWorld) {
|
public TriggerSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,8 +34,8 @@ public class WaveSign extends DSign {
|
|||||||
private double mobCountIncreaseRate;
|
private double mobCountIncreaseRate;
|
||||||
private boolean teleport;
|
private boolean teleport;
|
||||||
|
|
||||||
public WaveSign(Sign sign, GameWorld gameWorld) {
|
public WaveSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,8 +27,8 @@ public class CustomSign extends DSign {
|
|||||||
|
|
||||||
private DSignType type = DSignTypeCustom.CUSTOM;
|
private DSignType type = DSignTypeCustom.CUSTOM;
|
||||||
|
|
||||||
public CustomSign(Sign sign, GameWorld gameWorld) {
|
public CustomSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||||
super(sign, gameWorld);
|
super(sign, lines, gameWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user