- var packet=Java.type("net.minecraft.network.play.server.SWorldSpawnChangedPacket")
- var titlepacket=Java.type("net.minecraft.network.play.server.STitlePacket")
- var PlayerData=Java.type("noppes.npcs.controllers.data.PlayerData")
- var text=Java.type("net.minecraft.util.text.StringTextComponent")
- var ess=Java.type("org.bukkit.Bukkit").getPluginManager().getPlugin("Essentials")
- var BigDecimal=Java.type("java.math.BigDecimal")
- var compass=Java.type("net.minecraft.item.Items").field_151111_aL
- var HALF_UP=Java.type("java.math.RoundingMode").HALF_UP
- var MathContext=Java.type("java.math.MathContext")
- var API=Java.type("noppes.npcs.api.NpcAPI").Instance()
- var spawnpoint=new packet(API.getIWorld("minecraft:overworld").getMCWorld().func_241135_u_(),0)
- var scoreboard=API.getIWorld("minecraft:overworld").getScoreboard().getObjective("cooldown")
- var gui=Java.type("noppes.npcs.api.NpcAPI").Instance().createCustomGui(1,130,32,false)
- gui.addTextField(1,0,5,100,15).setHoverText("输入玩家名字")
- gui.addTexturedRect(2,"minecraft:textures/gui/social_interactions.png",102,5,14,14,241,0)
- //在gui内显示要花的钱,你下面要改的话这里也要改
- gui.addTexturedButton(3,"",102,5,14,14,"minecraft:textures/gui/social_interactions.png",241,40).setHoverText("花费§610¥§f定位此玩家")
- gui.getComponent(3)
- function interact(e){
- var p=e.player
- var mcp=e.player.getMCEntity()
- if(mcp.func_233631_a_(compass)&&!mcp.func_184811_cZ().func_185141_a(compass)){
- mcp.func_184811_cZ().func_185145_a(compass,20)
- var score=scoreboard.getScore(p.name)
- if(score==null)
- score=scoreboard.createScore(p.name)
- var cooldown=score.getValue()
- if(cooldown>0){
- p.message("正在冷却,剩余"+cooldown+"s")
- return
- }
- p.showCustomGui(gui)
- }
- }
- function customGuiButton(e){
- var target=e.gui.getComponent(1).getText()
- var player=e.player
- player.closeGui()
- if(target==""){
- player.message("§4玩家名不能为空")
- }
- else if(target==player.name){
- player.message("§4不能选自己为目标")
- }
- else{
- var essuser=ess.getUser(player.name)
- //要花的钱
- var cost=new BigDecimal(10)
- if(essuser.getMoney().compareTo(cost)!=-1){
- if(findplayer(player,target)){
- essuser.setMoney(essuser.getMoney().subtract(cost))
- player.getNbt().putString("target",target)
- player.addTag("hunter")
- //开始定位的提示
- player.message("§b追猎开始!")
- //开始定位后,计入10秒冷却
- scoreboard.getScore(player.name).setValue(10)
- }
- //定位失败的提示
- else player.message("§4"+target+"不在这个世界……")
- }
- else player.message("金币不足")
- }
- }
- function logout(e){
- var p=e.player
- if(p.hasTag("hunter"))
- p.removeTag("hunter")
- p.getTimers().clear()
- }
- function init(e){
- //每4tick,也就是每0.2秒进行一次定位,你可以改得更小
- e.player.getTimers().forceStart(1,4,true)
- e.player.getTimers().forceStart(2,20,true)
- }
- function timer(e){
- var p=e.player
- if(e.id==1&&p.hasTag("hunter")){
- var t=p.getNbt().getString("target")
- if(!findplayer(p,t)){
- //追踪途中定位失败的提示
- p.message("目标 §c"+t+" §f逃离了这个世界,终止定位")
- p.removeTag("hunter")
- p.getMCEntity().field_71135_a.func_147359_a(spawnpoint)
- }
- }
- else if(e.id==2){
- var score=scoreboard.getScore(p.name)
- if(score==null)
- score=scoreboard.createScore(p.name)
- var cooldown=score.getValue()
- if(cooldown>1)
- score.setValue(cooldown-1)
- else if(cooldown==1){
- score.setValue(0)
- p.message("指南针冷却完毕,可再次进行定位")
- p.playSound("item.lodestone_compass.lock",1,1)
- }
- }
- }
- function findplayer(p,t){
- var target=p.world.getPlayer(t)
- if(target!=null){
- if(!ess.getUser(target.name).isVanished()){
- p.getMCEntity().field_71135_a.func_147359_a(new packet(target.getMCEntity().func_233580_cy_(),0))
- //这里是ACTIONBAR
- p.getMCEntity().field_71135_a.func_147359_a(new titlepacket(titlepacket.Type.ACTIONBAR,new text("距目标 "+t+" "+parseInt(target.pos.distanceTo(p.pos))+"m")))
- return true}}
- return false
- }
- function died(e){
- var player=e.player
- var playername=player.name
- var killer=player.getMCEntity().field_70717_bb
- if(killer!=null){
- var killername=killer.func_200200_C_().getString()
- var players=player.world.getAllPlayers()
- for(var i in players){
- if(players[i].getNbt().getString("target")==playername){
- players[i].removeTag("hunter")
- players[i].getMCEntity().field_71135_a.func_147359_a(spawnpoint)
- if(players[i].name==killername){
- players[i].message("恭喜你亲手杀死了目标")
- var server=killer.func_184102_h()
- //放个烟花庆祝一下
- server.func_195571_aL().func_197059_a(server.func_195573_aM().func_197031_a(),"execute at "+playername+" run summon firework_rocket ~ ~ ~ {FireworksItem:{id:firework_rocket,Count:1,tag:{Fireworks:{Explosions:[{Type:4,Trail:1,Colors:[I;11743532,14602026],FadeColors:[I;4312372,14602026]}]}}}}")
- }
- else players[i].message("人头被"+killername+"抢走了,终止定位")
- }
- }
- var userk=ess.getUser(killername)
- var userp=ess.getUser(playername)
- var award=userp.getMoney().multiply(new BigDecimal(0.1)).setScale(0,HALF_UP)
- userk.setMoney(userk.getMoney().add(award).setScale(0,HALF_UP))
- userp.setMoney(userp.getMoney().subtract(award).setScale(0,HALF_UP))
- player.world.getPlayer(killername).message("你击杀了"+playername+"并获得了§e"+award+"金币¥")
- player.message("你被"+killername+"击杀了并损失了"+award+"金币¥")
- }
- else{
- var players=player.world.getAllPlayers()
- for(var i in players){
- if(players[i].getNbt().getString("target")==playername){
- players[i].removeTag("hunter")
- players[i].getMCEntity().field_71135_a.func_147359_a(spawnpoint)
- players[i].message("目标意外死亡,终止定位")
- }
- }
- }
- if(player.hasTag("hunter")){
- player.removeTag("hunter")
- player.message("你已死亡,终止定位")
- }
- }
复制代码 |