Added Monolith Spawner and Dimesnional Eraser.
This commit is contained in:
parent
c24272576e
commit
3e0f8a84df
15 changed files with 115 additions and 2 deletions
|
@ -0,0 +1,40 @@
|
|||
package org.dimdev.dimdoors.item;
|
||||
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.text.TranslatableText;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.TypedActionResult;
|
||||
import net.minecraft.util.hit.EntityHitResult;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import org.dimdev.dimdoors.ModConfig;
|
||||
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
|
||||
import org.dimdev.dimdoors.sound.ModSoundEvents;
|
||||
|
||||
public class DimensionalEraser extends Item {
|
||||
public DimensionalEraser(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypedActionResult<ItemStack> use(World world, PlayerEntity player, Hand hand) {
|
||||
ItemStack stack = player.getStackInHand(hand);
|
||||
|
||||
HitResult hit = RaycastHelper.raycast(player, RaycastHelper.REACH_DISTANCE, 1.0F, a -> !(a instanceof PlayerEntity));
|
||||
|
||||
if (hit != null && hit.getType() == HitResult.Type.ENTITY) {
|
||||
((EntityHitResult) hit).getEntity().remove();
|
||||
player.playSound(ModSoundEvents.BLOOP, 1.0f, 1.0f);
|
||||
return new TypedActionResult<>(ActionResult.SUCCESS, stack);
|
||||
}
|
||||
|
||||
return new TypedActionResult<>(ActionResult.FAIL, stack);
|
||||
}
|
||||
}
|
|
@ -5,6 +5,7 @@ import java.util.Collections;
|
|||
import java.util.HashSet;
|
||||
|
||||
import org.dimdev.dimdoors.block.ModBlocks;
|
||||
import org.dimdev.dimdoors.entity.ModEntityTypes;
|
||||
import org.dimdev.dimdoors.fluid.ModFluids;
|
||||
import org.dimdev.dimdoors.rift.registry.LinkProperties;
|
||||
import org.dimdev.dimdoors.rift.targets.EscapeTarget;
|
||||
|
@ -18,6 +19,7 @@ import org.dimdev.dimdoors.util.registry.RegistryObject;
|
|||
import org.dimdev.dimdoors.world.ModDimensions;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.EquipmentSlot;
|
||||
import net.minecraft.item.ArmorItem;
|
||||
import net.minecraft.item.BlockItem;
|
||||
|
@ -26,6 +28,7 @@ import net.minecraft.item.Item;
|
|||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.item.SpawnEggItem;
|
||||
import net.minecraft.sound.SoundEvent;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
|
@ -145,6 +148,11 @@ public final class ModItems {
|
|||
@RegistryObject("rift_stabilizer")
|
||||
public static final Item RIFT_STABILIZER = create(new RiftStabilizerItem(new Item.Settings().maxCount(1).maxDamage(6).group(DIMENSIONAL_DOORS)));
|
||||
|
||||
@RegistryObject("dimensional_eraser")
|
||||
public static final Item DIMENSIONAL_ERASER = create(new DimensionalEraser(new Item.Settings().maxDamage(100).group(DIMENSIONAL_DOORS)));
|
||||
|
||||
@RegistryObject("monolith_spawner")
|
||||
public static final Item MONOLITH_SPAWNER = new SpawnEggItem(ModEntityTypes.MONOLITH, 0xffffff, 0xffffff, new Item.Settings().group(ItemGroup.MISC));
|
||||
|
||||
@RegistryObject("world_thread_helmet")
|
||||
public static final Item WORLD_THREAD_HELMET = create(new ArmorItem(ModArmorMaterials.WORLD_THREAD, EquipmentSlot.HEAD, new Item.Settings().group(DIMENSIONAL_DOORS)));
|
||||
|
@ -266,7 +274,7 @@ public final class ModItems {
|
|||
public static final Item CREEPY_RECORD = create(new MusicDiscItem(10, ModSoundEvents.CREEPY, new Item.Settings().group(DIMENSIONAL_DOORS)));
|
||||
|
||||
@RegistryObject("white_void_record")
|
||||
public static final Item WHITE_VOID_RECORD = create(new MusicDiscItem(10, ModSoundEvents.CREEPY, new Item.Settings().group(DIMENSIONAL_DOORS)));
|
||||
public static final Item WHITE_VOID_RECORD = create(new MusicDiscItem(10, ModSoundEvents.WHITE_VOID, new Item.Settings().group(DIMENSIONAL_DOORS)));
|
||||
|
||||
@RegistryObject("marking_plate")
|
||||
public static final Item MARKING_PLATE = create(ModBlocks.MARKING_PLATE);
|
||||
|
|
|
@ -1,13 +1,21 @@
|
|||
package org.dimdev.dimdoors.item;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import org.dimdev.dimdoors.block.entity.DetachedRiftBlockEntity;
|
||||
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.projectile.ProjectileUtil;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.hit.EntityHitResult;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.Box;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.BlockView;
|
||||
import net.minecraft.world.RaycastContext;
|
||||
|
||||
public final class RaycastHelper {
|
||||
public static final int REACH_DISTANCE = 5;
|
||||
|
@ -23,4 +31,12 @@ public final class RaycastHelper {
|
|||
public static boolean hitsLivingEntity(HitResult hit) {
|
||||
return hit != null && hit.getType() == HitResult.Type.ENTITY && ((EntityHitResult) hit).getEntity() instanceof LivingEntity;
|
||||
}
|
||||
|
||||
public static HitResult raycast(Entity entity, double maxDistance, float tickDelta, Predicate<Entity> predicate) {
|
||||
Vec3d vec3d = entity.getCameraPosVec(tickDelta);
|
||||
Vec3d vec3d2 = entity.getRotationVec(tickDelta);
|
||||
Vec3d vec3d3 = vec3d.add(vec3d2.x * maxDistance, vec3d2.y * maxDistance, vec3d2.z * maxDistance);
|
||||
Box box = entity.getBoundingBox().stretch(vec3d2.multiply(maxDistance)).expand(1.0D, 1.0D, 1.0D);
|
||||
return ProjectileUtil.raycast(entity, vec3d, vec3d3, box, predicate, maxDistance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ public final class ModSoundEvents {
|
|||
public static final SoundEvent RIFT_START = register("dimdoors:rift_start");
|
||||
public static final SoundEvent TEARING = register("dimdoors:tearing");
|
||||
public static final SoundEvent WHITE_VOID = register("dimdoors:white_void");
|
||||
public static final SoundEvent BLOOP = register("dimdoors:bloop");
|
||||
|
||||
private static SoundEvent register(String id) {
|
||||
return Registry.register(Registry.SOUND_EVENT, id, new SoundEvent(new Identifier(id)));
|
||||
|
|
|
@ -93,6 +93,9 @@
|
|||
"item.dimdoors.eternal_fluid_bucket": "Eternal Fluid Bucket",
|
||||
"item.dimdoors.white_void_record": "Music Disc",
|
||||
"item.dimdoors.white_void_record.desc": "White Void - The sound of Pocket",
|
||||
"item.dimdoors.dimensional_eraser": "Dimensional Eraser",
|
||||
"item.dimdoors.dimensional_eraser.desc": "Erases entities",
|
||||
"item.dimdoors.monolith_spawner": "Monolith Spawner",
|
||||
"fluid.dimdoors.eternal_fabric": "Eternal Fabric",
|
||||
"entity.dimdoors.monolith": "",
|
||||
"commands.dimteleport.usage": "/dimteleport <dimension> <x> <y> <z> [yaw] [pitch]",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "dimdoors:item/dimensional_eraser"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "dimdoors:item/monolith_spawner"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "dimdoors:item/record_creepy"
|
||||
}
|
||||
}
|
|
@ -12,5 +12,6 @@
|
|||
"rift_end": { "sounds" : [ "dimdoors:rift_end" ] },
|
||||
"rift_start": { "sounds" : [ "dimdoors:rift_start" ] },
|
||||
"tearing": { "sounds" : [ "dimdoors:tearing"] },
|
||||
"white_void": { "sounds" : [ "dimdoors:white_void"] }
|
||||
"white_void": { "sounds" : [ "dimdoors:white_void"] },
|
||||
"bloop": { "sounds" : [ "dimdoors:bloop"]}
|
||||
}
|
||||
|
|
BIN
src/main/resources/assets/dimdoors/sounds/bloop.ogg
Normal file
BIN
src/main/resources/assets/dimdoors/sounds/bloop.ogg
Normal file
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 565 B |
Binary file not shown.
After Width: | Height: | Size: 363 B |
Binary file not shown.
After Width: | Height: | Size: 457 B |
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"animation": {
|
||||
"frames": [
|
||||
{
|
||||
"index": 0,
|
||||
"time": 100
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"time": 2
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"time": 2
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"time": 2
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"time": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Loading…
Reference in a new issue