Skip to content

Commit

Permalink
弓の攻撃力が矢に載るように
Browse files Browse the repository at this point in the history
  • Loading branch information
Quarri6343 committed Aug 31, 2023
1 parent f920403 commit 99933a5
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@ static CustomProjectileService getImpl(){

void onCustomProjectileHit(Projectile projectile);

double getCustomProjectileDamage(Projectile projectile);

void deSpawnAll();
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ public void onCustomProjectileHit(Projectile projectile) {
projectile.remove();
}

@Override //TODO:これもprojectileの種類が増えたらEnumに移行
public double getCustomProjectileDamage(Projectile projectile) {
//既にHitイベントでremoveされている可能性を考慮してcontainsチェックはしない
return CustomProjectileService.arrow.getDamage(projectile);
}

@Override
public void deSpawnAll() {
spawnedProjectiles.forEach(Entity::remove);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package net.riblab.tradecore.entity.projectile;

import org.bukkit.entity.EntityType;
import org.bukkit.entity.Projectile;

public interface ITCProjectile {
Expand All @@ -11,4 +10,6 @@ public interface ITCProjectile {
Class<? extends Projectile> getBaseClass();

String getInternalName();

public double getDamage(Projectile projectile);
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public TCProjectile(Class<? extends Projectile> baseClass, String internalName)
public void onSpawn(Projectile projectile, double damage) {
NBTEntity nbtEntity = new NBTEntity(projectile);
nbtEntity.getPersistentDataContainer().setString("TCID", internalName);
nbtEntity.getPersistentDataContainer().setDouble("ProjectileDamage", damage);
}

@Override
Expand All @@ -42,4 +43,10 @@ public boolean isSimilar(Projectile projectile) {

return ID.equals(internalName);
}

@Override
public double getDamage(Projectile projectile) {
NBTEntity nbtEntity = new NBTEntity(projectile);
return nbtEntity.getPersistentDataContainer().getDouble("ProjectileDamage");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.bukkit.Material;
import org.bukkit.entity.Mob;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
Expand Down Expand Up @@ -139,7 +140,7 @@ public void stopBowAim(PlayerInteractEvent event) {
if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_BLOCK)
return;

if(event.getItem().getType() == Material.BOW){
if(event.getItem() != null && event.getItem().getType() == Material.BOW){
event.setCancelled(true);
}
}
Expand Down Expand Up @@ -168,8 +169,10 @@ public void swingWeapon(PlayerInteractEvent event) {
}

public void processEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return; //TODO:ここでprojectile攻撃の処理分岐
if (!(event.getDamager() instanceof Player)){
tryProcessProjectileAttack(event);
return;
}

tryProcessMeleeAttack(event);
}
Expand Down Expand Up @@ -223,6 +226,13 @@ public void tryProcessMeleeAttack(EntityDamageByEntityEvent event) {
}
}

public void tryProcessProjectileAttack(EntityDamageByEntityEvent event) {
if(!(event.getDamager() instanceof Projectile projectile))
return;

event.setDamage(CustomProjectileService.getImpl().getCustomProjectileDamage(projectile));
}

public void processEntityDamage(EntityDamageEvent event) {
tryBlockDamageWithCustomArmor(event);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/riblab/tradecore/item/base/TCItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public enum TCItems {
//鉄器時代
REINFORCED_STICK(new TCSellableItem(Component.text("強化棒"), Material.STICK, "reinforced_stick", 0, 0.10d)),
REINFORCED_WALKING_STICK(new TCItemWithMod(Component.text("強化歩行杖"), Material.STICK, "reinforced _walking_stick", 0, List.of(new ModWalkSpeedI(6)))),
BASIC_BOW(new TCWeapon(Component.text("普通の弓"), Material.BOW, "basic_bow", 0, 128, List.of(), new WeaponAttributeBow(1, 1))),
BASIC_BOW(new TCWeapon(Component.text("普通の弓"), Material.BOW, "basic_bow", 0, 128, List.of(), new WeaponAttributeBow(1, 4))),

//店売り限定
EMERALD_HELMET(new TCEquipment(Component.text("エメラルドのヘルメット"), Material.CHAINMAIL_HELMET, "emerald_helmet", List.of(new ModReduceCraftCostI(3)), 256, "emerald")),
Expand Down

0 comments on commit 99933a5

Please sign in to comment.