Prevent Older clients from entering boats
This commit is contained in:
parent
c48a5d1f22
commit
874b8a1ca4
|
@ -293,3 +293,5 @@ lives.remaining.alive.plural = Your team has {0} players left
|
|||
lives.status.eliminated = eliminated
|
||||
lives.status.alive = {0} alive
|
||||
lives.status.lives = {0} lives
|
||||
|
||||
version.too.old.boats = Entering boats requires at least Minecraft 1.9
|
||||
|
|
|
@ -15,6 +15,7 @@ import tc.oc.pgm.itemkeep.ItemKeepManifest;
|
|||
import tc.oc.pgm.kits.KitManifest;
|
||||
import tc.oc.pgm.lane.LaneManifest;
|
||||
import tc.oc.pgm.blitz.BlitzManifest;
|
||||
import tc.oc.pgm.legacy.LegacyManifest;
|
||||
import tc.oc.pgm.loot.LootManifest;
|
||||
import tc.oc.pgm.menu.MenuManifest;
|
||||
import tc.oc.pgm.modes.ObjectiveModeManifest;
|
||||
|
@ -57,6 +58,7 @@ public class PGMModulesManifest extends HybridManifest {
|
|||
install(new TNTManifest());
|
||||
install(new TutorialManifest());
|
||||
install(new FlagManifest());
|
||||
install(new LegacyManifest());
|
||||
install(new LootManifest());
|
||||
install(new TerrainManifest());
|
||||
install(new CoreManifest());
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package tc.oc.pgm.legacy;
|
||||
|
||||
import tc.oc.commons.core.inject.HybridManifest;
|
||||
import tc.oc.pgm.match.MatchPlayerFacetBinder;
|
||||
import tc.oc.pgm.match.inject.MatchBinders;
|
||||
|
||||
public class LegacyManifest extends HybridManifest implements MatchBinders {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
installPlayerModule(binder -> {
|
||||
final MatchPlayerFacetBinder facets = new MatchPlayerFacetBinder(binder);
|
||||
facets.register(LegacyPlayerFacet.class);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package tc.oc.pgm.legacy;
|
||||
|
||||
import org.bukkit.entity.Boat;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.vehicle.VehicleEnterEvent;
|
||||
import tc.oc.commons.bukkit.chat.Audiences;
|
||||
import tc.oc.commons.bukkit.chat.WarningComponent;
|
||||
import tc.oc.minecraft.protocol.MinecraftVersion;
|
||||
import tc.oc.pgm.events.ListenerScope;
|
||||
import tc.oc.pgm.match.MatchPlayerFacet;
|
||||
import tc.oc.pgm.match.MatchScope;
|
||||
import javax.inject.Inject;
|
||||
|
||||
@ListenerScope(MatchScope.RUNNING)
|
||||
public class LegacyPlayerFacet implements MatchPlayerFacet, Listener {
|
||||
|
||||
private final Audiences audiences;
|
||||
|
||||
@Inject LegacyPlayerFacet(Audiences audiences) {
|
||||
this.audiences = audiences;
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||
public void onVehicleEnter(VehicleEnterEvent event) {
|
||||
if (event.getVehicle() instanceof Boat && event.getActor() instanceof Player) {
|
||||
Player player = (Player)event.getActor();
|
||||
if (MinecraftVersion.lessThan(MinecraftVersion.MINECRAFT_1_9, player.getProtocolVersion())) {
|
||||
event.setCancelled(true);
|
||||
audiences.get(player).sendMessage(new WarningComponent("version.too.old.boats"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue