Skip to content

Commit

Permalink
feature, BREAKING, bug: Added Wired Fuze, fixed redstone conductivity…
Browse files Browse the repository at this point in the history
… on some cannon mount blocks

- Unlike other fuzes, is only activated on blocks
- Only works with big cannon shells in base Create Big Cannons
- BREAKING: Added abstract method to get projectiles from in-world blocks to create Wired Fuze functionality
  • Loading branch information
rbasamoyai committed Dec 28, 2024
1 parent a3c70bb commit 800eee7
Show file tree
Hide file tree
Showing 27 changed files with 188 additions and 5 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ and freedom tastes of reality..."* \
- Added Fixed Cannon Mount, a manually-aimed cannon mount variant that cannot be turned with kinetics
- Made with use in vehicle mods in mind
- Added more config to Proximity Fuze behavior
- Added Wired Fuze
- Unlike other fuzes, it is only activated on shells placed as blocks, powered with redstone, rather than in flight
- Only works with big cannon shells in base Create Big Cannons
- On detonation, the detonation effect of the fuzed shell is spawned in world
- Can be used for improvised explosives
### Changed
- Cannon Mount can now be turned around both axes without the Yaw Controller
- Cannon Mount now disassembles on rotation with wrench
Expand All @@ -28,10 +33,12 @@ and freedom tastes of reality..."* \
- Cannon Mounts can also be flipped by using the wrench
- Changed Cannon Mount item model to be more consistent with in-world appearance
- Reduced default Proximity Fuze arming delay to 5 gameticks
- [Addons, BREAKING] Added abstract method to get projectiles from in-world blocks
### Fixed
- Fixed rendering of pitch shaft for down-facing cannons
- Fixed display on some ponders
- Fixed autocannon tracer lighting and non-tracer rendering
- Fixed conductivity of certain cannon mount blocks

## [5.7.2] - 2024-12-18

Expand Down
8 changes: 7 additions & 1 deletion Translators-Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@ Additions: \
+ `"createbigcannons.ponder.cannon_mount/using_fixed_cannon_mounts.text_4": "Cannon assembly"` \
+ `"createbigcannons.ponder.cannon_mount/using_fixed_cannon_mounts.text_5": "Fire cannon"` \
+ `"createbigcannons.ponder.cannon_mount/using_fixed_cannon_mounts.text_6": "The Fixed Cannon Mount cannot be extended."` \
+ `"createbigcannons.ponder.cannon_mount/using_fixed_cannon_mounts.text_7": "Use a wrench to rotate the Fixed Cannon Mount."`
+ `"createbigcannons.ponder.cannon_mount/using_fixed_cannon_mounts.text_7": "Use a wrench to rotate the Fixed Cannon Mount."` \
+ `"item.createbigcannons.wired_fuze": "Wired Fuze"` \
+ `"item.createbigcannons.wired_fuze.tooltip": "WIRED FUZE"` \
+ `"item.createbigcannons.wired_fuze.tooltip.behaviour1": "The fuze detonates when powered by redstone."` \
+ `"item.createbigcannons.wired_fuze.tooltip.condition1": "Detonation"` \
+ `"item.createbigcannons.wired_fuze.tooltip.summary": "Detonates when the fuzed shell block is _powered by redstone._ Can be used for _improvised explosives._ _Does not explode in flight._"`


Content Changes: \
`"createbigcannons.ponder.cannon_mount/assembly_and_use.text_3"`: `"Power the Cannon Mount to aim the cannon up and down."``"Power the Cannon Mount to aim the cannon up and down..."` \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,11 @@
"item.createbigcannons.tracer_tip": "dı⟘ ɹǝɔɐɹ⟘",
"item.createbigcannons.tracer_tip.tooltip": "ԀI⟘ ᴚƎƆⱯᴚ⟘",
"item.createbigcannons.tracer_tip.tooltip.summary": "˙ǝןqısıʌ ɯǝɥʇ buıʞɐɯ 'spunoɹ uouuɐɔoʇnɐ ‾sǝʇɐuıɯnןןI‾",
"item.createbigcannons.wired_fuze": "ǝznℲ pǝɹıM",
"item.createbigcannons.wired_fuze.tooltip": "ƎZ∩Ⅎ ᗡƎᴚIM",
"item.createbigcannons.wired_fuze.tooltip.behaviour1": "˙ǝuoʇspǝɹ ʎq pǝɹǝʍod uǝɥʍ sǝʇɐuoʇǝp ǝznɟ ǝɥ⟘",
"item.createbigcannons.wired_fuze.tooltip.condition1": "uoıʇɐuoʇǝᗡ",
"item.createbigcannons.wired_fuze.tooltip.summary": "‾˙ʇɥbıןɟ uı ǝpoןdxǝ ʇou sǝoᗡ‾ ‾˙sǝʌısoןdxǝ pǝsıʌoɹdɯı‾ ɹoɟ pǝsn ǝq uɐƆ ‾˙ǝuoʇspǝɹ ʎq pǝɹǝʍod‾ sı ʞɔoןq ןןǝɥs pǝznɟ ǝɥʇ uǝɥʍ sǝʇɐuoʇǝᗡ",
"item.createbigcannons.worm": "ɯɹoM",
"item.createbigcannons.worm.tooltip": "WᴚOM",
"item.createbigcannons.worm.tooltip.action1": "˙ǝɯıʇ ɐ ʇɐ ʞɔoןq ǝuo ןןnd ʎןuo uɐƆ ˙uouuɐɔ ǝɥʇ ɟo puǝ ǝɥʇ spɹɐʍoʇ sʞɔoןq uoıʇıunɯ sןןnԀ",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,11 @@
"item.createbigcannons.tracer_tip": "Tracer Tip",
"item.createbigcannons.tracer_tip.tooltip": "TRACER TIP",
"item.createbigcannons.tracer_tip.tooltip.summary": "_Illuminates_ autocannon rounds, making them visible.",
"item.createbigcannons.wired_fuze": "Wired Fuze",
"item.createbigcannons.wired_fuze.tooltip": "WIRED FUZE",
"item.createbigcannons.wired_fuze.tooltip.behaviour1": "The fuze detonates when powered by redstone.",
"item.createbigcannons.wired_fuze.tooltip.condition1": "Detonation",
"item.createbigcannons.wired_fuze.tooltip.summary": "Detonates when the fuzed shell block is _powered by redstone._ Can be used for _improvised explosives._ _Does not explode in flight._",
"item.createbigcannons.worm": "Worm",
"item.createbigcannons.worm.tooltip": "WORM",
"item.createbigcannons.worm.tooltip.action1": "Pulls munition blocks towards the end of the cannon. Can only pull one block at a time.",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "createbigcannons:item/wired_fuze"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"createbigcannons:impact_fuze",
"createbigcannons:timed_fuze",
"createbigcannons:proximity_fuze",
"createbigcannons:delayed_impact_fuze"
"createbigcannons:delayed_impact_fuze",
"createbigcannons:wired_fuze"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,11 @@
"item.createbigcannons.tracer_tip": "dı⟘ ɹǝɔɐɹ⟘",
"item.createbigcannons.tracer_tip.tooltip": "ԀI⟘ ᴚƎƆⱯᴚ⟘",
"item.createbigcannons.tracer_tip.tooltip.summary": "˙ǝןqısıʌ ɯǝɥʇ buıʞɐɯ 'spunoɹ uouuɐɔoʇnɐ ‾sǝʇɐuıɯnןןI‾",
"item.createbigcannons.wired_fuze": "ǝznℲ pǝɹıM",
"item.createbigcannons.wired_fuze.tooltip": "ƎZ∩Ⅎ ᗡƎᴚIM",
"item.createbigcannons.wired_fuze.tooltip.behaviour1": "˙ǝuoʇspǝɹ ʎq pǝɹǝʍod uǝɥʍ sǝʇɐuoʇǝp ǝznɟ ǝɥ⟘",
"item.createbigcannons.wired_fuze.tooltip.condition1": "uoıʇɐuoʇǝᗡ",
"item.createbigcannons.wired_fuze.tooltip.summary": "‾˙ʇɥbıןɟ uı ǝpoןdxǝ ʇou sǝoᗡ‾ ‾˙sǝʌısoןdxǝ pǝsıʌoɹdɯı‾ ɹoɟ pǝsn ǝq uɐƆ ‾˙ǝuoʇspǝɹ ʎq pǝɹǝʍod‾ sı ʞɔoןq ןןǝɥs pǝznɟ ǝɥʇ uǝɥʍ sǝʇɐuoʇǝᗡ",
"item.createbigcannons.worm": "ɯɹoM",
"item.createbigcannons.worm.tooltip": "WᴚOM",
"item.createbigcannons.worm.tooltip.action1": "˙ǝɯıʇ ɐ ʇɐ ʞɔoןq ǝuo ןןnd ʎןuo uɐƆ ˙uouuɐɔ ǝɥʇ ɟo puǝ ǝɥʇ spɹɐʍoʇ sʞɔoןq uoıʇıunɯ sןןnԀ",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,11 @@
"item.createbigcannons.tracer_tip": "Tracer Tip",
"item.createbigcannons.tracer_tip.tooltip": "TRACER TIP",
"item.createbigcannons.tracer_tip.tooltip.summary": "_Illuminates_ autocannon rounds, making them visible.",
"item.createbigcannons.wired_fuze": "Wired Fuze",
"item.createbigcannons.wired_fuze.tooltip": "WIRED FUZE",
"item.createbigcannons.wired_fuze.tooltip.behaviour1": "The fuze detonates when powered by redstone.",
"item.createbigcannons.wired_fuze.tooltip.condition1": "Detonation",
"item.createbigcannons.wired_fuze.tooltip.summary": "Detonates when the fuzed shell block is _powered by redstone._ Can be used for _improvised explosives._ _Does not explode in flight._",
"item.createbigcannons.worm": "Worm",
"item.createbigcannons.worm.tooltip": "WORM",
"item.createbigcannons.worm.tooltip.action1": "Pulls munition blocks towards the end of the cannon. Can only pull one block at a time.",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "createbigcannons:item/wired_fuze"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"createbigcannons:impact_fuze",
"createbigcannons:timed_fuze",
"createbigcannons:proximity_fuze",
"createbigcannons:delayed_impact_fuze"
"createbigcannons:delayed_impact_fuze",
"createbigcannons:wired_fuze"
]
}
1 change: 1 addition & 0 deletions src/main/java/rbasamoyai/createbigcannons/ModGroup.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ public class ModGroup {
TimedFuzeItem.getCreativeTabItem(20),
ProximityFuzeItem.getCreativeTabItem(1),
DelayedImpactFuzeItem.getCreativeTabItem(20),
CBCItems.WIRED_FUZE.asStack(),
CBCItems.TRACER_TIP.asStack(),

CBCItems.CANNON_WELDER.asStack(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,11 @@ public static void prepare() {
REGISTRATE.addLang("item", CBCItems.PROXIMITY_FUZE.getId(), "tooltip.shell_info", "Detonation Distance: _%s blocks_");
REGISTRATE.addLang("item", CBCItems.PROXIMITY_FUZE.getId(), "tooltip.shell_info.item", "Detonation Distance: %s blocks");

tooltip(CBCItems.WIRED_FUZE)
.header("WIRED FUZE")
.summary("Detonates when the fuzed shell block is _powered by redstone._ Can be used for _improvised explosives._ _Does not explode in flight._")
.conditionAndBehavior("Detonation", "The fuze detonates when powered by redstone.");

tooltip(CBCItems.CANNON_CRAFTING_WAND)
.header("CANNON CRAFTING WAND")
.summary("Use on various cannon crafting processes such as _casting, boring, assembly,_ and _heating_ to _instantly finish_ the process.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -861,6 +861,7 @@ private static NonNullSupplier<? extends Block> steelSlidingBreech() {
public static final BlockEntry<YawControllerBlock> YAW_CONTROLLER = REGISTRATE
.block("yaw_controller", YawControllerBlock::new)
.transform(cbcMachine())
.properties(p -> p.isRedstoneConductor(CBCBlocks::never))
.transform(axeOrPickaxe())
.transform(CBCBuilderTransformers.yawController())
.onRegister(AllDisplayBehaviours.assignDataBehaviour(new CannonMountDisplaySource()))
Expand All @@ -869,6 +870,7 @@ private static NonNullSupplier<? extends Block> steelSlidingBreech() {
public static final BlockEntry<CannonMountExtensionBlock> CANNON_MOUNT_EXTENSION = REGISTRATE
.block("cannon_mount_extension", CannonMountExtensionBlock::new)
.transform(cbcMachine())
.properties(p -> p.isRedstoneConductor(CBCBlocks::never))
.transform(axeOrPickaxe())
.transform(CBCBuilderTransformers.cannonMountExtension())
.onRegister(AllDisplayBehaviours.assignDataBehaviour(new CannonMountDisplaySource()))
Expand All @@ -877,6 +879,7 @@ private static NonNullSupplier<? extends Block> steelSlidingBreech() {
public static final BlockEntry<FixedCannonMountBlock> FIXED_CANNON_MOUNT = REGISTRATE
.block("fixed_cannon_mount", FixedCannonMountBlock::new)
.transform(cbcMachine())
.properties(p -> p.isRedstoneConductor(CBCBlocks::never))
.transform(axeOrPickaxe())
.transform(CBCBuilderTransformers.fixedCannonMount())
.onRegister(AllDisplayBehaviours.assignDataBehaviour(new CannonMountDisplaySource()))
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/rbasamoyai/createbigcannons/index/CBCItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import rbasamoyai.createbigcannons.munitions.fuzes.ImpactFuzeItem;
import rbasamoyai.createbigcannons.munitions.fuzes.ProximityFuzeItem;
import rbasamoyai.createbigcannons.munitions.fuzes.TimedFuzeItem;
import rbasamoyai.createbigcannons.munitions.fuzes.WiredFuzeItem;
import rbasamoyai.createbigcannons.utils.CBCRegistryUtils;
import rbasamoyai.createbigcannons.utils.CBCUtils;

Expand All @@ -49,6 +50,9 @@ public class CBCItems {
public static final ItemEntry<DelayedImpactFuzeItem> DELAYED_IMPACT_FUZE = REGISTRATE.item("delayed_impact_fuze", DelayedImpactFuzeItem::new)
.tag(CBCTags.CBCItemTags.FUZES)
.register();
public static final ItemEntry<WiredFuzeItem> WIRED_FUZE = REGISTRATE.item("wired_fuze", WiredFuzeItem::new)
.tag(CBCTags.CBCItemTags.FUZES)
.register();

public static final ItemEntry<Item>
CAST_IRON_SLIDING_BREECHBLOCK = REGISTRATE.item("cast_iron_sliding_breechblock", Item::new)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,8 @@ public Vec3 getOrientation() {
return this.orientation == null ? this.getDeltaMovement() : this.orientation;
}

public void setOrientation(Vec3 orientation) { this.orientation = orientation; }

@Override
public void lerpTo(double x, double y, double z, float yRot, float xRot, int lerpSteps, boolean teleport) {
if (this.tickCount < 2)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ public ItemStack getItem(int slot) {
return slot == 0 ? this.tracer : ItemStack.EMPTY;
}

public ItemStack getTracer() { return this.tracer; }

@Override
public ItemStack removeItem(int slot, int amount) {
if (this.isEmpty() || slot != 0 || amount < 1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ public ItemStack getItem(int slot) {
return slot == 1 ? this.fuze : super.getItem(slot);
}

public ItemStack getFuze() { return this.fuze; }

public boolean hasFuze() {
return !this.fuze.isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,27 @@
import java.util.List;

import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.utility.Iterate;

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import rbasamoyai.createbigcannons.index.CBCItems;
import rbasamoyai.createbigcannons.munitions.fuzes.FuzeItem;

Expand Down Expand Up @@ -48,6 +54,14 @@ public AbstractBigCannonProjectile getProjectile(Level level, ItemStack itemStac
return projectile;
}

@Override
public AbstractBigCannonProjectile getProjectile(Level level, BlockPos pos, BlockState state) {
FuzedBigCannonProjectile projectile = this.getAssociatedEntityType().create(level);
projectile.setTracer(getTracerFromBlock(level, pos, state));
projectile.setFuze(getFuzeFromBlock(level, pos, state));
return projectile;
}

protected static ItemStack getFuzeFromBlocks(List<StructureBlockInfo> blocks) {
if (blocks.isEmpty()) return ItemStack.EMPTY;
StructureBlockInfo info = blocks.get(0);
Expand All @@ -56,6 +70,10 @@ protected static ItemStack getFuzeFromBlocks(List<StructureBlockInfo> blocks) {
return load instanceof FuzedBlockEntity fuzed ? fuzed.getItem(1) : ItemStack.EMPTY;
}

public static ItemStack getFuzeFromBlock(Level level, BlockPos pos, BlockState state) {
return level.getBlockEntity(pos) instanceof FuzedBlockEntity projectile ? projectile.getFuze() : ItemStack.EMPTY;
}

@Override
public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) {
if (hand == InteractionHand.OFF_HAND)
Expand Down Expand Up @@ -113,4 +131,42 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player

public abstract boolean isBaseFuze();

@Override
public void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, BlockPos neighborPos, boolean isMoving) {
if (!level.isClientSide) {
if (!level.getBlockTicks().willTickThisTick(pos, this)) {
level.scheduleTick(pos, this, 0);
}
}
}

@Override
public void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource rand) {
FuzedBlockEntity fuzedBlock = this.getBlockEntity(level, pos);
if (fuzedBlock == null)
return;
ItemStack itemStack = fuzedBlock.getFuze();
if (itemStack.getItem() instanceof FuzeItem fuze) {
for (Direction dir : Iterate.directions) {
int signal = level.getSignal(pos.relative(dir), dir);
if (fuze.onRedstoneSignal(itemStack, level, pos, state, signal, dir)) {
this.detonateProjectileOnTheSpot(level, pos, state, dir);
break;
}
}
}
}

public void detonateProjectileOnTheSpot(Level level, BlockPos pos, BlockState state, Direction dir) {
AbstractBigCannonProjectile projectile = this.getProjectile(level, pos, state);
level.setBlock(pos, Blocks.AIR.defaultBlockState(), 3);
if (!(projectile instanceof FuzedBigCannonProjectile fuzedProjectile))
return;

Vec3 orientation = new Vec3(dir.step());
projectile.setOrientation(orientation);
projectile.setPos(Vec3.atCenterOf(pos));
fuzedProjectile.detonate(projectile.position());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@ public AbstractBigCannonProjectile getProjectile(Level level, ItemStack itemStac
return projectile;
}

@Override
public AbstractBigCannonProjectile getProjectile(Level level, BlockPos pos, BlockState state) {
AbstractBigCannonProjectile projectile = this.getAssociatedEntityType().create(level);
projectile.setTracer(getTracerFromBlock(level, pos, state));
return projectile;
}

@Override
public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
if (hand == InteractionHand.OFF_HAND)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ public BlockState mirror(BlockState state, Mirror mirror) {

public abstract AbstractBigCannonProjectile getProjectile(Level level, List<StructureBlockInfo> projectileBlocks);
public abstract AbstractBigCannonProjectile getProjectile(Level level, ItemStack itemStack);
public abstract AbstractBigCannonProjectile getProjectile(Level level, BlockPos pos, BlockState state);

@Override
public boolean canBeLoaded(BlockState state, Direction.Axis facing) {
Expand Down Expand Up @@ -148,4 +149,8 @@ public static ItemStack getTracerFromBlocks(List<StructureBlockInfo> blocks) {
return load instanceof BigCannonProjectileBlockEntity projectile ? projectile.getItem(0) : ItemStack.EMPTY;
}

public static ItemStack getTracerFromBlock(Level level, BlockPos pos, BlockState state) {
return level.getBlockEntity(pos) instanceof BigCannonProjectileBlockEntity projectile ? projectile.getTracer() : ItemStack.EMPTY;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ public AbstractBigCannonProjectile getProjectile(Level level, ItemStack itemStac
return projectile;
}

@Override
public AbstractBigCannonProjectile getProjectile(Level level, BlockPos pos, BlockState state) {
FluidShellProjectile projectile = this.getAssociatedEntityType().create(level);
projectile.setTracer(getTracerFromBlock(level, pos, state));
projectile.setFuze(getFuzeFromBlock(level, pos, state));
if (level.getBlockEntity(pos) instanceof AbstractFluidShellBlockEntity fluidShell)
fluidShell.setFluidShellStack(projectile);
return projectile;
}

@Override
public EntityType<? extends FluidShellProjectile> getAssociatedEntityType() {
return CBCEntityTypes.FLUID_SHELL.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import java.util.List;

import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo;
import rbasamoyai.createbigcannons.index.CBCEntityTypes;
import rbasamoyai.createbigcannons.munitions.big_cannon.AbstractBigCannonProjectile;
Expand All @@ -26,7 +28,12 @@ public AbstractBigCannonProjectile getProjectile(Level level, ItemStack itemStac
return CBCEntityTypes.BAG_OF_GRAPESHOT.create(level);
}

@Override
@Override
public AbstractBigCannonProjectile getProjectile(Level level, BlockPos pos, BlockState state) {
return CBCEntityTypes.BAG_OF_GRAPESHOT.create(level);
}

@Override
public EntityType<? extends GrapeshotBagProjectile> getAssociatedEntityType() {
return CBCEntityTypes.BAG_OF_GRAPESHOT.get();
}
Expand Down
Loading

0 comments on commit 800eee7

Please sign in to comment.