关键词:
package mobmoney;
import mobmoney.Mobmoney;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.data.key.Keys;
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.entity.EntityTypes;
import org.spongepowered.api.entity.Item;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.cause.Cause;
import org.spongepowered.api.event.cause.entity.damage.source.DamageSources;
import org.spongepowered.api.event.entity.DamageEntityEvent;
import org.spongepowered.api.event.filter.cause.First;
import org.spongepowered.api.event.game.state.GameStartingServerEvent;
import org.spongepowered.api.event.item.inventory.ChangeInventoryEvent;
import org.spongepowered.api.item.ItemType;
import org.spongepowered.api.item.ItemTypes;
import org.spongepowered.api.item.inventory.ItemStackSnapshot;
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.service.economy.EconomyService;
import org.spongepowered.api.service.economy.account.UniqueAccount;
import org.spongepowered.api.service.economy.transaction.TransactionResult;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.format.TextColors;
import org.spongepowered.api.world.Location;
import org.spongepowered.api.world.World;
import com.flowpowered.math.vector.Vector3d;
@Plugin(id = Mobmoney.PLUGIN_ID, name = Mobmoney.PLUGIN_NAME, version = Mobmoney.PLUGIN_VERSION)
public class Mobmoney
public static final String PLUGIN_ID = "mobmoney";
public static final String PLUGIN_NAME = "Mobmoney";
public static final String PLUGIN_VERSION = "SNAPSHOT-01";
Map<Location<World>, Double> values = new HashMap<>();
@Listener
public void onEnable(GameStartingServerEvent event)
// your code
@Listener
public void onPickup(ChangeInventoryEvent.Pickup.Pre event, @First Player player)
Item item = event.getTargetEntity();
if (item.getItemType().equals(ItemTypes.GOLD_NUGGET))
List<Entry<Location<World>, Double>> list = this.values.entrySet().stream()
.filter(e -> e.getKey().getExtent().getUniqueId().equals(item.getWorld().getUniqueId()))
.filter(e -> e.getKey().getPosition().distance(item.getLocation().getPosition()) <= 2).collect(Collectors.toList());
list.forEach(e ->
try
depositToPlayer(player.getUniqueId(), new BigDecimal(e.getValue()), event.getCause());
item.damage(1, DamageSources.VOID);
player.sendMessage(Text.builder(e.getValue()+" credits added to your balance.").color(TextColors.BLUE).build());
catch (IOException e1)
e1.printStackTrace();
);
@Listener
public void onKill(DamageEntityEvent event)
if (!event.willCauseDeath())
return;
ItemType type = ItemTypes.GOLD_NUGGET;
ItemStackSnapshot stack = type.getTemplate();
Entity death = event.getTargetEntity();
Vector3d deathPos = death.getLocation().getPosition();
Item item = (Item) death.getWorld().createEntity(EntityTypes.ITEM, deathPos);
item.offer(Keys.REPRESENTED_ITEM, stack);
death.getWorld().spawnEntity(item);
this.values.put(item.getLocation(), Math.ceil(death.get(Keys.MAX_HEALTH).get() / 2));
public static TransactionResult depositToPlayer(UUID uuid, BigDecimal amount, Cause cause) throws IOException
return getEcoAccount(uuid).deposit(getService().getDefaultCurrency(), amount, cause);
private static EconomyService getService() throws IOException
Optional<EconomyService> opService = Sponge.getServiceManager().provide(EconomyService.class);
if(!opService.isPresent())
throw new IOException("No Eco plugin detected");
EconomyService service = opService.get();
return service;
private static UniqueAccount getEcoAccount(UUID uuid) throws IOException
EconomyService service = getService();
Optional<UniqueAccount> opAccount = service.getOrCreateAccount(uuid);
if(!opAccount.isPresent())
throw new IOException("Could not find/create account");
return opAccount.get();
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情
textgistfile1.txt(代码片段)
查看详情