Compare commits
4
Commits
1b2908660a
..
1.20.6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
86e640ab32
|
||
|
|
958364907d
|
||
|
|
45937ee33d
|
||
|
|
dc81f5e8da
|
No files matched your search
@@ -1,8 +1,13 @@
|
|||||||
# For info on the mod go to either
|
# For info on the mod go to either
|
||||||
* [the wiki](https://git.smthng.de/Jenny/Enhanced-Explosives/wiki)
|
|
||||||
* [modrinth](https://modrinth.com/mod/enhanced-explosives)
|
* [modrinth](https://modrinth.com/mod/enhanced-explosives)
|
||||||
* [curseforge](https://www.curseforge.com/minecraft/mc-mods/enhanced-explosives)
|
* [curseforge](https://www.curseforge.com/minecraft/mc-mods/enhanced-explosives)
|
||||||
|
* in-game wiki (guidebook & patchouli)
|
||||||
|
|
||||||
# How to run the mod in an IDE
|
# How to run / build the mod in an IDE
|
||||||
* If you use Intellij, you can import the project from git
|
* git clone the project
|
||||||
* You will have to run "runData" once, else textures will be missing
|
* run the _runData_ gradle task, it generates the item & block models
|
||||||
|
* the data generation only works in versions =>1.20.1, as I didn't backport it. If you want to build the
|
||||||
|
mod for versions before that, you can run the _runData_ gradle task in the 1.20.1 branch and switch back to the
|
||||||
|
branch for your desired version
|
||||||
|
* run _runClient_ to start a minecraft session, or run _jar_ to generate a .jar file of the mod (located at _.
|
||||||
|
/build/reobfJar/output.jar_)
|
||||||
+13
-9
@@ -14,7 +14,7 @@ base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
toolchain.languageVersion = JavaLanguageVersion.of(17)
|
toolchain.languageVersion = JavaLanguageVersion.of(21)
|
||||||
}
|
}
|
||||||
|
|
||||||
minecraft {
|
minecraft {
|
||||||
@@ -77,12 +77,6 @@ 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 {
|
||||||
@@ -114,6 +108,10 @@ minecraft {
|
|||||||
|
|
||||||
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
|
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
|
||||||
args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
|
args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
|
||||||
|
|
||||||
|
// fixes patchouli mixin error
|
||||||
|
property 'mixin.env.remapRefMap', 'true'
|
||||||
|
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -132,8 +130,8 @@ repositories {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
|
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
|
||||||
implementation fg.deobf("curse.maven:guidebook-253874:4593765")
|
|
||||||
implementation fg.deobf("curse.maven:patchouli-306770:4633797")
|
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.
|
||||||
@@ -173,3 +171,9 @@ 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
|
||||||
|
}
|
||||||
+6
-7
@@ -1,14 +1,13 @@
|
|||||||
# CreateCoredumpOnCrash only works on jdk9+
|
# CreateCoredumpOnCrash only works on jdk9+
|
||||||
org.gradle.jvmargs=-Xmx3G -XX:-CreateCoredumpOnCrash
|
org.gradle.jvmargs=-Xmx3G -XX:-CreateCoredumpOnCrash
|
||||||
org.gradle.daemon=false
|
org.gradle.daemon=false
|
||||||
|
minecraft_version=1.20.6
|
||||||
minecraft_version=1.20.1
|
minecraft_version_range=[1.20.6]
|
||||||
minecraft_version_range=[1.20.1,1.20.2]
|
forge_version=50.1.0
|
||||||
forge_version=47.3.22
|
forge_version_range=[50,)
|
||||||
forge_version_range=[47,)
|
loader_version_range=[50,)
|
||||||
loader_version_range=[47,)
|
|
||||||
mapping_channel=parchment
|
mapping_channel=parchment
|
||||||
mapping_version=2023.09.03-1.20.1
|
mapping_version=2024.06.16-1.20.6
|
||||||
|
|
||||||
mod_id=enhancedexplosives
|
mod_id=enhancedexplosives
|
||||||
mod_name=Enhanced Explosives
|
mod_name=Enhanced Explosives
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package com.jenny.enhancedexplosives.blocks;
|
||||||
|
|
||||||
|
import com.jenny.enhancedexplosives.entities.tnt.bedrockPrimedTNT;
|
||||||
|
import com.jenny.enhancedexplosives.entities.tnt.selectivePrimedTNT;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundSource;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.level.Explosion;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.block.TntBlock;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.gameevent.GameEvent;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public class bedrockTNTBlock extends TntBlock {
|
||||||
|
public final float pRadius;
|
||||||
|
public final int fuseTime;
|
||||||
|
|
||||||
|
public bedrockTNTBlock(Properties p_57422_, float pRadius, int fuseTime) {
|
||||||
|
super(p_57422_);
|
||||||
|
this.pRadius = pRadius;
|
||||||
|
this.fuseTime = fuseTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCaughtFire(@NotNull BlockState state, @NotNull Level world, @NotNull BlockPos pos, @Nullable Direction face, @Nullable LivingEntity igniter) {
|
||||||
|
explode(world, pos, igniter, this.pRadius, this.fuseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static void explode(Level p_57434_, BlockPos p_57435_, float pRadius, int fuseTime) {
|
||||||
|
explode(p_57434_, p_57435_, (LivingEntity)null, pRadius, fuseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
private static void explode(Level p_57437_, BlockPos p_57438_, @Nullable LivingEntity p_57439_, float pRadius, int fuseTime) {
|
||||||
|
if (!p_57437_.isClientSide) {
|
||||||
|
bedrockPrimedTNT primedtnt = new bedrockPrimedTNT(p_57437_, (double)p_57438_.getX() + (double)0.5F, (double)p_57438_.getY(), (double)p_57438_.getZ() + (double)0.5F, p_57439_, pRadius, fuseTime);
|
||||||
|
p_57437_.addFreshEntity(primedtnt);
|
||||||
|
p_57437_.playSound((Player)null, primedtnt.getX(), primedtnt.getY(), primedtnt.getZ(), SoundEvents.TNT_PRIMED, SoundSource.BLOCKS, 1.0F, 1.0F);
|
||||||
|
p_57437_.gameEvent(p_57439_, GameEvent.PRIME_FUSE, p_57438_);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void wasExploded(Level level, @NotNull BlockPos blockPos, @NotNull Explosion pExplosion) {
|
||||||
|
if (!level.isClientSide) {
|
||||||
|
int ft = (short) (level.random.nextInt(fuseTime / 4) + fuseTime / 8);
|
||||||
|
bedrockPrimedTNT primedtnt = new bedrockPrimedTNT(level, (double) blockPos.getX() + (double) 0.5F, (double) blockPos.getY(), (double) blockPos.getZ() + (double) 0.5F, pExplosion.getIndirectSourceEntity(), pRadius, ft);
|
||||||
|
level.addFreshEntity(primedtnt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -61,6 +61,12 @@ public class blocks {
|
|||||||
public static final RegistryObject<Block> TNT_REPULSIVE = BLOCKS.register("tnt_repulsive", () -> new repulsiveTNTBlock(DEFAULT_PROPS, 4.0f, 80, 1));
|
public static final RegistryObject<Block> TNT_REPULSIVE = BLOCKS.register("tnt_repulsive", () -> new repulsiveTNTBlock(DEFAULT_PROPS, 4.0f, 80, 1));
|
||||||
public static final RegistryObject<Item> TNT_REPULSIVE_ITEM = ITEMS.register("tnt_repulsive", () -> new BlockItemTooltip(TNT_REPULSIVE.get(), new Item.Properties()));
|
public static final RegistryObject<Item> TNT_REPULSIVE_ITEM = ITEMS.register("tnt_repulsive", () -> new BlockItemTooltip(TNT_REPULSIVE.get(), new Item.Properties()));
|
||||||
|
|
||||||
|
public static final RegistryObject<Block> TNT_BEDROCK = BLOCKS.register("tnt_bedrock", () -> new bedrockTNTBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED), 4.0f, 80));
|
||||||
|
public static final RegistryObject<Item> TNT_BEDROCK_ITEM = ITEMS.register("tnt_bedrock", () -> new BlockItemTooltip(TNT_BEDROCK.get(), new Item.Properties()));
|
||||||
|
|
||||||
|
public static final RegistryObject<Block> TNT_ENTITY = BLOCKS.register("tnt_entity", () -> new entityTNTBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED), 4.0f, 80));
|
||||||
|
public static final RegistryObject<Item> TNT_ENTITY_ITEM = ITEMS.register("tnt_entity", () -> new BlockItemTooltip(TNT_ENTITY.get(), new Item.Properties()));
|
||||||
|
|
||||||
|
|
||||||
public static void register(IEventBus bus) {
|
public static void register(IEventBus bus) {
|
||||||
BLOCKS.register(bus);
|
BLOCKS.register(bus);
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package com.jenny.enhancedexplosives.blocks;
|
||||||
|
|
||||||
|
import com.jenny.enhancedexplosives.entities.tnt.EntityPrimedTNT;
|
||||||
|
import com.jenny.enhancedexplosives.entities.tnt.bedrockPrimedTNT;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundSource;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.level.Explosion;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.block.TntBlock;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.gameevent.GameEvent;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public class entityTNTBlock extends TntBlock {
|
||||||
|
public final float pRadius;
|
||||||
|
public final int fuseTime;
|
||||||
|
|
||||||
|
public entityTNTBlock(Properties p_57422_, float pRadius, int fuseTime) {
|
||||||
|
super(p_57422_);
|
||||||
|
this.pRadius = pRadius;
|
||||||
|
this.fuseTime = fuseTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCaughtFire(@NotNull BlockState state, @NotNull Level world, @NotNull BlockPos pos, @Nullable Direction face, @Nullable LivingEntity igniter) {
|
||||||
|
explode(world, pos, igniter, this.pRadius, this.fuseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static void explode(Level p_57434_, BlockPos p_57435_, float pRadius, int fuseTime) {
|
||||||
|
explode(p_57434_, p_57435_, (LivingEntity)null, pRadius, fuseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
private static void explode(Level p_57437_, BlockPos p_57438_, @Nullable LivingEntity p_57439_, float pRadius, int fuseTime) {
|
||||||
|
if (!p_57437_.isClientSide) {
|
||||||
|
EntityPrimedTNT primedtnt = new EntityPrimedTNT(p_57437_, (double)p_57438_.getX() + (double)0.5F, (double)p_57438_.getY(), (double)p_57438_.getZ() + (double)0.5F, p_57439_, pRadius, fuseTime);
|
||||||
|
p_57437_.addFreshEntity(primedtnt);
|
||||||
|
p_57437_.playSound((Player)null, primedtnt.getX(), primedtnt.getY(), primedtnt.getZ(), SoundEvents.TNT_PRIMED, SoundSource.BLOCKS, 1.0F, 1.0F);
|
||||||
|
p_57437_.gameEvent(p_57439_, GameEvent.PRIME_FUSE, p_57438_);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void wasExploded(Level level, @NotNull BlockPos blockPos, @NotNull Explosion pExplosion) {
|
||||||
|
if (!level.isClientSide) {
|
||||||
|
int ft = (short) (level.random.nextInt(fuseTime / 4) + fuseTime / 8);
|
||||||
|
EntityPrimedTNT primedtnt = new EntityPrimedTNT(level, (double) blockPos.getX() + (double) 0.5F, (double) blockPos.getY(), (double) blockPos.getZ() + (double) 0.5F, pExplosion.getIndirectSourceEntity(), pRadius, ft);
|
||||||
|
level.addFreshEntity(primedtnt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -31,6 +31,8 @@ public class ModBlockStateProvider extends BlockStateProvider {
|
|||||||
sideTopBottom(blocks.TNT_128);
|
sideTopBottom(blocks.TNT_128);
|
||||||
sideTopBottom(blocks.TNT_ENDER);
|
sideTopBottom(blocks.TNT_ENDER);
|
||||||
sideTopBottom(blocks.TNT_CLAYMORE);
|
sideTopBottom(blocks.TNT_CLAYMORE);
|
||||||
|
sideTopBottom(blocks.TNT_BEDROCK);
|
||||||
|
sideTopBottom(blocks.TNT_ENTITY);
|
||||||
SideTop(blocks.TNT_BLACK_HOLE);
|
SideTop(blocks.TNT_BLACK_HOLE);
|
||||||
SideTop(blocks.TNT_REPULSIVE);
|
SideTop(blocks.TNT_REPULSIVE);
|
||||||
SideOnlyTNT(blocks.TNT_CLUSTER_2);
|
SideOnlyTNT(blocks.TNT_CLUSTER_2);
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ 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;
|
||||||
@@ -14,15 +13,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);
|
super(pEntityType, pLevel, ItemStack.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public baseArrow(Level pLevel, LivingEntity pShooter, EntityType<? extends baseArrow> pEntityType) {
|
public baseArrow(Level pLevel, LivingEntity pShooter, EntityType<? extends baseArrow> pEntityType) {
|
||||||
super(pEntityType, pShooter, pLevel);
|
super(pEntityType, pShooter, pLevel, ItemStack.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public baseArrow(Level pLevel, EntityType<? extends baseArrow> pEntityType) {
|
public baseArrow(Level pLevel, EntityType<? extends baseArrow> pEntityType) {
|
||||||
super(pEntityType, pLevel);
|
super(pEntityType, pLevel, ItemStack.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void tick() {
|
public void tick() {
|
||||||
@@ -37,7 +36,12 @@ public class baseArrow extends AbstractArrow {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
protected ItemStack getPickupItem() {
|
protected ItemStack getPickupItem() {
|
||||||
return new ItemStack(Items.ARROW);
|
return ItemStack.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemStack getDefaultPickupItem() {
|
||||||
|
return ItemStack.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Vec3 particlePos(double dist) {
|
protected Vec3 particlePos(double dist) {
|
||||||
|
|||||||
@@ -2,15 +2,12 @@ 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;
|
||||||
@@ -47,11 +44,6 @@ 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++) {
|
||||||
|
|||||||
@@ -3,13 +3,11 @@ 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;
|
||||||
@@ -48,11 +46,6 @@ 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++) {
|
||||||
|
|||||||
@@ -2,10 +2,8 @@ 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;
|
||||||
|
|
||||||
@@ -33,10 +31,4 @@ public class claymoreArrow extends baseArrow{
|
|||||||
discard();
|
discard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@NotNull
|
|
||||||
protected ItemStack getPickupItem() {
|
|
||||||
return new ItemStack(items.CONCUSSIVE_ARROW.get(), 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,9 @@ 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;
|
||||||
@@ -35,11 +33,6 @@ 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++) {
|
||||||
|
|||||||
@@ -2,11 +2,9 @@ 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;
|
||||||
@@ -35,11 +33,6 @@ 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++) {
|
||||||
|
|||||||
@@ -50,6 +50,15 @@ public class entities {
|
|||||||
ENTITY_TYPES.register("tnt_repulsive", () -> EntityType.Builder.<repulsivePrimedTNT>of(repulsivePrimedTNT::new, MobCategory.MISC)
|
ENTITY_TYPES.register("tnt_repulsive", () -> EntityType.Builder.<repulsivePrimedTNT>of(repulsivePrimedTNT::new, MobCategory.MISC)
|
||||||
.fireImmune().sized(0.98F, 0.98F).clientTrackingRange(10).updateInterval(10).build("tnt_repulsive"));
|
.fireImmune().sized(0.98F, 0.98F).clientTrackingRange(10).updateInterval(10).build("tnt_repulsive"));
|
||||||
|
|
||||||
|
public static final RegistryObject<EntityType<bedrockPrimedTNT>> TNT_BEDROCK =
|
||||||
|
ENTITY_TYPES.register("tnt_bedrock", () -> EntityType.Builder.<bedrockPrimedTNT>of(bedrockPrimedTNT::new, MobCategory.MISC)
|
||||||
|
.sized(0.98F, 0.7F).fireImmune().clientTrackingRange(8).build("tnt_bedrock"));
|
||||||
|
|
||||||
|
public static final RegistryObject<EntityType<EntityPrimedTNT>> TNT_ENTITY =
|
||||||
|
ENTITY_TYPES.register("tnt_entity", () -> EntityType.Builder.<EntityPrimedTNT>of(EntityPrimedTNT::new, MobCategory.MISC)
|
||||||
|
.sized(0.98F, 0.7F).fireImmune().clientTrackingRange(8).build("tnt_entity"));
|
||||||
|
|
||||||
|
|
||||||
public static final RegistryObject<EntityType<tntArrow>> ARROW_TNT =
|
public static final RegistryObject<EntityType<tntArrow>> ARROW_TNT =
|
||||||
ENTITY_TYPES.register("arrow_tnt", () -> EntityType.Builder.<tntArrow>of(tntArrow::new, MobCategory.MISC)
|
ENTITY_TYPES.register("arrow_tnt", () -> EntityType.Builder.<tntArrow>of(tntArrow::new, MobCategory.MISC)
|
||||||
.sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_tnt"));
|
.sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_tnt"));
|
||||||
@@ -89,6 +98,8 @@ public class entities {
|
|||||||
EntityRenderers.register(TNT_CLAYMORE.get(), BaseTNTRenderer::new);
|
EntityRenderers.register(TNT_CLAYMORE.get(), BaseTNTRenderer::new);
|
||||||
EntityRenderers.register(TNT_ENDER.get(), BaseTNTRenderer::new);
|
EntityRenderers.register(TNT_ENDER.get(), BaseTNTRenderer::new);
|
||||||
EntityRenderers.register(TNT_REPULSIVE.get(), BaseTNTRenderer::new);
|
EntityRenderers.register(TNT_REPULSIVE.get(), BaseTNTRenderer::new);
|
||||||
|
EntityRenderers.register(TNT_BEDROCK.get(), BaseTNTRenderer::new);
|
||||||
|
EntityRenderers.register(TNT_ENTITY.get(), BaseTNTRenderer::new);
|
||||||
|
|
||||||
EntityRenderers.register(TNT_SELECTIVE.get(), SelectiveTNTRenderer::new);
|
EntityRenderers.register(TNT_SELECTIVE.get(), SelectiveTNTRenderer::new);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package com.jenny.enhancedexplosives.entities.tnt;
|
||||||
|
|
||||||
|
import com.jenny.enhancedexplosives.blocks.blocks;
|
||||||
|
import com.jenny.enhancedexplosives.entities.entities;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
import net.minecraft.world.level.Explosion;
|
||||||
|
import net.minecraft.world.level.ExplosionDamageCalculator;
|
||||||
|
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.state.BlockState;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class EntityPrimedTNT extends basePrimedTNT {
|
||||||
|
static class noEntityExplosionCalculator extends ExplosionDamageCalculator {
|
||||||
|
public boolean shouldBlockExplode(@NotNull Explosion pExplosion, @NotNull BlockGetter pReader, @NotNull BlockPos pPos, @NotNull BlockState pState, float pPower) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityPrimedTNT(Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse) {
|
||||||
|
super(entities.TNT_ENTITY.get(), pLevel, pOwner, new Vec3(pX, pY, pZ), fuse, power);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityPrimedTNT(EntityType<EntityPrimedTNT> entityType, Level level) {
|
||||||
|
super(entityType, level, null);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void explode() {
|
||||||
|
noEntityExplosionCalculator dmgCalc = new noEntityExplosionCalculator();
|
||||||
|
this.level().explode(this, null, dmgCalc, position(), getPower(), false, Level.ExplosionInteraction.TNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockPos getBlockBelow() {
|
||||||
|
return new BlockPos((int) Math.floor(getX()), (int) Math.floor(getY()) - 1, (int) Math.floor(getZ()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBlock() {
|
||||||
|
return level().getBlockState(getBlockBelow()).getBlock().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Block renderBlock() {
|
||||||
|
return blocks.TNT_ENTITY.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -102,9 +102,10 @@ public abstract class basePrimedTNT extends Entity implements TraceableEntity {
|
|||||||
return MovementEmission.NONE;
|
return MovementEmission.NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void defineSynchedData() {
|
@Override
|
||||||
this.entityData.define(DATA_FUSE_ID, 80);
|
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) {
|
||||||
this.entityData.define(DATA_POWER_ID, 4.0f);
|
builder.define(DATA_FUSE_ID, 80);
|
||||||
|
builder.define(DATA_POWER_ID, 4.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addAdditionalSaveData(CompoundTag pCompound) {
|
protected void addAdditionalSaveData(CompoundTag pCompound) {
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package com.jenny.enhancedexplosives.entities.tnt;
|
||||||
|
|
||||||
|
import com.jenny.enhancedexplosives.blocks.blocks;
|
||||||
|
import com.jenny.enhancedexplosives.entities.entities;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
import net.minecraft.world.level.Explosion;
|
||||||
|
import net.minecraft.world.level.ExplosionDamageCalculator;
|
||||||
|
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.state.BlockState;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class bedrockPrimedTNT extends basePrimedTNT {
|
||||||
|
static class noExplosionCalculator extends ExplosionDamageCalculator {
|
||||||
|
public boolean shouldBlockExplode(@NotNull Explosion pExplosion, @NotNull BlockGetter pReader, @NotNull BlockPos pPos, @NotNull BlockState pState, float pPower) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bedrockPrimedTNT(Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse) {
|
||||||
|
super(entities.TNT_BEDROCK.get(), pLevel, pOwner, new Vec3(pX, pY, pZ), fuse, power);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bedrockPrimedTNT(EntityType<bedrockPrimedTNT> entityType, Level level) {
|
||||||
|
super(entityType, level, null);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void explode() {
|
||||||
|
noExplosionCalculator dmgCalc = new noExplosionCalculator();
|
||||||
|
this.level().explode(this, null, dmgCalc, position(), getPower(), false, Level.ExplosionInteraction.TNT);
|
||||||
|
explodeBelow();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockPos getBlockBelow() {
|
||||||
|
return new BlockPos((int) Math.floor(getX()), (int) Math.floor(getY()) - 1, (int) Math.floor(getZ()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBlock() {
|
||||||
|
return level().getBlockState(getBlockBelow()).getBlock().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void explodeBelow()
|
||||||
|
{
|
||||||
|
if (Objects.equals(getBlock(), Blocks.BEDROCK.toString())) {
|
||||||
|
level().destroyBlock(getBlockBelow(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Block renderBlock() {
|
||||||
|
return blocks.TNT_BEDROCK.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,11 +6,14 @@ 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.*;
|
import net.minecraft.world.entity.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;
|
||||||
@@ -83,9 +86,9 @@ public class blackHolePrimedTNT extends basePrimedTNT {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) {
|
||||||
this.entityData.define(DATA_SPEED_ID, 4.0f);
|
builder.define(DATA_SPEED_ID, 4.0f);
|
||||||
super.defineSynchedData();
|
super.defineSynchedData(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ 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;
|
||||||
|
|
||||||
@@ -72,9 +73,9 @@ public class claymorePrimedTNT extends basePrimedTNT {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) {
|
||||||
this.entityData.define(DATA_PCOUNT_ID, 16);
|
builder.define(DATA_PCOUNT_ID, 16);
|
||||||
super.defineSynchedData();
|
super.defineSynchedData(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ 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;
|
||||||
@@ -116,9 +117,9 @@ public class homingPrimedTNT extends basePrimedTNT {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) {
|
||||||
this.entityData.define(DATA_SPEED_ID, 4.0f);
|
builder.define(DATA_SPEED_ID, 4.0f);
|
||||||
super.defineSynchedData();
|
super.defineSynchedData(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ 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 +87,9 @@ public class repulsivePrimedTNT extends basePrimedTNT {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) {
|
||||||
this.entityData.define(DATA_SPEED_ID, 4.0f);
|
builder.define(DATA_SPEED_ID, 4.0f);
|
||||||
super.defineSynchedData();
|
super.defineSynchedData(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ 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;
|
||||||
|
|
||||||
@@ -23,12 +22,12 @@ public abstract class ArrowAbstract extends ArrowItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) {
|
public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) {
|
||||||
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, pLevel, pTooltipComponents, pIsAdvanced);
|
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,8 @@ 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;
|
||||||
|
|
||||||
@@ -22,12 +20,12 @@ public class BlockItemTooltip extends BlockItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) {
|
public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) {
|
||||||
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, pLevel, pTooltipComponents, pIsAdvanced);
|
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,6 @@ 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;
|
||||||
|
|
||||||
@@ -43,12 +42,12 @@ public class Dynamite extends Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) {
|
public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) {
|
||||||
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, pLevel, pTooltipComponents, pIsAdvanced);
|
super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
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.AbstractProjectileDispenseBehavior;
|
import net.minecraft.core.dispenser.BlockSource;
|
||||||
|
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;
|
||||||
@@ -33,26 +35,38 @@ public class items {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void registerDispenser() {
|
public static void registerDispenser() {
|
||||||
class ArrowDispenseBehaviour extends AbstractProjectileDispenseBehavior {
|
class ArrowDispenseBehaviour extends DefaultDispenseItemBehavior {
|
||||||
private final EntityType<? extends baseArrow> arrowType;
|
private final ArrowAbstract.DispenseConfig dispenseConfig;
|
||||||
|
private final EntityType<? extends Entity> arrowType;
|
||||||
|
|
||||||
public ArrowDispenseBehaviour(EntityType<? extends baseArrow> arrow) {
|
public ArrowDispenseBehaviour(@NotNull ProjectileItem arrowItem, EntityType<? extends Entity> arrow) {
|
||||||
|
this.dispenseConfig = arrowItem.createDispenseConfig();
|
||||||
this.arrowType = arrow;
|
this.arrowType = arrow;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected @NotNull Projectile getProjectile(@NotNull Level pLevel, @NotNull Position pPosition, @NotNull ItemStack pStack) {
|
public @NotNull ItemStack execute(@NotNull BlockSource pBlockSource, @NotNull ItemStack pItem) {
|
||||||
baseArrow arrow = arrowType.create(pLevel);
|
Level level = pBlockSource.level();
|
||||||
assert arrow != null;
|
Direction dir = pBlockSource.state().getValue(DispenserBlock.FACING);
|
||||||
arrow.setPos(pPosition.x(), pPosition.y(), pPosition.z());
|
Position pos = this.dispenseConfig.positionFunction().getDispensePosition(pBlockSource, dir);
|
||||||
arrow.pickup = AbstractArrow.Pickup.ALLOWED;
|
|
||||||
return arrow;
|
Entity arrowEntity = arrowType.create(level);
|
||||||
|
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(entities.ARROW_TNT.get()));
|
DispenserBlock.registerBehavior(TNT_ARROW.get(), new ArrowDispenseBehaviour(
|
||||||
DispenserBlock.registerBehavior(CONCUSSIVE_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_CONCUSSIVE.get()));
|
(ArrowAbstract) TNT_ARROW.get(), entities.ARROW_TNT.get()));
|
||||||
DispenserBlock.registerBehavior(CARPET_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_CARPET.get()));
|
DispenserBlock.registerBehavior(CONCUSSIVE_ARROW.get(), new ArrowDispenseBehaviour(
|
||||||
DispenserBlock.registerBehavior(TUNNEL_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_TUNNEL.get()));
|
(ArrowAbstract) TNT_ARROW.get(), entities.ARROW_CONCUSSIVE.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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,13 +2,13 @@ modLoader = "javafml"
|
|||||||
logoFile = "logo.png"
|
logoFile = "logo.png"
|
||||||
loaderVersion = "${loader_version_range}"
|
loaderVersion = "${loader_version_range}"
|
||||||
license = "${mod_license}"
|
license = "${mod_license}"
|
||||||
issueTrackerURL = "https://git.smthng.de/Jenny/Enhanced-Explosives/issues" #optional
|
|
||||||
[[mods]]
|
[[mods]]
|
||||||
modId = "${mod_id}"
|
modId = "${mod_id}"
|
||||||
version = "${mod_version}"
|
version = "${mod_version}"
|
||||||
displayName = "${mod_name}"
|
displayName = "${mod_name}"
|
||||||
authors = "${mod_authors}"
|
authors = "${mod_authors}"
|
||||||
displayTest = "MATCH_VERSION"
|
displayTest = "MATCH_VERSION"
|
||||||
|
displayURL = "https://git.smthng.de/Jenny/Enhanced-Explosives"
|
||||||
description = '''${mod_description}'''
|
description = '''${mod_description}'''
|
||||||
[[dependencies."${mod_id}"]] #optional
|
[[dependencies."${mod_id}"]] #optional
|
||||||
modId = "forge"
|
modId = "forge"
|
||||||
@@ -21,16 +21,4 @@ modId = "minecraft"
|
|||||||
mandatory = true
|
mandatory = true
|
||||||
versionRange = "${minecraft_version_range}"
|
versionRange = "${minecraft_version_range}"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
|
||||||
[[dependencies."${mod_id}"]]
|
|
||||||
modId = "gbook"
|
|
||||||
mandatory = false
|
|
||||||
versionRange = "[1.7.3,)"
|
|
||||||
ordering = "BEFORE"
|
|
||||||
side = "BOTH"
|
|
||||||
[[dependencies."${mod_id}"]]
|
|
||||||
modId = "patchouli"
|
|
||||||
mandatory = false
|
|
||||||
versionRange = "[1.0.6,)"
|
|
||||||
ordering = "BEFORE"
|
|
||||||
side = "BOTH"
|
side = "BOTH"
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
<book title="Enhanced Explosives">
|
|
||||||
<include ref="gbook:xml/standard.xml"/>
|
|
||||||
<chapter id="ch_landing">
|
|
||||||
<section id="se_landing">
|
|
||||||
<page_title>
|
|
||||||
<title>Content</title>
|
|
||||||
</page_title>
|
|
||||||
<title>TNTs</title>
|
|
||||||
<link ref=":se_compressed_tnt">Compressed TNT</link>
|
|
||||||
<link ref=":se_cluster_tnt">Cluster TNT</link>
|
|
||||||
<link ref=":se_homing_tnt">Homing TNT</link>
|
|
||||||
<link ref=":se_black_hole_tnt">Black Hole TNT</link>
|
|
||||||
<link ref=":se_claymore_tnt">Claymore TNT</link>
|
|
||||||
<link ref=":se_selective_tnt">Selective</link>
|
|
||||||
<link ref=":se_ender_tnt">Ender TNT</link>
|
|
||||||
<link ref=":se_repulsive_tnt">Repulsive TNT</link>
|
|
||||||
<title>Arrows</title>
|
|
||||||
<link ref=":ch_tnt_arrow">TNT Arrow</link>
|
|
||||||
<link ref=":se_concussive_arrow">Concussive Arrow</link>
|
|
||||||
<link ref=":se_carpet_arrow">Carpet Bombing Arrow</link>
|
|
||||||
<link ref=":se_tunnel_arrow">Tunnel Arrow</link>
|
|
||||||
<title>Other</title>
|
|
||||||
<link ref=":se_dynamite">Dynamite</link>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_compressed_tnt">
|
|
||||||
<section id="se_compressed_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Compressed TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>These TNTs are stronger than vanilla TNT. They are crafted from 4 TNTs of the previous stage and offer
|
|
||||||
double the explosion strength.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_cluster_tnt">
|
|
||||||
<section id="se_cluster_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Cluster TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>These TNTs spawn multiple smaller TNTs when primed. Each spawned TNT is as strong as vanilla TNT.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_homing_tnt">
|
|
||||||
<section id="se_homing_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Homing TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This TNT targets the closest mob and moves towards it.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_black_hole_tnt">
|
|
||||||
<section id="se_black_hole_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Black Hole TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This TNT attracts close entities towards itself before exploding.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_claymore_tnt">
|
|
||||||
<section id="se_claymore_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Claymore TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This TNT shoots many arrows in a circle around the TNT, instead of exploding.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_selective_tnt">
|
|
||||||
<section id="se_selective_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Selective TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This TNT will only destroy the type of block it is sitting upon when exploding. It will still honour the
|
|
||||||
blocks blast resistance, e.g. it won't destroy bedrock.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_ender_tnt">
|
|
||||||
<section id="se_ender_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Ender TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This TNT will teleport randomly teleport when primed.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_repulsive_tnt">
|
|
||||||
<section id="se_repulsive_tnt">
|
|
||||||
<page_title>
|
|
||||||
<title>Repulsive TNT</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This TNT will push entities away when primed.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_tnt_arrow">
|
|
||||||
<section id="se_tnt_arrow">
|
|
||||||
<page_title>
|
|
||||||
<title>TNT Arrow</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This arrow explodes on impact with half the strength of TNT.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_concussive_arrow">
|
|
||||||
<section id="se_concussive_arrow">
|
|
||||||
<page_title>
|
|
||||||
<title>TNT Arrow</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This arrow explodes on impact without damaging blocks.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_carpet_arrow">
|
|
||||||
<section id="se_carpet_arrow">
|
|
||||||
<page_title>
|
|
||||||
<title>Carpet Bombing Arrow</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This arrow splits into many Concussive Arrows as soon as it starts falling.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_tunnel_arrow">
|
|
||||||
<section id="se_tunnel_arrow">
|
|
||||||
<page_title>
|
|
||||||
<title>Tunnel Arrow</title>
|
|
||||||
</page_title>
|
|
||||||
<p>This arrow spawns multiple explosions in a line equivalent to its direction on hit.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
<chapter id="ch_dynamite">
|
|
||||||
<section id="se_dynamite">
|
|
||||||
<page_title>
|
|
||||||
<title>Dynamite</title>
|
|
||||||
</page_title>
|
|
||||||
<p>Dynamite can be thrown like a potion and explodes with the strength of vanilla TNT.</p>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
</book>
|
|
||||||
@@ -13,6 +13,8 @@
|
|||||||
"block.enhancedexplosives.tnt_selective": "Selective TNT",
|
"block.enhancedexplosives.tnt_selective": "Selective TNT",
|
||||||
"block.enhancedexplosives.tnt_ender": "Ender TNT",
|
"block.enhancedexplosives.tnt_ender": "Ender TNT",
|
||||||
"block.enhancedexplosives.tnt_repulsive": "Repulsive TNT",
|
"block.enhancedexplosives.tnt_repulsive": "Repulsive TNT",
|
||||||
|
"block.enhancedexplosives.tnt_bedrock": "Bedrock TNT",
|
||||||
|
"block.enhancedexplosives.tnt_entity": "Entity TNT",
|
||||||
|
|
||||||
"tooltip.enhancedexplosives.tnt_cluster_2": "splits into 2 small TNTs",
|
"tooltip.enhancedexplosives.tnt_cluster_2": "splits into 2 small TNTs",
|
||||||
"tooltip.enhancedexplosives.tnt_cluster_4": "splits into 4 small TNTs",
|
"tooltip.enhancedexplosives.tnt_cluster_4": "splits into 4 small TNTs",
|
||||||
|
|||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Arrows",
|
|
||||||
"description": "These are all new arrows",
|
|
||||||
"icon": "minecraft:arrow"
|
|
||||||
}
|
|
||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Others",
|
|
||||||
"description": "Some other new stuff",
|
|
||||||
"icon": "minecraft:bedrock"
|
|
||||||
}
|
|
||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "TNTs",
|
|
||||||
"description": "These are all new TNTs",
|
|
||||||
"icon": "minecraft:tnt"
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Carpet Bombing Arrow",
|
|
||||||
"icon": "enhancedexplosives:arrow_carpet",
|
|
||||||
"category": "enhancedexplosives:arrows",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This arrow splits into many explosive arrows as soon as it starts falling. Whether the arrows are concussive or TNT Arrows depends on the config.",
|
|
||||||
"recipe": "enhancedexplosives:arrow_carpet"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Concussive Arrow",
|
|
||||||
"icon": "enhancedexplosives:arrow_concussive",
|
|
||||||
"category": "enhancedexplosives:arrows",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This arrow explodes like TNT on impact, but without damaging blocks.",
|
|
||||||
"recipe": "enhancedexplosives:arrow_concussive"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "TNT Arrow",
|
|
||||||
"icon": "enhancedexplosives:arrow_tnt",
|
|
||||||
"category": "enhancedexplosives:arrows",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This arrow explodes like TNT on impact.",
|
|
||||||
"recipe": "enhancedexplosives:arrow_tnt"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Tunnel Arrow",
|
|
||||||
"icon": "enhancedexplosives:arrow_tunnel",
|
|
||||||
"category": "enhancedexplosives:arrows",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This arrow summons multiple explosions in front of it, along it's direction on impact, forming a tunnel in front.",
|
|
||||||
"recipe": "enhancedexplosives:arrow_tunnel"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Dynamite",
|
|
||||||
"icon": "enhancedexplosives:dynamite",
|
|
||||||
"category": "enhancedexplosives:other",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "Can be thrown like a splash potion, but bounces on the ground and explodes like a tnt.",
|
|
||||||
"recipe": "enhancedexplosives:dynamite"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Quintuple Compressed TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_128",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT behaves like vanilla TNT, but with 32x the explosion strength.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_128"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Double Compressed TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_16",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT behaves like vanilla TNT, but with 4x the explosion strength.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_16"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Triple Compressed TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_32",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT behaves like vanilla TNT, but with 8x the explosion strength.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_32"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Quadruple Compressed TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_64",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT behaves like vanilla TNT, but with 16x the explosion strength.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_64"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Compressed TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_8",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT behaves like vanilla TNT, but with 2x the explosion strength.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_8"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Black Hole TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_black_hole",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT pulls entities towards itself.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_black_hole"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Claymore TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_claymore",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT shoots many arrows in a circle around the TNT, instead of exploding.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_claymore"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "2× TNT Cluster",
|
|
||||||
"icon": "enhancedexplosives:tnt_cluster_2",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT splits into 2 smaller TNTs when primed",
|
|
||||||
"recipe": "enhancedexplosives:tnt_cluster_2"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "4× TNT Cluster",
|
|
||||||
"icon": "enhancedexplosives:tnt_cluster_4",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT splits into 4 smaller TNTs when primed",
|
|
||||||
"recipe": "enhancedexplosives:tnt_cluster_4"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "8× TNT Cluster",
|
|
||||||
"icon": "enhancedexplosives:tnt_cluster_8",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT splits into 8 smaller TNTs when primed",
|
|
||||||
"recipe": "enhancedexplosives:tnt_cluster_8"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Ender TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_ender",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT teleports like an enderman when primed.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_ender"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Homing TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_homing",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT follows the closest mob.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_homing"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Repulsive TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_repulsive",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT pushes close entities away.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_repulsive"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Selective TNT",
|
|
||||||
"icon": "enhancedexplosives:tnt_selective",
|
|
||||||
"category": "enhancedexplosives:tnts",
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"type": "patchouli:crafting",
|
|
||||||
"text": "This TNT will only destroy the type of block it is sitting upon when exploding. It will still honour the blocks blast resistance, e.g. it won't destroy bedrock.",
|
|
||||||
"recipe": "enhancedexplosives:tnt_selective"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 459 B |
Binary file not shown.
|
After Width: | Height: | Size: 563 B |
Binary file not shown.
|
After Width: | Height: | Size: 459 B |
Binary file not shown.
|
After Width: | Height: | Size: 151 B |
Binary file not shown.
|
After Width: | Height: | Size: 1016 B |
Binary file not shown.
|
After Width: | Height: | Size: 515 B |
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "enhancedexplosives:tnt_bedrock"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "enhancedexplosives:tnt_entity"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
-7
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Yurrr!",
|
|
||||||
"landing_text": "Skrrr Skrr",
|
|
||||||
"version": 1,
|
|
||||||
"creative_tab": "enhancedexplosives:enhancedexplosives",
|
|
||||||
"use_resource_pack": true
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "redstone",
|
||||||
|
"pattern": [
|
||||||
|
"AA ",
|
||||||
|
"AA ",
|
||||||
|
" "
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"A": {
|
||||||
|
"item": "enhancedexplosives:tnt_128"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "enhancedexplosives:tnt_bedrock"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "redstone",
|
||||||
|
"ingredients":[
|
||||||
|
{
|
||||||
|
"item": "minecraft:tnt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:water_bucket"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "enhancedexplosives:tnt_entity"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,6 +10,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"item": "enhancedexplosives:tnt_black_hole"
|
"item": "enhancedexplosives:tnt_repulsive"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "combat",
|
||||||
|
"ingredients":[
|
||||||
|
{
|
||||||
|
"item": "minecraft:tnt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:obsidian"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "enhancedexplosives:tnt_selective"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user