textgistfile1.txt(代码片段)

author author     2022-12-02     734

关键词:

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(代码片段)

查看详情