Skip to content

Instantly share code, notes, and snippets.

@karno
Created October 6, 2014 19:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karno/b0395f4a43af0f2731fb to your computer and use it in GitHub Desktop.
Save karno/b0395f4a43af0f2731fb to your computer and use it in GitHub Desktop.
トロッコ自動破壊プラグインのコード
package com.troidworks.fragilecart;
import org.bukkit.Material;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.vehicle.VehicleExitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
import java.util.logging.Logger;
/**
* Created with IntelliJ IDEA.
* User: Karno
* Date: 13/08/08
* Time: 23:12
* To change this template use File | Settings | File Templates.
*/
public class FragileCart extends JavaPlugin implements Listener {
static final String TICKET = "com.troidworks.fragilecart::VehicleTicket";
static Logger logger = null;
@Override
public void onEnable() {
logger = this.getLogger();
// register listener
this.getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerGetOff(VehicleExitEvent event) {
// if player being logged log out, ignore exit event
if (!checkMetadata(event.getExited())) {
return;
}
Vehicle vehicle = event.getVehicle();
if (vehicle instanceof Minecart) {
Minecart cart = (Minecart) vehicle;
cart.getWorld().dropItemNaturally(cart.getLocation(),
new ItemStack(Material.MINECART, 1));
cart.remove();
}
}
private boolean checkMetadata(LivingEntity entity) {
List<MetadataValue> metadata = entity.getMetadata(TICKET);
return metadata.size() == 1 && metadata.get(0).asBoolean();
}
@EventHandler
public void onPlayerLoggedIn(PlayerLoginEvent event) {
event.getPlayer().setMetadata(TICKET, new FixedMetadataValue(this, true));
}
@EventHandler
public void onPlayerLoggedOut(PlayerQuitEvent event) {
event.getPlayer().setMetadata(TICKET, new FixedMetadataValue(this, false));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment