Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
공백 변경 숨기기
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
텍스트 스타일
모양 변경
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
Untitled diff
생성일
11년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
8 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
43 행
복사
5 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
40 행
복사
복사
복사됨
복사
복사됨
public class
Hom
ingTask extends BukkitRunnable {
public class
Chas
ingTask extends BukkitRunnable {
private static final double MaxRotationAngle = 0.12;
private static final double TargetSpeed = 1.4;
Arrow arrow;
Arrow arrow;
LivingEntity target;
LivingEntity target;
복사
복사됨
복사
복사됨
public
Hom
ingTask(final Arrow arrow, final LivingEntity target, final
Plugin
plugin) {
public
Chas
ingTask(final Arrow arrow, final LivingEntity target, final
ChasingArrows
plugin) {
super();
super();
this.arrow = arrow;
this.arrow = arrow;
this.target = target;
this.target = target;
복사
복사됨
복사
복사됨
this.runTaskTimer(
plugin, 1L, 1L);
this.runTaskTimer(
(Plugin)
plugin, 1L, 1L);
}
}
public void run() {
public void run() {
final double speed = this.arrow.getVelocity().length();
final double speed = this.arrow.getVelocity().length();
if (this.arrow.isOnGround() || this.arrow.isDead() || this.target.isDead()) {
if (this.arrow.isOnGround() || this.arrow.isDead() || this.target.isDead()) {
this.cancel();
this.cancel();
return;
return;
}
}
final Vector toTarget = this.target.getLocation().clone().add(new Vector(0.0, 0.5, 0.0)).subtract(this.arrow.getLocation()).toVector();
final Vector toTarget = this.target.getLocation().clone().add(new Vector(0.0, 0.5, 0.0)).subtract(this.arrow.getLocation()).toVector();
final Vector dirVelocity = this.arrow.getVelocity().clone().normalize();
final Vector dirVelocity = this.arrow.getVelocity().clone().normalize();
final Vector dirToTarget = toTarget.clone().normalize();
final Vector dirToTarget = toTarget.clone().normalize();
final double angle = dirVelocity.angle(dirToTarget);
final double angle = dirVelocity.angle(dirToTarget);
복사
복사됨
복사
복사됨
double newSpeed = 0.9 * speed + 0.
13999999999999999
;
double newSpeed = 0.9 * speed + 0.
14
;
if (this.target instanceof Player && this.arrow.getLocation().distance(this.target.getLocation()) < 8.0) {
if (this.target instanceof Player && this.arrow.getLocation().distance(this.target.getLocation()) < 8.0) {
final Player player = (Player)this.target;
final Player player = (Player)this.target;
if (player.isBlocking()) {
if (player.isBlocking()) {
newSpeed = speed * 0.6;
newSpeed = speed * 0.6;
}
}
}
}
Vector newVelocity;
Vector newVelocity;
if (angle < 0.12) {
if (angle < 0.12) {
newVelocity = dirVelocity.clone().multiply(newSpeed);
newVelocity = dirVelocity.clone().multiply(newSpeed);
}
}
else {
else {
final Vector newDir = dirVelocity.clone().multiply((angle - 0.12) / angle).add(dirToTarget.clone().multiply(0.12 / angle));
final Vector newDir = dirVelocity.clone().multiply((angle - 0.12) / angle).add(dirToTarget.clone().multiply(0.12 / angle));
newDir.normalize();
newDir.normalize();
newVelocity = newDir.clone().multiply(newSpeed);
newVelocity = newDir.clone().multiply(newSpeed);
}
}
this.arrow.setVelocity(newVelocity.add(new Vector(0.0, 0.03, 0.0)));
this.arrow.setVelocity(newVelocity.add(new Vector(0.0, 0.03, 0.0)));
복사
복사됨
복사
복사됨
this.arrow.getWorld().playEffect(this.arrow.getLocation(), Effect.SMOKE, 0);
}
}
}
}
저장된 비교 결과
원본
파일 열기
public class HomingTask extends BukkitRunnable { private static final double MaxRotationAngle = 0.12; private static final double TargetSpeed = 1.4; Arrow arrow; LivingEntity target; public HomingTask(final Arrow arrow, final LivingEntity target, final Plugin plugin) { super(); this.arrow = arrow; this.target = target; this.runTaskTimer(plugin, 1L, 1L); } public void run() { final double speed = this.arrow.getVelocity().length(); if (this.arrow.isOnGround() || this.arrow.isDead() || this.target.isDead()) { this.cancel(); return; } final Vector toTarget = this.target.getLocation().clone().add(new Vector(0.0, 0.5, 0.0)).subtract(this.arrow.getLocation()).toVector(); final Vector dirVelocity = this.arrow.getVelocity().clone().normalize(); final Vector dirToTarget = toTarget.clone().normalize(); final double angle = dirVelocity.angle(dirToTarget); double newSpeed = 0.9 * speed + 0.13999999999999999; if (this.target instanceof Player && this.arrow.getLocation().distance(this.target.getLocation()) < 8.0) { final Player player = (Player)this.target; if (player.isBlocking()) { newSpeed = speed * 0.6; } } Vector newVelocity; if (angle < 0.12) { newVelocity = dirVelocity.clone().multiply(newSpeed); } else { final Vector newDir = dirVelocity.clone().multiply((angle - 0.12) / angle).add(dirToTarget.clone().multiply(0.12 / angle)); newDir.normalize(); newVelocity = newDir.clone().multiply(newSpeed); } this.arrow.setVelocity(newVelocity.add(new Vector(0.0, 0.03, 0.0))); this.arrow.getWorld().playEffect(this.arrow.getLocation(), Effect.SMOKE, 0); } }
수정본
파일 열기
public class ChasingTask extends BukkitRunnable { Arrow arrow; LivingEntity target; public ChasingTask(final Arrow arrow, final LivingEntity target, final ChasingArrows plugin) { super(); this.arrow = arrow; this.target = target; this.runTaskTimer((Plugin)plugin, 1L, 1L); } public void run() { final double speed = this.arrow.getVelocity().length(); if (this.arrow.isOnGround() || this.arrow.isDead() || this.target.isDead()) { this.cancel(); return; } final Vector toTarget = this.target.getLocation().clone().add(new Vector(0.0, 0.5, 0.0)).subtract(this.arrow.getLocation()).toVector(); final Vector dirVelocity = this.arrow.getVelocity().clone().normalize(); final Vector dirToTarget = toTarget.clone().normalize(); final double angle = dirVelocity.angle(dirToTarget); double newSpeed = 0.9 * speed + 0.14; if (this.target instanceof Player && this.arrow.getLocation().distance(this.target.getLocation()) < 8.0) { final Player player = (Player)this.target; if (player.isBlocking()) { newSpeed = speed * 0.6; } } Vector newVelocity; if (angle < 0.12) { newVelocity = dirVelocity.clone().multiply(newSpeed); } else { final Vector newDir = dirVelocity.clone().multiply((angle - 0.12) / angle).add(dirToTarget.clone().multiply(0.12 / angle)); newDir.normalize(); newVelocity = newDir.clone().multiply(newSpeed); } this.arrow.setVelocity(newVelocity.add(new Vector(0.0, 0.03, 0.0))); } }
비교하기