Compare commits

..

No commits in common. "1.20.6" and "master" have entirely different histories.

17 changed files with 99 additions and 83 deletions

View File

@ -14,7 +14,7 @@ base {
} }
java { java {
toolchain.languageVersion = JavaLanguageVersion.of(21) toolchain.languageVersion = JavaLanguageVersion.of(17)
} }
minecraft { minecraft {
@ -77,6 +77,12 @@ minecraft {
// You can set various levels here. // You can set various levels here.
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
property 'forge.logging.console.level', 'debug' property 'forge.logging.console.level', 'debug'
mods {
"${mod_id}" {
source sourceSets.main
}
}
} }
client { client {
@ -143,7 +149,6 @@ dependencies {
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html // http://www.gradle.org/docs/current/userguide/dependency_management.html
implementation('net.sf.jopt-simple:jopt-simple:5.0.4') { version { strictly '5.0.4' } }
} }
// This block of code expands all declared replace properties in the specified resource targets. // This block of code expands all declared replace properties in the specified resource targets.
@ -183,9 +188,3 @@ tasks.named('jar', Jar).configure {
tasks.withType(JavaCompile).configureEach { tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
} }
sourceSets.each {
def dir = layout.buildDirectory.dir("sourcesSets/$it.name")
it.output.resourcesDir = dir
it.java.destinationDirectory = dir
}

View File

@ -1,12 +1,13 @@
org.gradle.jvmargs=-Xmx3G org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false org.gradle.daemon=false
minecraft_version=1.20.6
minecraft_version_range=[1.20.6] minecraft_version=1.20.1
forge_version=50.1.0 minecraft_version_range=[1.20.1,1.20.2]
forge_version_range=[50,) forge_version=47.3.22
loader_version_range=[50,) forge_version_range=[47,)
loader_version_range=[47,)
mapping_channel=parchment mapping_channel=parchment
mapping_version=2024.06.16-1.20.6 mapping_version=2023.09.03-1.20.1
mod_id=enhancedexplosives mod_id=enhancedexplosives
mod_name=Enhanced Explosives mod_name=Enhanced Explosives

View File

@ -5,6 +5,7 @@ import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.AbstractArrow;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -13,15 +14,15 @@ public class baseArrow extends AbstractArrow {
private int tick = 0; private int tick = 0;
public baseArrow(EntityType<? extends baseArrow> pEntityType, Level pLevel) { public baseArrow(EntityType<? extends baseArrow> pEntityType, Level pLevel) {
super(pEntityType, pLevel, ItemStack.EMPTY); super(pEntityType, pLevel);
} }
public baseArrow(Level pLevel, LivingEntity pShooter, EntityType<? extends baseArrow> pEntityType) { public baseArrow(Level pLevel, LivingEntity pShooter, EntityType<? extends baseArrow> pEntityType) {
super(pEntityType, pShooter, pLevel, ItemStack.EMPTY); super(pEntityType, pShooter, pLevel);
} }
public baseArrow(Level pLevel, EntityType<? extends baseArrow> pEntityType) { public baseArrow(Level pLevel, EntityType<? extends baseArrow> pEntityType) {
super(pEntityType, pLevel, ItemStack.EMPTY); super(pEntityType, pLevel);
} }
public void tick() { public void tick() {
@ -36,12 +37,7 @@ public class baseArrow extends AbstractArrow {
@NotNull @NotNull
protected ItemStack getPickupItem() { protected ItemStack getPickupItem() {
return ItemStack.EMPTY; return new ItemStack(Items.ARROW);
}
@Override
protected ItemStack getDefaultPickupItem() {
return ItemStack.EMPTY;
} }
protected Vec3 particlePos(double dist) { protected Vec3 particlePos(double dist) {

View File

@ -2,12 +2,15 @@ package com.jenny.enhancedexplosives.entities.arrows;
import com.jenny.enhancedexplosives.config.ConfigClient; import com.jenny.enhancedexplosives.config.ConfigClient;
import com.jenny.enhancedexplosives.entities.entities; import com.jenny.enhancedexplosives.entities.entities;
import com.jenny.enhancedexplosives.items.items;
import com.jenny.enhancedexplosives.particles.particles; import com.jenny.enhancedexplosives.particles.particles;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull;
public class carpetArrow extends baseArrow { public class carpetArrow extends baseArrow {
public final int childCount = 32; public final int childCount = 32;
@ -44,6 +47,11 @@ public class carpetArrow extends baseArrow {
} }
} }
@NotNull
protected ItemStack getPickupItem() {
return new ItemStack(items.CARPET_ARROW.get());
}
@Override @Override
public void spawnParticles(float partialTicks) { public void spawnParticles(float partialTicks) {
for (int i = 1; i <= ConfigClient.calcPCount(5); i++) { for (int i = 1; i <= ConfigClient.calcPCount(5); i++) {

View File

@ -3,11 +3,13 @@ package com.jenny.enhancedexplosives.entities.arrows;
import com.jenny.enhancedexplosives.config.ConfigClient; import com.jenny.enhancedexplosives.config.ConfigClient;
import com.jenny.enhancedexplosives.config.ConfigServer; import com.jenny.enhancedexplosives.config.ConfigServer;
import com.jenny.enhancedexplosives.entities.entities; import com.jenny.enhancedexplosives.entities.entities;
import com.jenny.enhancedexplosives.items.items;
import com.jenny.enhancedexplosives.particles.particles; import com.jenny.enhancedexplosives.particles.particles;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -46,6 +48,11 @@ public class carpetArrowPart extends baseArrow {
return super.hurt(pSource, pAmount) || pSource.is(DamageTypes.EXPLOSION); return super.hurt(pSource, pAmount) || pSource.is(DamageTypes.EXPLOSION);
} }
@NotNull
protected ItemStack getPickupItem() {
return new ItemStack(items.CONCUSSIVE_ARROW.get());
}
@Override @Override
public void spawnParticles(float partialTicks) { public void spawnParticles(float partialTicks) {
for (int i = 1; i <= ConfigClient.calcPCount(1); i++) { for (int i = 1; i <= ConfigClient.calcPCount(1); i++) {

View File

@ -2,8 +2,10 @@ package com.jenny.enhancedexplosives.entities.arrows;
import com.jenny.enhancedexplosives.config.ConfigServer; import com.jenny.enhancedexplosives.config.ConfigServer;
import com.jenny.enhancedexplosives.entities.entities; import com.jenny.enhancedexplosives.entities.entities;
import com.jenny.enhancedexplosives.items.items;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -31,4 +33,10 @@ public class claymoreArrow extends baseArrow{
discard(); discard();
} }
} }
@Override
@NotNull
protected ItemStack getPickupItem() {
return new ItemStack(items.CONCUSSIVE_ARROW.get(), 0);
}
} }

View File

@ -2,9 +2,11 @@ package com.jenny.enhancedexplosives.entities.arrows;
import com.jenny.enhancedexplosives.config.ConfigClient; import com.jenny.enhancedexplosives.config.ConfigClient;
import com.jenny.enhancedexplosives.entities.entities; import com.jenny.enhancedexplosives.entities.entities;
import com.jenny.enhancedexplosives.items.items;
import com.jenny.enhancedexplosives.particles.particles; import com.jenny.enhancedexplosives.particles.particles;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -33,6 +35,11 @@ public class concussiveArrow extends baseArrow{
this.discard(); this.discard();
} }
@NotNull
protected ItemStack getPickupItem() {
return new ItemStack(items.CONCUSSIVE_ARROW.get());
}
@Override @Override
public void spawnParticles(float partialTicks) { public void spawnParticles(float partialTicks) {
for (int i = 1; i <= ConfigClient.calcPCount(5); i++) { for (int i = 1; i <= ConfigClient.calcPCount(5); i++) {

View File

@ -2,9 +2,11 @@ package com.jenny.enhancedexplosives.entities.arrows;
import com.jenny.enhancedexplosives.config.ConfigClient; import com.jenny.enhancedexplosives.config.ConfigClient;
import com.jenny.enhancedexplosives.entities.entities; import com.jenny.enhancedexplosives.entities.entities;
import com.jenny.enhancedexplosives.items.items;
import com.jenny.enhancedexplosives.particles.particles; import com.jenny.enhancedexplosives.particles.particles;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -33,6 +35,11 @@ public class tntArrow extends baseArrow {
this.discard(); this.discard();
} }
@NotNull
protected ItemStack getPickupItem() {
return new ItemStack(items.TNT_ARROW.get());
}
@Override @Override
public void spawnParticles(float partialTicks) { public void spawnParticles(float partialTicks) {
for (int i = 1; i <= ConfigClient.calcPCount(5); i++) { for (int i = 1; i <= ConfigClient.calcPCount(5); i++) {

View File

@ -102,10 +102,9 @@ public abstract class basePrimedTNT extends Entity implements TraceableEntity {
return MovementEmission.NONE; return MovementEmission.NONE;
} }
@Override protected void defineSynchedData() {
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { this.entityData.define(DATA_FUSE_ID, 80);
builder.define(DATA_FUSE_ID, 80); this.entityData.define(DATA_POWER_ID, 4.0f);
builder.define(DATA_POWER_ID, 4.0f);
} }
protected void addAdditionalSaveData(CompoundTag pCompound) { protected void addAdditionalSaveData(CompoundTag pCompound) {

View File

@ -6,14 +6,11 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.*;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@ -86,9 +83,9 @@ public class blackHolePrimedTNT extends basePrimedTNT {
} }
@Override @Override
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { protected void defineSynchedData() {
builder.define(DATA_SPEED_ID, 4.0f); this.entityData.define(DATA_SPEED_ID, 4.0f);
super.defineSynchedData(builder); super.defineSynchedData();
} }
@Override @Override

View File

@ -14,7 +14,6 @@ import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -73,9 +72,9 @@ public class claymorePrimedTNT extends basePrimedTNT {
} }
@Override @Override
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { protected void defineSynchedData() {
builder.define(DATA_PCOUNT_ID, 16); this.entityData.define(DATA_PCOUNT_ID, 16);
super.defineSynchedData(builder); super.defineSynchedData();
} }
@Override @Override

View File

@ -16,7 +16,6 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
@ -117,9 +116,9 @@ public class homingPrimedTNT extends basePrimedTNT {
} }
@Override @Override
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { protected void defineSynchedData() {
builder.define(DATA_SPEED_ID, 4.0f); this.entityData.define(DATA_SPEED_ID, 4.0f);
super.defineSynchedData(builder); super.defineSynchedData();
} }
@Override @Override

View File

@ -13,7 +13,6 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@ -87,9 +86,9 @@ public class repulsivePrimedTNT extends basePrimedTNT {
} }
@Override @Override
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { protected void defineSynchedData() {
builder.define(DATA_SPEED_ID, 4.0f); this.entityData.define(DATA_SPEED_ID, 4.0f);
super.defineSynchedData(builder); super.defineSynchedData();
} }
@Override @Override

View File

@ -11,6 +11,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List; import java.util.List;
@ -22,12 +23,12 @@ public abstract class ArrowAbstract extends ArrowItem {
} }
@Override @Override
public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) { public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) {
String key = String.format("tooltip.%s.%s", MODID, this); String key = String.format("tooltip.%s.%s", MODID, this);
MutableComponent toolTip = Component.translatable(key); MutableComponent toolTip = Component.translatable(key);
if (!toolTip.getString().equals(key)) { if (!toolTip.getString().equals(key)) {
pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE)); pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE));
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag); super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced);
} }
} }

View File

@ -7,8 +7,10 @@ import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List; import java.util.List;
@ -20,12 +22,12 @@ public class BlockItemTooltip extends BlockItem {
} }
@Override @Override
public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) { public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) {
String key = String.format("tooltip.%s.%s", MODID, this); String key = String.format("tooltip.%s.%s", MODID, this);
MutableComponent toolTip = Component.translatable(key); MutableComponent toolTip = Component.translatable(key);
if (!toolTip.getString().equals(key)) { if (!toolTip.getString().equals(key)) {
pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE)); pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE));
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag); super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced);
} }
} }
} }

View File

@ -13,6 +13,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List; import java.util.List;
@ -42,12 +43,12 @@ public class Dynamite extends Item {
} }
@Override @Override
public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) { public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) {
String key = String.format("tooltip.%s.%s", MODID, this); String key = String.format("tooltip.%s.%s", MODID, this);
MutableComponent toolTip = Component.translatable(key); MutableComponent toolTip = Component.translatable(key);
if (!toolTip.getString().equals(key)) { if (!toolTip.getString().equals(key)) {
pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE)); pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE));
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag); super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced);
} }
} }
} }

View File

@ -1,18 +1,16 @@
package com.jenny.enhancedexplosives.items; package com.jenny.enhancedexplosives.items;
import com.jenny.enhancedexplosives.entities.arrows.baseArrow;
import com.jenny.enhancedexplosives.entities.entities; import com.jenny.enhancedexplosives.entities.entities;
import net.minecraft.core.Direction;
import net.minecraft.core.Position; import net.minecraft.core.Position;
import net.minecraft.core.dispenser.BlockSource; import net.minecraft.core.dispenser.AbstractProjectileDispenseBehavior;
import net.minecraft.core.dispenser.DefaultDispenseItemBehavior;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.projectile.AbstractArrow;
import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ProjectileItem;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.DispenserBlock; import net.minecraft.world.level.block.DispenserBlock;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
@ -35,38 +33,26 @@ public class items {
} }
public static void registerDispenser() { public static void registerDispenser() {
class ArrowDispenseBehaviour extends DefaultDispenseItemBehavior { class ArrowDispenseBehaviour extends AbstractProjectileDispenseBehavior {
private final ArrowAbstract.DispenseConfig dispenseConfig; private final EntityType<? extends baseArrow> arrowType;
private final EntityType<? extends Entity> arrowType;
public ArrowDispenseBehaviour(@NotNull ProjectileItem arrowItem, EntityType<? extends Entity> arrow) { public ArrowDispenseBehaviour(EntityType<? extends baseArrow> arrow) {
this.dispenseConfig = arrowItem.createDispenseConfig();
this.arrowType = arrow; this.arrowType = arrow;
} }
@Override @Override
public @NotNull ItemStack execute(@NotNull BlockSource pBlockSource, @NotNull ItemStack pItem) { protected @NotNull Projectile getProjectile(@NotNull Level pLevel, @NotNull Position pPosition, @NotNull ItemStack pStack) {
Level level = pBlockSource.level(); baseArrow arrow = arrowType.create(pLevel);
Direction dir = pBlockSource.state().getValue(DispenserBlock.FACING); assert arrow != null;
Position pos = this.dispenseConfig.positionFunction().getDispensePosition(pBlockSource, dir); arrow.setPos(pPosition.x(), pPosition.y(), pPosition.z());
arrow.pickup = AbstractArrow.Pickup.ALLOWED;
Entity arrowEntity = arrowType.create(level); return arrow;
assert arrowEntity != null;
arrowEntity.setPos(new Vec3(pos.x(), pos.y(), pos.z()));
arrowEntity.setDeltaMovement(dir.getStepX(), dir.getStepY(), dir.getStepZ());
level.addFreshEntity(arrowEntity);
pItem.shrink(1);
return pItem;
} }
} }
DispenserBlock.registerBehavior(TNT_ARROW.get(), new ArrowDispenseBehaviour( DispenserBlock.registerBehavior(TNT_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_TNT.get()));
(ArrowAbstract) TNT_ARROW.get(), entities.ARROW_TNT.get())); DispenserBlock.registerBehavior(CONCUSSIVE_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_CONCUSSIVE.get()));
DispenserBlock.registerBehavior(CONCUSSIVE_ARROW.get(), new ArrowDispenseBehaviour( DispenserBlock.registerBehavior(CARPET_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_CARPET.get()));
(ArrowAbstract) TNT_ARROW.get(), entities.ARROW_CONCUSSIVE.get())); DispenserBlock.registerBehavior(TUNNEL_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_TUNNEL.get()));
DispenserBlock.registerBehavior(CARPET_ARROW.get(), new ArrowDispenseBehaviour(
(ArrowAbstract) CARPET_ARROW.get(), entities.ARROW_CARPET.get()));
DispenserBlock.registerBehavior(TUNNEL_ARROW.get(), new ArrowDispenseBehaviour(
(ArrowAbstract) TUNNEL_ARROW.get(), entities.ARROW_TUNNEL.get()));
} }
} }