added carpet bombing arrow (missing textures)
This commit is contained in:
parent
e02551f4fb
commit
3ae85cb1c1
@ -29,6 +29,7 @@ public class creativeTab {
|
|||||||
output.accept(blocks.TNT_CLAYMORE.get());
|
output.accept(blocks.TNT_CLAYMORE.get());
|
||||||
output.accept(items.TNT_ARROW.get());
|
output.accept(items.TNT_ARROW.get());
|
||||||
output.accept(items.CONCUSSIVE_ARROW.get());
|
output.accept(items.CONCUSSIVE_ARROW.get());
|
||||||
|
output.accept(items.CARPET_ARROW.get());
|
||||||
}).title(Component.literal("Compressed TNT")).build());
|
}).title(Component.literal("Compressed TNT")).build());
|
||||||
|
|
||||||
public static void register(IEventBus bus) {
|
public static void register(IEventBus bus) {
|
||||||
|
@ -0,0 +1,57 @@
|
|||||||
|
package com.jenny.compressedtnt.entities.arrows;
|
||||||
|
|
||||||
|
import com.jenny.compressedtnt.entities.entities;
|
||||||
|
import com.jenny.compressedtnt.items.items;
|
||||||
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
|
import net.minecraft.util.RandomSource;
|
||||||
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class carpetArrow extends baseArrow {
|
||||||
|
private int tick = 0;
|
||||||
|
private Vec3 pos = position();
|
||||||
|
public final int childCount = 32;
|
||||||
|
|
||||||
|
public carpetArrow(EntityType<carpetArrow> pEntityType, Level pLevel) {
|
||||||
|
super(pEntityType, pLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public carpetArrow(Level pLevel, LivingEntity pShooter) {
|
||||||
|
super(pLevel, pShooter, entities.ARROW_CARPET.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
pos = position();
|
||||||
|
super.tick();
|
||||||
|
if (level().isClientSide()) {
|
||||||
|
level().addParticle(ParticleTypes.SMOKE, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D);
|
||||||
|
}
|
||||||
|
tick++;
|
||||||
|
if (pos.y > position().y) {
|
||||||
|
spawnChildren(childCount);
|
||||||
|
discard();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void spawnChildren(int count) {
|
||||||
|
Vec3 delta = getDeltaMovement();
|
||||||
|
RandomSource rng = level().getRandom();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
concussiveArrow arrow = new concussiveArrow(entities.ARROW_CONCUSSIVE.get(), level());
|
||||||
|
Vec3 move = delta.add((float) rng.nextInt(-10, 11) / 10, 0, (float) rng.nextInt(-10, 11) / 10);
|
||||||
|
arrow.setPos(position());
|
||||||
|
arrow.setDeltaMovement(delta.add(move.multiply(0.2, 0, 0.2)));
|
||||||
|
level().addFreshEntity(arrow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
protected ItemStack getPickupItem() {
|
||||||
|
return new ItemStack(items.CARPET_ARROW.get());
|
||||||
|
}
|
||||||
|
}
|
@ -48,6 +48,10 @@ public class entities {
|
|||||||
ENTITY_TYPES.register("arrow_concussive", () -> EntityType.Builder.<concussiveArrow>of(concussiveArrow::new, MobCategory.MISC)
|
ENTITY_TYPES.register("arrow_concussive", () -> EntityType.Builder.<concussiveArrow>of(concussiveArrow::new, MobCategory.MISC)
|
||||||
.sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_concussive"));
|
.sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_concussive"));
|
||||||
|
|
||||||
|
public static final RegistryObject<EntityType<carpetArrow>> ARROW_CARPET =
|
||||||
|
ENTITY_TYPES.register("arrow_carpet", () -> EntityType.Builder.<carpetArrow>of(carpetArrow::new, MobCategory.MISC)
|
||||||
|
.sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_carpet"));
|
||||||
|
|
||||||
public static void register(IEventBus eventBus) {
|
public static void register(IEventBus eventBus) {
|
||||||
ENTITY_TYPES.register(eventBus);
|
ENTITY_TYPES.register(eventBus);
|
||||||
}
|
}
|
||||||
@ -61,5 +65,6 @@ public class entities {
|
|||||||
|
|
||||||
EntityRenderers.register(ARROW_TNT.get(), TNTArrowRenderer::new);
|
EntityRenderers.register(ARROW_TNT.get(), TNTArrowRenderer::new);
|
||||||
EntityRenderers.register(ARROW_CONCUSSIVE.get(), TNTArrowRenderer::new);
|
EntityRenderers.register(ARROW_CONCUSSIVE.get(), TNTArrowRenderer::new);
|
||||||
|
EntityRenderers.register(ARROW_CARPET.get(), TNTArrowRenderer::new);
|
||||||
}
|
}
|
||||||
}
|
}
|
22
src/main/java/com/jenny/compressedtnt/items/ArrowCarpet.java
Normal file
22
src/main/java/com/jenny/compressedtnt/items/ArrowCarpet.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package com.jenny.compressedtnt.items;
|
||||||
|
|
||||||
|
import com.jenny.compressedtnt.entities.arrows.carpetArrow;
|
||||||
|
import com.jenny.compressedtnt.entities.arrows.tntArrow;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||||
|
import net.minecraft.world.item.ArrowItem;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class ArrowCarpet extends ArrowItem {
|
||||||
|
public ArrowCarpet(Properties properties){
|
||||||
|
super(properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public AbstractArrow createArrow(@NotNull Level pLevel, @NotNull ItemStack pStack, @NotNull LivingEntity pShooter) {
|
||||||
|
return new carpetArrow(pLevel, pShooter);
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,8 @@ public class items {
|
|||||||
|
|
||||||
public static final RegistryObject<Item> TNT_ARROW = ITEMS.register("arrow_tnt", () -> new ArrowTNT(new Item.Properties()));
|
public static final RegistryObject<Item> TNT_ARROW = ITEMS.register("arrow_tnt", () -> new ArrowTNT(new Item.Properties()));
|
||||||
public static final RegistryObject<Item> CONCUSSIVE_ARROW = ITEMS.register("arrow_concussive", () -> new ArrowConcussive(new Item.Properties()));
|
public static final RegistryObject<Item> CONCUSSIVE_ARROW = ITEMS.register("arrow_concussive", () -> new ArrowConcussive(new Item.Properties()));
|
||||||
|
public static final RegistryObject<Item> CARPET_ARROW = ITEMS.register("arrow_carpet", () -> new ArrowCarpet(new Item.Properties()));
|
||||||
|
|
||||||
|
|
||||||
public static void register(IEventBus bus) {
|
public static void register(IEventBus bus) {
|
||||||
ITEMS.register(bus);
|
ITEMS.register(bus);
|
||||||
|
@ -12,5 +12,6 @@
|
|||||||
"block.compressedtnt.tnt_claymore": "Claymore TNT",
|
"block.compressedtnt.tnt_claymore": "Claymore TNT",
|
||||||
|
|
||||||
"item.compressedtnt.arrow_tnt": "TNT Arrow",
|
"item.compressedtnt.arrow_tnt": "TNT Arrow",
|
||||||
"item.compressedtnt.arrow_concussive": "Concussive Arrow"
|
"item.compressedtnt.arrow_concussive": "Concussive Arrow",
|
||||||
|
"item.compressedtnt.arrow_carpet": "Carpet Bombing Arrow"
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"values": [
|
"values": [
|
||||||
"compressedtnt:arrow_tnt",
|
"compressedtnt:arrow_tnt",
|
||||||
"compressedtnt:arrow_concussive"
|
"compressedtnt:arrow_concussive",
|
||||||
|
"compressedtnt:arrow_carpet"
|
||||||
]
|
]
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user