Dzień dobry, ma ktoś może funkcję która zwraca entity / gracza na którego się patrze?
Znalazłem coś ale jest to bardzo nieczułe - działa tylko ja się patrze na "klatkę piersiową" gracza. (Spoiler)
Najlepiej chciałbym coś takiego co daje skrypt pod funkcją targeted entity
Próbowałem go dekompilować ale jestem początkujący i nic z tego nie zrozumiałem
Spoiler
import java.util.HashMap;import java.util.HashSet;import java.util.Set;import org.bukkit.Chunk;import org.bukkit.Location;import org.bukkit.block.Block;import org.bukkit.entity.Entity;import org.bukkit.entity.Player;publicclass imp{publicstaticPlayer targetEntity(Player p){int range =5;HashMap<Chunk,Set<Block>> chunks =newHashMap<>();for(Block b : p.getLineOfSight(null, range)){Chunk c = b.getChunk();Set<Block> blocks;if(chunks.containsKey(c)){// The chunk was already registered
blocks = chunks.get(c);}else{// The chunk was not yet registered
blocks =newHashSet<Block>();}
blocks.add(b);
chunks.put(c, blocks);}Entity targetedEntity =null;double distance =Double.MAX_VALUE;for(Chunk c : chunks.keySet()){Entity entites[]= c.getEntities();for(Block b : chunks.get(c)){for(Entity e : entites){if(isInBlock(e, b)){double tmpDistance = e.getLocation().distance(p.getLocation());if(targetedEntity ==null|| tmpDistance < distance){
targetedEntity = e;
distance = tmpDistance;}}}}}if(targetedEntity ==null){//p.sendMessage("You're not aiming at an entity that is in a range of " + range + " blocks.");returnnull;}else{//p.sendMessage("You're aiming at " + targetedEntity.getName() + " who is " + (int) distance + " blocks away from you.");return(Player) targetedEntity;}}publicstatic boolean isInBlock(Entity e,Block b){if(e.getWorld()!= b.getWorld()){returnfalse;}Location locationEntity = e.getLocation(), locationBlock = getCenterOfBlock(b);double distance = locationEntity.distance(locationBlock);//System.out.println("distance: " + distance);return(distance <1);}publicstaticLocation getCenterOfBlock(Block b){Location loc = b.getLocation();return loc.add(0.5,0.5,0.5);}}
Pytanie
DiglettCraft 2
Dzień dobry, ma ktoś może funkcję która zwraca entity / gracza na którego się patrze?
Znalazłem coś ale jest to bardzo nieczułe - działa tylko ja się patrze na "klatkę piersiową" gracza. (Spoiler)
Najlepiej chciałbym coś takiego co daje skrypt pod funkcją targeted entity
Próbowałem go dekompilować ale jestem początkujący i nic z tego nie zrozumiałem
Odnośnik do komentarza
https://skript.pl/temat/24289-funkcja-zwracaj%C4%85ca-entity-na-kt%C3%B3re-si%C4%99-gracz-patrzy/Udostępnij na innych stronach
0 odpowiedzi na to pytanie
Rekomendowane odpowiedzi