Skip to content

Commit 4d5af58

Browse files
committed
完成孙坚的两个被动以及A技能;
1 parent f7fd52b commit 4d5af58

File tree

5 files changed

+208
-0
lines changed

5 files changed

+208
-0
lines changed

src/main/java/xyz/lisbammisakait/item/ModItems.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,15 @@ public class ModItems {
8787
//注册曹操A技能
8888
public static final RegistryKey<Item> CAOCAOASKILL_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(RelightTheThreePointStrategy.MOD_ID, "caocaoaskill"));
8989
public static final Item CAOCAOASKILL = register(new CaoCaoASkill( new Item.Settings().registryKey(CAOCAOASKILL_KEY).component(RtTPSComponents.USENUMBER_TYPE,0)), CAOCAOASKILL_KEY);
90+
//注册孙坚A技能
91+
public static final RegistryKey<Item> SUNJIANASKILL_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(RelightTheThreePointStrategy.MOD_ID, "sunjianaskill"));
92+
public static final Item SUNJIANASKILL = register(new SunJianASkill( new Item.Settings().registryKey(SUNJIANASKILL_KEY).component(RtTPSComponents.USENUMBER_TYPE,0)), SUNJIANASKILL_KEY);
93+
//注册孙坚P技能
94+
public static final RegistryKey<Item> SUNJIANPSKILL_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(RelightTheThreePointStrategy.MOD_ID, "sunjianpskill"));
95+
public static final Item SUNJIANPSKILL = register(new SunJianPSkill( new Item.Settings().registryKey(SUNJIANPSKILL_KEY).component(RtTPSComponents.USENUMBER_TYPE,0)), SUNJIANPSKILL_KEY);
96+
//注册孙坚P技能
97+
public static final RegistryKey<Item> SUNJIANP2SKILL_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(RelightTheThreePointStrategy.MOD_ID, "sunjianp2skill"));
98+
public static final Item SUNJIANP2SKILL = register(new SunJianP2Skill( new Item.Settings().registryKey(SUNJIANP2SKILL_KEY).component(RtTPSComponents.USENUMBER_TYPE,0).component(RtTPSComponents.LIMITEDSKILLEXHAUSTED_TYPE,false)), SUNJIANP2SKILL_KEY);
9099

91100
//注册不可发动
92101
public static final RegistryKey<Item> UNLAUNCHABLE_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(RelightTheThreePointStrategy.MOD_ID, "unlaunchable"));
@@ -121,6 +130,9 @@ public static void registerToSkillGroups() {
121130
itemGroup.add(ModItems.CAOCAOASKILL);
122131
itemGroup.add(ModItems.UNLAUNCHABLE);
123132
itemGroup.add(ModItems.MARK);
133+
itemGroup.add(ModItems.SUNJIANASKILL);
134+
itemGroup.add(ModItems.SUNJIANPSKILL);
135+
itemGroup.add(ModItems.SUNJIANP2SKILL);
124136
});
125137
}
126138
//注册武器
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package xyz.lisbammisakait.skill;
2+
3+
import net.minecraft.entity.damage.DamageSources;
4+
import net.minecraft.entity.damage.DamageType;
5+
import net.minecraft.entity.effect.StatusEffectInstance;
6+
import net.minecraft.entity.effect.StatusEffects;
7+
import net.minecraft.entity.mob.DrownedEntity;
8+
import net.minecraft.entity.player.PlayerEntity;
9+
import net.minecraft.item.Item;
10+
import net.minecraft.item.ItemStack;
11+
import net.minecraft.network.packet.s2c.play.PositionFlag;
12+
import net.minecraft.registry.RegistryKeys;
13+
import net.minecraft.registry.entry.RegistryEntry;
14+
import net.minecraft.server.MinecraftServer;
15+
import net.minecraft.server.network.ServerPlayerEntity;
16+
import net.minecraft.server.world.ServerWorld;
17+
import net.minecraft.util.math.Box;
18+
import net.minecraft.util.math.Vec3d;
19+
import xyz.lisbammisakait.RelightTheThreePointStrategy;
20+
import xyz.lisbammisakait.compoennt.RtTPSComponents;
21+
import xyz.lisbammisakait.item.ModItems;
22+
import xyz.lisbammisakait.tools.SafeTp;
23+
import net.minecraft.entity.damage.DamageSource;
24+
import net.minecraft.entity.player.PlayerEntity;
25+
import net.minecraft.entity.LivingEntity;
26+
27+
import java.util.Collections;
28+
import java.util.List;
29+
import java.util.Set;
30+
31+
public class SunJianASkill extends Item implements ActiveSkillable {
32+
33+
public SunJianASkill(Settings settings) {
34+
super(settings);
35+
}
36+
37+
@Override
38+
public void castSkill(MinecraftServer server, ServerPlayerEntity serverplayer, ItemStack stack) {
39+
// 创建一个新的物品栈
40+
ItemStack newItemStack = new ItemStack(ModItems.UNLAUNCHABLE, 1);
41+
// 将技能B位置更换为新的物品栈
42+
serverplayer.getInventory().main.set(8, newItemStack);
43+
44+
// 获取服务器中的所有玩家列表
45+
List<ServerPlayerEntity> playerList = server.getPlayerManager().getPlayerList();
46+
// 移除当前玩家自身
47+
playerList.remove(serverplayer);
48+
//移出正常复活的玩家
49+
//交给家霖
50+
51+
if (!playerList.isEmpty()) {
52+
// 随机选择一名其他玩家
53+
Collections.shuffle(playerList);
54+
ServerPlayerEntity targetPlayer = playerList.get(0);
55+
56+
// 获取目标玩家的位置
57+
Vec3d targetPosition = targetPlayer.getPos();
58+
ServerWorld targetWorld = (ServerWorld) targetPlayer.getWorld();
59+
60+
// 传送当前玩家到目标玩家的位置
61+
Set<PositionFlag> flags = Collections.emptySet();
62+
float yaw = serverplayer.getYaw();
63+
float pitch = serverplayer.getPitch();
64+
boolean resetCamera = false;
65+
SafeTp.safeTp(serverplayer,targetWorld, targetPosition.getX(), targetPosition.getY() + 5, targetPosition.getZ(),flags, yaw, pitch, resetCamera);
66+
RelightTheThreePointStrategy.LOGGER.info(serverplayer.getName().getString() + " 传送到了 " + targetPlayer.getName().getString() + " 的位置");
67+
68+
//赋予减速
69+
targetPlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 4 * 20, 3));
70+
71+
//检测二段伤害
72+
if(isMarkInSlot(serverplayer))//检测物品栏
73+
{
74+
if (serverplayer.getInventory().getStack(4).get(RtTPSComponents.REMAININGRESPAWNCOUNT_TYPE) <= 2)
75+
{
76+
targetPlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.INSTANT_DAMAGE, 1, 3));
77+
/*ServerWorld world = (ServerWorld) serverplayer.getWorld();
78+
DamageSource damageSource = new DamageSource(, serverplayer);
79+
targetPlayer.damage(world, damageSource,40);*/
80+
ServerWorld world = (ServerWorld) serverplayer.getWorld();
81+
DamageSource damageSource = new DamageSource(serverplayer.getRegistryManager()
82+
.getOrThrow(RegistryKeys.DAMAGE_TYPE)
83+
.getEntry(new DamageType("player",0.0F)));
84+
targetPlayer.damage(world, damageSource,40F);
85+
}
86+
}
87+
}
88+
}
89+
//检查玩家快捷栏第5格是否为mark
90+
public static boolean isMarkInSlot(PlayerEntity player) {
91+
// 快捷栏第5格对应的索引是4(索引从0开始)
92+
int slotIndex = 4;
93+
// 获取玩家的快捷栏物品栈
94+
ItemStack itemStack = player.getInventory().getStack(slotIndex);
95+
// 检查物品栈是否为空以及物品是否为钻石剑
96+
return !itemStack.isEmpty() && itemStack.getItem() == ModItems.MARK;
97+
}
98+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package xyz.lisbammisakait.skill;
2+
3+
import net.minecraft.item.Item;
4+
import net.minecraft.item.ItemStack;
5+
import net.minecraft.item.tooltip.TooltipType;
6+
import net.minecraft.text.Text;
7+
import xyz.lisbammisakait.item.CanghaitulongfuItem;
8+
9+
import java.util.List;
10+
11+
public class SunJianP2Skill extends Item implements PassiveSkillable{
12+
public SunJianP2Skill(Settings settings) {
13+
super(settings);
14+
}
15+
@Override
16+
public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {
17+
addCustomTooltip(tooltip);
18+
}
19+
20+
@Override
21+
public void addCustomTooltip(List<Text> tooltip) {
22+
tooltip.add(Text.translatable("skill.relight-the-three-point-strategy.sunjianp2skill", CanghaitulongfuItem.HITNUMBER));
23+
}
24+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package xyz.lisbammisakait.skill;
2+
3+
import net.minecraft.entity.Entity;
4+
import net.minecraft.entity.effect.StatusEffectInstance;
5+
import net.minecraft.entity.effect.StatusEffects;
6+
import net.minecraft.entity.player.PlayerEntity;
7+
import net.minecraft.item.Item;
8+
import net.minecraft.item.ItemStack;
9+
import net.minecraft.item.Items;
10+
import net.minecraft.item.tooltip.TooltipType;
11+
import net.minecraft.text.Text;
12+
import net.minecraft.world.World;
13+
import xyz.lisbammisakait.RelightTheThreePointStrategy;
14+
import xyz.lisbammisakait.compoennt.RtTPSComponents;
15+
import xyz.lisbammisakait.item.CanghaitulongfuItem;
16+
import xyz.lisbammisakait.item.ModItems;
17+
18+
import java.util.List;
19+
20+
public class SunJianPSkill extends Item implements PassiveSkillable{
21+
22+
public SunJianPSkill(Settings settings) {
23+
super(settings);
24+
}
25+
@Override
26+
public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {
27+
addCustomTooltip(tooltip);
28+
}
29+
30+
public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected){
31+
boolean isExhausted = stack.getOrDefault(RtTPSComponents.LIMITEDSKILLEXHAUSTED_TYPE,true);
32+
PlayerEntity player = (PlayerEntity) entity;
33+
34+
if(isMarkInSlot(player))//检测物品栏
35+
{
36+
if (player.getInventory().getStack(4).get(RtTPSComponents.REMAININGRESPAWNCOUNT_TYPE) <= 2) {
37+
player.addStatusEffect(new StatusEffectInstance(StatusEffects.JUMP_BOOST, 1, 3));
38+
player.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOW_FALLING, 1, 1));
39+
}
40+
if (!isExhausted)
41+
{
42+
if(player.getInventory().getStack(4).get(RtTPSComponents.REMAININGRESPAWNCOUNT_TYPE) == 2)
43+
{
44+
// 创建一个新的物品栈
45+
ItemStack newItemStack = new ItemStack(ModItems.SUNJIANASKILL, 1);
46+
// 将技能B位置更换为新的物品栈
47+
player.getInventory().main.set(8, newItemStack);
48+
stack.set(RtTPSComponents.LIMITEDSKILLEXHAUSTED_TYPE, true);
49+
}
50+
}
51+
}
52+
53+
}
54+
55+
56+
57+
//检查玩家快捷栏第5格是否为mark
58+
public static boolean isMarkInSlot(PlayerEntity player) {
59+
// 快捷栏第5格对应的索引是4(索引从0开始)
60+
int slotIndex = 4;
61+
// 获取玩家的快捷栏物品栈
62+
ItemStack itemStack = player.getInventory().getStack(slotIndex);
63+
// 检查物品栈是否为空以及物品是否为钻石剑
64+
return !itemStack.isEmpty() && itemStack.getItem() == ModItems.MARK;
65+
}
66+
67+
@Override
68+
public void addCustomTooltip(List<Text> tooltip) {
69+
tooltip.add(Text.translatable("skill.relight-the-three-point-strategy.sunjianpskill", CanghaitulongfuItem.HITNUMBER));
70+
}
71+
}

src/main/resources/assets/relight-the-three-point-strategy/lang/zh_cn.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
"item.relight-the-three-point-strategy.caocaopskill": "短歌微吟",
2929
"item.relight-the-three-point-strategy.caocaoaskill": "天下归心",
3030
"item.relight-the-three-point-strategy.unlaunchable": "不可发动",
31+
"item.relight-the-three-point-strategy.sunjianaskill": "独锋",
32+
"item.relight-the-three-point-strategy.sunjianpskill": "陷阵破虏",
33+
"item.relight-the-three-point-strategy.sunjianp2skill": "魂佑江东",
3134
"---------------------------------------------": "---------------------------------",
3235
"-------------------------------------技能描述": "-----------------------------------",
3336
"----------------------------------------------": "--------------------------------",

0 commit comments

Comments
 (0)