Skip to content

Commit

Permalink
1.4.0 - Merge pull request #37 from diademiemi/diademiemi/issue36
Browse files Browse the repository at this point in the history
  • Loading branch information
x86-39 authored Jan 16, 2022
2 parents a62f7bb + 8affe46 commit aa14ee6
Show file tree
Hide file tree
Showing 16 changed files with 172 additions and 91 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {
}

group 'me.diademiemi.lineation'
version '1.3.2'
version '1.4.0'

repositories {
/*
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/me/diademiemi/lineation/Lineation.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

import me.diademiemi.lineation.command.CommandExec;
import me.diademiemi.lineation.command.CommandTabComplete;
import me.diademiemi.lineation.line.LineIO;
import me.diademiemi.lineation.config.Config;
import me.diademiemi.lineation.config.LineIO;

/**
* Lineation plugin
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/me/diademiemi/lineation/Message.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import org.bukkit.ChatColor;

import me.diademiemi.lineation.config.Config;

/**
* Messages used within the plugin
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

import me.diademiemi.lineation.Lineation;
import me.diademiemi.lineation.Message;
import me.diademiemi.lineation.Config;
import me.diademiemi.lineation.config.Config;
import me.diademiemi.lineation.config.LineIO;
import me.diademiemi.lineation.line.Line;
import me.diademiemi.lineation.line.LineIO;
import me.diademiemi.lineation.line.LineTools;

import java.util.Arrays;
Expand Down Expand Up @@ -144,6 +144,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
if (args.length > 3) {
if (Line.getLines().get(args[3]) == null) {
if (!args[3].equalsIgnoreCase("help")
&& !args[3].equalsIgnoreCase("version")
&& !args[3].equalsIgnoreCase("create")
&& !args[3].equalsIgnoreCase("remove")
&& !args[3].equalsIgnoreCase("list")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package me.diademiemi.lineation;
package me.diademiemi.lineation.config;

import org.bukkit.configuration.file.YamlConfiguration;

import me.diademiemi.lineation.Lineation;
import me.diademiemi.lineation.Message;

import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package me.diademiemi.lineation.line;
package me.diademiemi.lineation.config;

import me.diademiemi.lineation.Lineation;
import me.diademiemi.lineation.Config;
import me.diademiemi.lineation.line.Line;

import java.util.ArrayList;
/**
Expand All @@ -21,7 +21,9 @@ public class LineIO {
*/
public static void loadAll() {
for (String name : lineConfig.getConfig().getKeys(false)) {
loadLine(name);
if (!name.equalsIgnoreCase("version")) {
loadLine(name);
}
}
}

Expand Down
29 changes: 17 additions & 12 deletions src/main/java/me/diademiemi/lineation/line/Line.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
import org.bukkit.entity.Player;

import me.diademiemi.lineation.Message;
import me.diademiemi.lineation.config.Config;
import me.diademiemi.lineation.listeners.MoveEvents;
import me.diademiemi.lineation.listeners.Scheduled;
import me.diademiemi.lineation.Lineation;
import me.diademiemi.lineation.Config;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -326,10 +328,12 @@ public void setStarted() {
}
}
}
if (startedFinishLines.size() == 1) {
new LineListener(Lineation.getInstance());
} else if (startedStartLinesIA.size() == 1) {
new LineListener(Lineation.getInstance());
if (startedFinishLines.size() == 1 || startedStartLinesIA.size() == 1) {
if (Config.getPluginConfig().getConfig().getBoolean("aggressive-listener")) {
Scheduled.checkMovements();
} else {
new MoveEvents(Lineation.getInstance());
}
}
}

Expand All @@ -343,13 +347,14 @@ public void setStopped() {
if (this.type.equalsIgnoreCase("finish")) {
startedFinishLines.remove(this.name);
}
if (startedFinishLines.size() == 0) {
LineListener.unregisterPluginEvents(Lineation.getInstance());
} else if (startedStartLinesIA.size() == 0) {
LineListener.unregisterPluginEvents(Lineation.getInstance());
} else if (!teleportEnabledIllegalArea) {
LineListener.unregisterPluginEvents(Lineation.getInstance());
}

if (startedFinishLines.size() == 0 && startedStartLinesIA.size() == 0) {
if (Config.getPluginConfig().getConfig().getBoolean("aggressive-listener")) {
Scheduled.cancelTasks(Lineation.getInstance());
} else {
MoveEvents.unregisterPluginEvents(Lineation.getInstance());
}
}
}

/**
Expand Down
68 changes: 0 additions & 68 deletions src/main/java/me/diademiemi/lineation/line/LineListener.java

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/java/me/diademiemi/lineation/line/LineTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import me.diademiemi.lineation.Lineation;
import me.diademiemi.lineation.Message;
import me.diademiemi.lineation.Config;
import me.diademiemi.lineation.config.Config;

import java.util.Arrays;
import java.util.ArrayList;
Expand Down
42 changes: 42 additions & 0 deletions src/main/java/me/diademiemi/lineation/listeners/Checker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package me.diademiemi.lineation.listeners;

import org.bukkit.entity.Player;

import me.diademiemi.lineation.line.Line;
import me.diademiemi.lineation.line.LineTools;

import java.util.Map;

public class Checker {
/**
* Check if the player is in a line
*
* @param p Player to check
*/
public static void checkPlayer(Player p) {
for(Map.Entry<String, Line> entry: Line.getStartedFinishLines().entrySet()) {
if (entry.getValue().getGameModes().contains(p.getGameMode())) {
if (entry.getValue().contains(p)) {
LineTools.playerFinish(entry.getValue(), p);
} else {
int i = entry.getValue().checkpointsContain(p);
if (i != 0) {
if (i - 1 <= entry.getValue().getPlayerCheckpoint(p)) {
entry.getValue().addPlayerCheckpoint(p, i);
}
}
}
}
}

for(Map.Entry<String, Line> entry: Line.getStartedStartLinesIA().entrySet()) {
if (entry.getValue().getGameModes().contains(p.getGameMode())) {
if (entry.getValue().illegalAreaContains(p)) {
p.teleport(entry.getValue().getTeleportLocation());
}
}
}
}


}
46 changes: 46 additions & 0 deletions src/main/java/me/diademiemi/lineation/listeners/MoveEvents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package me.diademiemi.lineation.listeners;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerMoveEvent;

import me.diademiemi.lineation.Lineation;

/**
* Listens to move events
*
* @author diademiemi
*/
public class MoveEvents implements Listener {

/**
* Register plugin listener
*
* @param plugin Instance of this plugin
*/
public MoveEvents(Lineation plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}

/**
* Unregister plugin listeners
*
* @param plugin Instance of this plugin
*/
public static void unregisterPluginEvents(Lineation plugin) {
HandlerList.unregisterAll(plugin);
}

/**
* Player move listener
*
* @param e Player move event
*/
@EventHandler
public void onMove(PlayerMoveEvent e) {
if (e.getFrom().getBlockX() != e.getTo().getBlockX() || e.getFrom().getBlockY() != e.getTo().getBlockY() || e.getFrom().getBlockZ() != e.getTo().getBlockZ()) {
Checker.checkPlayer(e.getPlayer());
}
}
}
32 changes: 32 additions & 0 deletions src/main/java/me/diademiemi/lineation/listeners/Scheduled.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package me.diademiemi.lineation.listeners;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import me.diademiemi.lineation.Lineation;

/**
* Checks player locations per tick
*
* @author diademiemi
*/
public class Scheduled {

public static void cancelTasks(Lineation plugin) {
Bukkit.getServer().getScheduler().cancelTasks(plugin);
}

/**
* Schedules movement check every tick
*/
public static void checkMovements() {
Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Lineation.getInstance(), new Runnable(){
public void run() {
for (Player p : Bukkit.getOnlinePlayers()) {
Checker.checkPlayer(p);
}
}
},0, 1);
}

}
11 changes: 10 additions & 1 deletion src/main/resources/config.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
# Default options used for lines
# Reload the plugins config files with /lineation config reload

#NEVER CHANGE THIS, THIS IS USED FOR MIGRATING
version: 1

# Set if the listener should be aggressive.
# This makes the plugin check every players' position every tick, instead of relying on player move events.
# This can be laggier but is needed for compatibility with some vehicle plugins
# true/false
aggressive-listener: false

linedefaults:
option:
blocksequence: glass, red_stained_glass, yellow_stained_glass, lime_stained_glass
messagereach: '250'
maxwinners: 3
commands: []
gamemodes: SURVIVAL,ADVENTURE
# Prevent someone from winning multiple times set maxwins
# This can be set in game with /lineation config maxwins INT
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/data.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# File used to store player wins count
# Format: UUID: number

#NEVER CHANGE THIS, THIS IS USED FOR MIGRATING
version: 1
3 changes: 3 additions & 0 deletions src/main/resources/lines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
# DO NOT EDIT!
# If you edit this file, it will likely break!
# Please use ingame commands to configure lines instead.

#NEVER CHANGE THIS, THIS IS USED FOR MIGRATING
version: 1
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Lineation
description: Minecraft Spigot plugin for managing start and finish lines
author: diademiemi
version: 1.3.2
version: 1.4.0
main: me.diademiemi.lineation.Lineation
api-version: 1.13
depend: [WorldEdit]
Expand Down

0 comments on commit aa14ee6

Please sign in to comment.