添加无人机的配方

This commit is contained in:
Atsuihsio 2024-07-25 17:54:11 +08:00
parent b9609a9f24
commit dbd6d834bd
10 changed files with 154 additions and 6 deletions

View file

@ -1,6 +1,5 @@
package net.mcreator.target.entity; package net.mcreator.target.entity;
import net.mcreator.target.client.gui.RangeHelper;
import net.mcreator.target.init.TargetModEntities; import net.mcreator.target.init.TargetModEntities;
import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.init.TargetModSounds;
@ -8,6 +7,7 @@ import net.mcreator.target.item.Monitor;
import net.mcreator.target.tools.SoundTool; import net.mcreator.target.tools.SoundTool;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
@ -22,18 +22,31 @@ import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.SimpleContainer;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.*; import net.minecraft.world.entity.*;
import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation;
import net.minecraft.world.entity.ai.navigation.PathNavigation; import net.minecraft.world.entity.ai.navigation.PathNavigation;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.npc.InventoryCarrier;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.ItemStackHandler;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import net.minecraftforge.items.wrapper.EntityArmorInvWrapper;
import net.minecraftforge.items.wrapper.EntityHandsInvWrapper;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PlayMessages; import net.minecraftforge.network.PlayMessages;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
@ -46,6 +59,8 @@ import software.bernie.geckolib.core.animation.RawAnimation;
import software.bernie.geckolib.core.object.PlayState; import software.bernie.geckolib.core.object.PlayState;
import software.bernie.geckolib.util.GeckoLibUtil; import software.bernie.geckolib.util.GeckoLibUtil;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
@ -283,7 +298,7 @@ public class DroneEntity extends PathfinderMob implements GeoEntity {
} }
} }
} else if (stack.isEmpty() && player.isCrouching()) { } else if (stack.isEmpty() && player.isCrouching()) {
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(TargetModItems.DRONE_SPAWN_EGG.get())); ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(TargetModItems.DRONE.get()));
for (int index0 = 0; index0 < this.entityData.get(AMMO); index0++) { for (int index0 = 0; index0 < this.entityData.get(AMMO); index0++) {
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(TargetModItems.GRENADE_40MM.get())); ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(TargetModItems.GRENADE_40MM.get()));
} }
@ -442,4 +457,30 @@ public class DroneEntity extends PathfinderMob implements GeoEntity {
public AnimatableInstanceCache getAnimatableInstanceCache() { public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.cache; return this.cache;
} }
private final ItemStackHandler inventory = new ItemStackHandler(9) {
@Override
public int getSlotLimit(int slot) {
return 64;
}
};
private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this));
@Override
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> capability, @Nullable Direction side) {
if (this.isAlive() && capability == ForgeCapabilities.ITEM_HANDLER && side == null)
return LazyOptional.of(() -> combined).cast();
return super.getCapability(capability, side);
}
@Override
protected void dropEquipment() {
super.dropEquipment();
for (int i = 0; i < inventory.getSlots(); ++i) {
ItemStack itemstack = inventory.getStackInSlot(i);
if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) {
this.spawnAtLocation(itemstack);
}
}
}
} }

View file

@ -78,7 +78,7 @@ public class TargetModItems {
public static final RegistryObject<Item> SENPAI_SPAWN_EGG = ITEMS.register("senpai_spawn_egg", () -> new ForgeSpawnEggItem(TargetModEntities.SENPAI, -11584987, -14014413, new Item.Properties())); public static final RegistryObject<Item> SENPAI_SPAWN_EGG = ITEMS.register("senpai_spawn_egg", () -> new ForgeSpawnEggItem(TargetModEntities.SENPAI, -11584987, -14014413, new Item.Properties()));
public static final RegistryObject<Item> MK_42_SPAWN_EGG = ITEMS.register("mk42_spawn_egg", () -> new ForgeSpawnEggItem(TargetModEntities.MK_42, -8348258, -2630437, new Item.Properties())); public static final RegistryObject<Item> MK_42_SPAWN_EGG = ITEMS.register("mk42_spawn_egg", () -> new ForgeSpawnEggItem(TargetModEntities.MK_42, -8348258, -2630437, new Item.Properties()));
public static final RegistryObject<Item> DRONE_SPAWN_EGG = ITEMS.register("drone_spawn_egg", () -> new ForgeSpawnEggItem(TargetModEntities.DRONE, -3355444, -10053121, new Item.Properties())); public static final RegistryObject<Item> DRONE = ITEMS.register("drone", Drone::new);
public static final RegistryObject<Item> MONITOR = ITEMS.register("monitor", Monitor::new); public static final RegistryObject<Item> MONITOR = ITEMS.register("monitor", Monitor::new);
public static final RegistryObject<Item> TARGET_DEPLOYER = ITEMS.register("target_deployer", TargetDeployer::new); public static final RegistryObject<Item> TARGET_DEPLOYER = ITEMS.register("target_deployer", TargetDeployer::new);

View file

@ -0,0 +1,42 @@
package net.mcreator.target.item;
import net.mcreator.target.init.TargetModEntities;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.Level;
public class Drone extends Item {
public Drone() {
super(new Properties().rarity(Rarity.RARE));
}
@Override
public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand hand) {
InteractionResultHolder<ItemStack> ar = super.use(world, player, hand);
if (world instanceof ServerLevel level) {
Entity entityToSpawn = TargetModEntities.DRONE.get().spawn(level, BlockPos.containing(player.getX() + 1.5 * player.getLookAngle().x, player.getY(), player.getZ() + 1.5 * player.getLookAngle().z), MobSpawnType.MOB_SUMMONED);
if (entityToSpawn != null) {
entityToSpawn.setYRot(player.getYRot());
entityToSpawn.setYBodyRot(player.getYRot());
entityToSpawn.setYHeadRot(player.getYRot());
entityToSpawn.setDeltaMovement(0, 0, 0);
}
}
if (!player.isCreative()) {
player.getItemInHand(hand).shrink(1);
player.swing(InteractionHand.MAIN_HAND, true);
}
return ar;
}
}

View file

@ -126,6 +126,7 @@
"curios.identifier.dog_tag": "Dog Tag", "curios.identifier.dog_tag": "Dog Tag",
"item.target.shield_cell": "Cell", "item.target.shield_cell": "Cell",
"item.target.mk42_spawn_egg": "MK-42 Spawn Egg", "item.target.mk42_spawn_egg": "MK-42 Spawn Egg",
"item.target.drone": "Drone",
"item.target.monitor": "Monitor", "item.target.monitor": "Monitor",
"attribute.target.spread": "Spread", "attribute.target.spread": "Spread",

View file

@ -126,6 +126,7 @@
"curios.identifier.dog_tag": "狗牌", "curios.identifier.dog_tag": "狗牌",
"item.target.shield_cell": "电池", "item.target.shield_cell": "电池",
"item.target.mk42_spawn_egg": "MK-42刷怪蛋", "item.target.mk42_spawn_egg": "MK-42刷怪蛋",
"item.target.drone": "无人机",
"item.target.monitor": "遥控器", "item.target.monitor": "遥控器",
"attribute.target.spread": "散布", "attribute.target.spread": "散布",

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "target:item/drone_icon"
}
}

View file

@ -1,3 +0,0 @@
{
"parent": "item/template_spawn_egg"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

View file

@ -0,0 +1,30 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"a a",
"bcb",
"ded"
],
"key": {
"a": {
"item": "minecraft:black_carpet"
},
"b": {
"item": "minecraft:piston"
},
"c": {
"item": "minecraft:compass"
},
"d": {
"item": "minecraft:iron_ingot"
},
"e": {
"item": "minecraft:dropper"
}
},
"result": {
"item": "target:drone",
"count": 1
}
}

View file

@ -0,0 +1,30 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"a a",
"bcb",
"ded"
],
"key": {
"a": {
"item": "minecraft:lightning_rod"
},
"b": {
"item": "minecraft:lever"
},
"c": {
"item": "minecraft:iron_ingot"
},
"d": {
"item": "minecraft:amethyst_shard"
},
"e": {
"tag": "forge:stained_glass_panes"
}
},
"result": {
"item": "target:monitor",
"count": 1
}
}