Skip to content

Commit f7a70c5

Browse files
committed
Merge pull request #205 from net/master
Merge Net's fork into the main repository
2 parents 3af3c96 + 1d04b7e commit f7a70c5

File tree

11 files changed

+134
-27
lines changed

11 files changed

+134
-27
lines changed

pom.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99

1010
<groupId>org.mctourney.autoreferee</groupId>
1111
<artifactId>AutoReferee</artifactId>
12-
<version>2.6-SNAPSHOT</version>
12+
<version>2.8</version>
1313
<name>AutoReferee Core Plugin</name>
14-
<url>http://www.reddit.com/r/mctourney</url>
14+
<url>https://www.reddit.com/r/mctourney</url>
1515
<description>Bukkit plugin for automatically refereeing competitive Minecraft matches.</description>
1616

1717
<properties>
1818
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
19-
<bukkit.version>1.5.1-R0.2</bukkit.version>
19+
<bukkit.version>1.8.8-R0.1-SNAPSHOT</bukkit.version>
2020
<java.target.version>1.6</java.target.version>
2121
</properties>
2222

@@ -28,8 +28,8 @@
2828

2929
<repositories>
3030
<repository>
31-
<id>bukkit-repo</id>
32-
<url>http://repo.bukkit.org/content/groups/public/</url>
31+
<id>spigot-repo</id>
32+
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
3333
</repository>
3434
<repository>
3535
<id>sk89q-mvn2</id>
@@ -64,6 +64,7 @@
6464
<groupId>org.bukkit</groupId>
6565
<artifactId>bukkit</artifactId>
6666
<version>${bukkit.version}</version>
67+
<scope>provided</scope>
6768
</dependency>
6869

6970
<dependency>
@@ -189,7 +190,7 @@
189190
<configuration>
190191
<mainClass>org.mctourney.autoreferee.AutoRefereeTools</mainClass>
191192
<arguments>
192-
<argument></argument>
193+
<argument/>
193194
</arguments>
194195
</configuration>
195196
</plugin>

src/main/java/org/mctourney/autoreferee/AutoRefMatch.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,10 @@ public MatchStatus getCurrentState()
349349
* @param status new match status
350350
*/
351351
public void setCurrentState(MatchStatus status)
352-
{ this.currentState = status; this.setupSpectators(); }
352+
{
353+
this.currentState = status;
354+
if (!status.isBeforeMatch()) this.setupSpectators();
355+
}
353356

354357
// custom scoreboard
355358
protected final Scoreboard scoreboard;
@@ -1691,7 +1694,7 @@ private void updateRefereePlayerInfo(Player ref, AutoRefPlayer apl)
16911694
Player pl = apl.getPlayer();
16921695
if (pl != null)
16931696
{
1694-
messageReferee(ref, "player", apl.getName(), "hp", Integer.toString(pl.getHealth()));
1697+
messageReferee(ref, "player", apl.getName(), "hp", Integer.toString((int) pl.getHealth()));
16951698
messageReferee(ref, "player", apl.getName(), "armor", Integer.toString(ArmorPoints.fromPlayer(pl)));
16961699
}
16971700

@@ -2337,6 +2340,13 @@ protected void _startMatch()
23372340
}
23382341
}
23392342

2343+
// reset enderchests and bed spawns
2344+
for (AutoRefPlayer apl : getPlayers()) {
2345+
Player player = apl.getPlayer();
2346+
PlayerUtil.clearEnderChest(player);
2347+
PlayerUtil.clearBedSpawn(player);
2348+
}
2349+
23402350
// set teams as started
23412351
for (AutoRefTeam team : getTeams())
23422352
team.startMatch();

src/main/java/org/mctourney/autoreferee/AutoRefPlayer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ public AutoRefPlayer(Player player, AutoRefTeam team)
576576
this(player.getName(), team);
577577

578578
// setup base health and armor level
579-
this.currentHealth = player.getHealth();
579+
this.currentHealth = (int) player.getHealth();
580580
this.currentArmor = ArmorPoints.fromPlayerInventory(player.getInventory());
581581
}
582582

@@ -908,7 +908,7 @@ public void updateHealthArmor()
908908
Player player = this.getPlayer();
909909
if (player == null) return;
910910

911-
int newHealth = Math.max(0, player.getHealth());
911+
int newHealth = (int) Math.max(0, player.getHealth());
912912
int newArmor = ArmorPoints.fromPlayerInventory(player.getInventory());
913913

914914
if (getTeam() != null) getTeam().updateHealthArmor(this,
@@ -1001,7 +1001,7 @@ public Inventory getInventoryView(String name)
10011001

10021002
// SLOT 8: PLAYER HEALTH
10031003
{
1004-
ItemStack health = new ItemStack(Material.APPLE, player.getHealth());
1004+
ItemStack health = new ItemStack(Material.APPLE, (int) player.getHealth());
10051005
ItemMeta meta = health.getItemMeta();
10061006

10071007
meta.setDisplayName(ChatColor.RED + "" + ChatColor.ITALIC + "Player Health");

src/main/java/org/mctourney/autoreferee/commands/AdminCommands.java

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
import org.bukkit.ChatColor;
99
import org.bukkit.Location;
1010
import org.bukkit.World;
11+
import org.bukkit.command.BlockCommandSender;
1112
import org.bukkit.command.CommandSender;
1213
import org.bukkit.entity.Player;
14+
import org.bukkit.entity.minecart.CommandMinecart;
1315
import org.bukkit.OfflinePlayer;
1416
import org.bukkit.plugin.Plugin;
15-
1617
import org.apache.commons.lang.StringUtils;
17-
1818
import org.mctourney.autoreferee.AutoRefMap;
1919
import org.mctourney.autoreferee.AutoRefMatch;
2020
import org.mctourney.autoreferee.AutoRefTeam;
@@ -24,7 +24,6 @@
2424
import org.mctourney.autoreferee.util.commands.AutoRefCommand;
2525
import org.mctourney.autoreferee.util.commands.AutoRefPermission;
2626
import org.mctourney.autoreferee.util.commands.CommandHandler;
27-
2827
import org.apache.commons.cli.CommandLine;
2928

3029
import com.google.common.collect.Lists;
@@ -274,4 +273,65 @@ public boolean sendPluginMessage(CommandSender sender, AutoRefMatch match, Strin
274273

275274
return true;
276275
}
276+
277+
278+
/*
279+
* Replaces the vanilla /time command so time is set only in the sender's world.
280+
*/
281+
282+
@AutoRefCommand(name={"time"}, argmin=2,
283+
description="Set the world time.",
284+
usage="§cUsage: /time <set|add> <value>")
285+
@AutoRefPermission(console=false, nodes={"bukkit.command.time"})
286+
287+
public boolean setTime(CommandSender sender, AutoRefMatch match, String[] args, CommandLine options)
288+
{
289+
if (args[0].equalsIgnoreCase("set")) {
290+
int time = 0;
291+
292+
if (args[1].equalsIgnoreCase("day")) {
293+
time = 1000;
294+
} else if (args[1].equalsIgnoreCase("night")) {
295+
time = 13000;
296+
} else if (args[1].matches("\\d+")) {
297+
time = Integer.parseInt(args[1]);
298+
} else {
299+
sender.sendMessage(ChatColor.RED + "'" + args[1] +"' is not a valid number");
300+
return true;
301+
}
302+
303+
if (sender instanceof Player) {
304+
((Player) sender).getWorld().setTime(time);
305+
sender.sendMessage("Set the time to " + time);
306+
} else if (sender instanceof BlockCommandSender) {
307+
((BlockCommandSender) sender).getBlock().getWorld().setTime(time);
308+
} else if (sender instanceof CommandMinecart) {
309+
((CommandMinecart) sender).getWorld().setTime(time);
310+
}
311+
}
312+
313+
if (args[0].equalsIgnoreCase("add")) {
314+
if (args[1].matches("\\d+")) {
315+
int time = Integer.parseInt(args[1]);
316+
317+
if (sender instanceof Player) {
318+
World world = ((Player) sender).getWorld();
319+
world.setTime(time + world.getTime());
320+
sender.sendMessage("Added " + time + " to the time");
321+
} else if (sender instanceof BlockCommandSender) {
322+
World world = ((BlockCommandSender) sender).getBlock().getWorld();
323+
world.setTime(time + world.getTime());
324+
} else if (sender instanceof CommandMinecart) {
325+
World world = ((CommandMinecart) sender).getWorld();
326+
world.setTime(time + world.getTime());
327+
}
328+
329+
} else {
330+
sender.sendMessage(ChatColor.RED + "'" + args[1] +"' is not a valid number");
331+
return true;
332+
}
333+
}
334+
335+
return true;
336+
}
277337
}

src/main/java/org/mctourney/autoreferee/listeners/CombatListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public static Player entityToPlayer(Entity e)
160160
// damaging entity is an arrow, then who was bow?
161161
if ((e instanceof Projectile))
162162
{
163-
LivingEntity shooter = ((Projectile) e).getShooter();
163+
LivingEntity shooter = (LivingEntity) ((Projectile) e).getShooter();
164164
if ((shooter instanceof Player)) return (Player) shooter;
165165
}
166166
return null;
@@ -194,7 +194,7 @@ public void damageDealt(EntityDamageEvent event)
194194
if (apl != null) apl.incrementShotsHit();
195195

196196
Arrow arrow = (Arrow) ed.getDamager();
197-
if (arrow.getShooter().getType() == EntityType.PLAYER)
197+
if (((LivingEntity)arrow.getShooter()).getType() == EntityType.PLAYER)
198198
{
199199
AutoRefPlayer shooter = match.getPlayer((Player) arrow.getShooter());
200200
Location shotFrom = shotArrows.get(arrow);

src/main/java/org/mctourney/autoreferee/listeners/SpectatorListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ public void foreignInventoryEvent(InventoryClickEvent event)
298298
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled=true)
299299
public void projectileLaunch(ProjectileLaunchEvent event)
300300
{
301-
LivingEntity entity = event.getEntity().getShooter();
301+
LivingEntity entity = (LivingEntity) event.getEntity().getShooter();
302302
AutoRefMatch match = plugin.getMatch(event.getEntity().getWorld());
303303
if (!(entity instanceof Player) || match == null) return;
304304

src/main/java/org/mctourney/autoreferee/listeners/ZoneListener.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.mctourney.autoreferee.listeners;
1+
package org.mctourney.autoreferee.listeners;
22

33
import java.util.Iterator;
44
import java.util.Map;
@@ -18,6 +18,7 @@
1818
import org.bukkit.event.EventPriority;
1919
import org.bukkit.event.Listener;
2020
import org.bukkit.event.block.BlockBreakEvent;
21+
import org.bukkit.event.block.BlockFromToEvent;
2122
import org.bukkit.event.block.BlockPlaceEvent;
2223
import org.bukkit.event.entity.CreatureSpawnEvent;
2324
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
@@ -37,7 +38,6 @@
3738
import org.bukkit.event.vehicle.VehicleEnterEvent;
3839
import org.bukkit.event.weather.WeatherChangeEvent;
3940
import org.bukkit.plugin.Plugin;
40-
4141
import org.mctourney.autoreferee.AutoRefMatch;
4242
import org.mctourney.autoreferee.AutoRefPlayer;
4343
import org.mctourney.autoreferee.AutoRefTeam;
@@ -87,8 +87,8 @@ public void playerMove(PlayerMoveEvent event)
8787
AutoRefPlayer apl = match.getPlayer(player);
8888
if (apl == null)
8989
{
90-
// if the player is not on a team and has left the start area, teleport back
91-
if (!match.isSpectator(player) && !match.inStartRegion(event.getTo()) && onGround)
90+
// if the player is not on a team and has left the start area and is not in creative, teleport back
91+
if (!match.isSpectator(player) && !match.inStartRegion(event.getTo()) && onGround && player.getGameMode() != GameMode.CREATIVE)
9292
{
9393
player.teleport(match.getWorldSpawn());
9494
player.setFallDistance(0.0f);
@@ -318,6 +318,19 @@ public void blockInteract(PlayerInteractEvent event)
318318
}
319319
}
320320

321+
/*
322+
* Prevents liquids from flowing in regions flagged with NO_FLOW
323+
*/
324+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
325+
public void onBlockFromTo(BlockFromToEvent event) {
326+
Block block = event.getToBlock();
327+
AutoRefMatch match = plugin.getMatch(block.getWorld());
328+
329+
if (match != null && match.hasFlag(block.getLocation().add(0d, 0d, 0.5), AutoRefRegion.Flag.NO_FLOW)) {
330+
event.setCancelled(true);
331+
}
332+
}
333+
321334
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled=true)
322335
public void entityInteract(PlayerInteractEntityEvent event)
323336
{

src/main/java/org/mctourney/autoreferee/listeners/lobby/LobbyListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public void creatureSpawn(CreatureSpawnEvent event)
168168
@EventHandler(priority= EventPriority.HIGHEST)
169169
public void projectileLaunch(ProjectileLaunchEvent event)
170170
{
171-
LivingEntity shooter = event.getEntity().getShooter();
171+
LivingEntity shooter = (LivingEntity) event.getEntity().getShooter();
172172
if (shooter != null && checkAdminPrivilege(shooter)) return;
173173

174174
if (event.getEntity().getWorld() == plugin.getLobbyWorld())

src/main/java/org/mctourney/autoreferee/regions/AutoRefRegion.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,11 @@ public static enum Flag
3737
NO_EXPLOSIONS (1 << 3, false, 'e', "noexplosion"),
3838
NO_ACCESS (1 << 4, false, 'a', "noaccess"),
3939
NO_TELEPORT (1 << 5, false, 't', "noteleport"),
40-
SPAWNERS_ONLY (1 << 6, false, 'w', "spawnersonly");
40+
SPAWNERS_ONLY (1 << 6, false, 'w', "spawnersonly"),
41+
NO_FLOW (1 << 7, true, 'f', "noflow");
4142

4243
// generated from above values
43-
public static final String OPTIONS = "abenstw";
44+
public static final String OPTIONS = "abenstwf";
4445

4546
private int value;
4647
private String name;

src/main/java/org/mctourney/autoreferee/util/PlayerUtil.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import org.bukkit.GameMode;
66
import org.bukkit.entity.Player;
7+
import org.bukkit.inventory.Inventory;
78
import org.bukkit.inventory.PlayerInventory;
89
import org.bukkit.potion.PotionEffect;
910
import org.bukkit.potion.PotionEffectType;
@@ -78,6 +79,24 @@ public static void removeStatusEffects(Player player)
7879
for (PotionEffect effect : player.getActivePotionEffects())
7980
player.removePotionEffect(effect.getType());
8081
}
82+
83+
/**
84+
* Clears player's ender chest
85+
*/
86+
public static void clearEnderChest(Player player)
87+
{
88+
// clear the ender chest
89+
Inventory enderChest = player.getEnderChest();
90+
enderChest.clear();
91+
}
92+
93+
/**
94+
* Clears player's bed spawn
95+
*/
96+
public static void clearBedSpawn(Player player)
97+
{
98+
player.setBedSpawnLocation(null, true);
99+
}
81100

82101
/**
83102
* Performs all PlayerUtil actions on this player.
@@ -157,7 +176,7 @@ public static void setGameMode(Player player, GameMode gamemode, boolean flight)
157176
public static void setSpectatorSettings(Player player, boolean spec, GameMode pgm)
158177
{
159178
// gamemode is the obvious issue
160-
PlayerUtil.setGameMode(player, spec ? GameMode.CREATIVE : pgm);
179+
PlayerUtil.setGameMode(player, spec ? GameMode.SPECTATOR : pgm);
161180

162181
// basic player settings depending on role
163182
player.setAllowFlight(spec);

0 commit comments

Comments
 (0)