Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75b31d1b1e
|
No files matched your search
+8
-4
@@ -14,7 +14,7 @@ base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
toolchain.languageVersion = JavaLanguageVersion.of(21)
|
toolchain.languageVersion = JavaLanguageVersion.of(17)
|
||||||
}
|
}
|
||||||
|
|
||||||
minecraft {
|
minecraft {
|
||||||
@@ -31,7 +31,7 @@ minecraft {
|
|||||||
//
|
//
|
||||||
// Use non-default mappings at your own risk. They may not always work.
|
// Use non-default mappings at your own risk. They may not always work.
|
||||||
// Simply re-run your setup task after changing the mappings to update your workspace.
|
// Simply re-run your setup task after changing the mappings to update your workspace.
|
||||||
mappings channel: 'parchment', version: '2024.06.16-1.20.6'
|
mappings channel: 'parchment', version: '2024.04.14-1.20.4'
|
||||||
|
|
||||||
// When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game.
|
// When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game.
|
||||||
// In most cases, it is not necessary to enable.
|
// In most cases, it is not necessary to enable.
|
||||||
@@ -75,6 +75,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 {
|
||||||
@@ -140,8 +146,6 @@ dependencies {
|
|||||||
// For more info:
|
// For more info:
|
||||||
// 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.
|
||||||
|
|||||||
+6
-6
@@ -1,17 +1,17 @@
|
|||||||
org.gradle.jvmargs=-Xmx3G
|
org.gradle.jvmargs=-Xmx3G
|
||||||
org.gradle.daemon=false
|
org.gradle.daemon=false
|
||||||
# The Minecraft version must agree with the Forge version to get a valid artifact
|
# The Minecraft version must agree with the Forge version to get a valid artifact
|
||||||
minecraft_version=1.20.6
|
minecraft_version=1.20.3
|
||||||
# The Minecraft version range can use any release version of Minecraft as bounds.
|
# The Minecraft version range can use any release version of Minecraft as bounds.
|
||||||
# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
|
# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
|
||||||
# as they do not follow standard versioning conventions.
|
# as they do not follow standard versioning conventions.
|
||||||
minecraft_version_range=[1.20.6]
|
minecraft_version_range=[1.20.3, 1.20.4]
|
||||||
# The Forge version must agree with the Minecraft version to get a valid artifact
|
# The Forge version must agree with the Minecraft version to get a valid artifact
|
||||||
forge_version=50.1.0
|
forge_version=49.0.2
|
||||||
# The Forge version range can use any version of Forge as bounds or match the loader version range
|
# The Forge version range can use any version of Forge as bounds or match the loader version range
|
||||||
forge_version_range=[50,)
|
forge_version_range=[49,)
|
||||||
# The loader version range can only use the major version of Forge/FML as bounds
|
# The loader version range can only use the major version of Forge/FML as bounds
|
||||||
loader_version_range=[50,)
|
loader_version_range=[49,)
|
||||||
# The mapping channel to use for mappings.
|
# The mapping channel to use for mappings.
|
||||||
# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"].
|
# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"].
|
||||||
# Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin.
|
# Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin.
|
||||||
@@ -29,7 +29,7 @@ loader_version_range=[50,)
|
|||||||
mapping_channel=official
|
mapping_channel=official
|
||||||
# The mapping version to query from the mapping channel.
|
# The mapping version to query from the mapping channel.
|
||||||
# This must match the format required by the mapping channel.
|
# This must match the format required by the mapping channel.
|
||||||
mapping_version=1.20.6
|
mapping_version=1.20.3
|
||||||
# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63}
|
# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63}
|
||||||
# Must match the String constant located in the main mod class annotated with @Mod.
|
# Must match the String constant located in the main mod class annotated with @Mod.
|
||||||
mod_id=advancedarrows
|
mod_id=advancedarrows
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.jenny.advancedarrows.entities;
|
package com.jenny.advancedarrows.entities;
|
||||||
|
|
||||||
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
@@ -38,20 +39,23 @@ public class baseArrow extends AbstractArrow {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
protected ItemStack getPickupItem() {
|
protected ItemStack getPickupItem() {
|
||||||
|
System.out.println(itemPickup.toString());
|
||||||
return itemPickup.getDefaultInstance();
|
return itemPickup.getDefaultInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected @NotNull ItemStack getDefaultPickupItem() {
|
|
||||||
if (itemPickup == null) {
|
|
||||||
return ItemStack.EMPTY;
|
|
||||||
} else {
|
|
||||||
return new ItemStack(itemPickup);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleEntityEvent(byte pId) {
|
public void handleEntityEvent(byte pId) {
|
||||||
if (pId != 0) {
|
if (pId == 0) {
|
||||||
|
int i = -1;
|
||||||
|
if (i != -1) {
|
||||||
|
double d0 = (double)(i >> 16 & 255) / 255.0D;
|
||||||
|
double d1 = (double)(i >> 8 & 255) / 255.0D;
|
||||||
|
double d2 = (double)(i >> 0 & 255) / 255.0D;
|
||||||
|
|
||||||
|
for(int j = 0; j < 20; ++j) {
|
||||||
|
this.level().addParticle(ParticleTypes.ENTITY_EFFECT, this.getRandomX(0.5D), this.getRandomY(), this.getRandomZ(0.5D), d0, d1, d2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
super.handleEntityEvent(pId);
|
super.handleEntityEvent(pId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,7 @@ public class incendiaryArrow extends baseArrow{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doPostHurtEffects(@NotNull LivingEntity pTarget) {
|
protected void doPostHurtEffects(@NotNull LivingEntity pTarget) {
|
||||||
pTarget.setSharedFlagOnFire(true);
|
pTarget.setSecondsOnFire(5);
|
||||||
pTarget.setRemainingFireTicks(100);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -10,6 +10,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;
|
||||||
|
|
||||||
@@ -21,12 +22,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,17 +2,15 @@ package com.jenny.advancedarrows.items;
|
|||||||
|
|
||||||
import com.jenny.advancedarrows.entities.baseArrow;
|
import com.jenny.advancedarrows.entities.baseArrow;
|
||||||
import com.jenny.advancedarrows.entities.entities;
|
import com.jenny.advancedarrows.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.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
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.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;
|
||||||
@@ -39,46 +37,30 @@ 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 baseArrow> arrowType;
|
||||||
|
|
||||||
public ArrowDispenseBehaviour(@NotNull ArrowAbstract arrowItem, EntityType<? extends baseArrow> 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;
|
||||||
AbstractArrow 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(ARROW_INCENDIARY.get(), new ArrowDispenseBehaviour(
|
DispenserBlock.registerBehavior(ARROW_INCENDIARY.get(), new ArrowDispenseBehaviour(entities.ARROW_INCENDIARY.get()));
|
||||||
(ArrowAbstract) items.ARROW_INCENDIARY.get(), entities.ARROW_INCENDIARY.get()));
|
DispenserBlock.registerBehavior(ARROW_RICOCHET.get(), new ArrowDispenseBehaviour(entities.ARROW_RICOCHET.get()));
|
||||||
DispenserBlock.registerBehavior(ARROW_RICOCHET.get(), new ArrowDispenseBehaviour(
|
DispenserBlock.registerBehavior(ARROW_KINETIC.get(), new ArrowDispenseBehaviour(entities.ARROW_KINETIC.get()));
|
||||||
(ArrowAbstract) items.ARROW_RICOCHET.get(), entities.ARROW_RICOCHET.get()));
|
DispenserBlock.registerBehavior(ARROW_SHARPENED.get(), new ArrowDispenseBehaviour(entities.ARROW_SHARPENED.get()));
|
||||||
DispenserBlock.registerBehavior(ARROW_KINETIC.get(), new ArrowDispenseBehaviour(
|
DispenserBlock.registerBehavior(ARROW_SWITCH.get(), new ArrowDispenseBehaviour(entities.ARROW_SWITCH.get()));
|
||||||
(ArrowAbstract) items.ARROW_KINETIC.get(), entities.ARROW_KINETIC.get()));
|
DispenserBlock.registerBehavior(ARROW_BREACHING.get(), new ArrowDispenseBehaviour(entities.ARROW_BREACHING.get()));
|
||||||
DispenserBlock.registerBehavior(ARROW_SHARPENED.get(), new ArrowDispenseBehaviour(
|
DispenserBlock.registerBehavior(ARROW_HOMING.get(), new ArrowDispenseBehaviour(entities.ARROW_HOMING.get()));
|
||||||
(ArrowAbstract) items.ARROW_SHARPENED.get(), entities.ARROW_SHARPENED.get()));
|
DispenserBlock.registerBehavior(ARROW_ENDER.get(), new ArrowDispenseBehaviour(entities.ARROW_ENDER.get()));
|
||||||
DispenserBlock.registerBehavior(ARROW_SWITCH.get(), new ArrowDispenseBehaviour(
|
|
||||||
(ArrowAbstract) items.ARROW_SWITCH.get(), entities.ARROW_SWITCH.get()));
|
|
||||||
DispenserBlock.registerBehavior(ARROW_BREACHING.get(), new ArrowDispenseBehaviour(
|
|
||||||
(ArrowAbstract) items.ARROW_BREACHING.get(), entities.ARROW_BREACHING.get()));
|
|
||||||
DispenserBlock.registerBehavior(ARROW_HOMING.get(), new ArrowDispenseBehaviour(
|
|
||||||
(ArrowAbstract) items.ARROW_HOMING.get(), entities.ARROW_HOMING.get()));
|
|
||||||
DispenserBlock.registerBehavior(ARROW_ENDER.get(), new ArrowDispenseBehaviour(
|
|
||||||
(ArrowAbstract) items.ARROW_ENDER.get(), entities.ARROW_ENDER.get()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user