Added Monolith Spawner and Dimesnional Eraser.

This commit is contained in:
Waterpicker 2021-02-04 09:50:48 -06:00
parent c24272576e
commit 3e0f8a84df
15 changed files with 115 additions and 2 deletions

View file

@ -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);
}
}

View file

@ -5,6 +5,7 @@ import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import org.dimdev.dimdoors.block.ModBlocks; import org.dimdev.dimdoors.block.ModBlocks;
import org.dimdev.dimdoors.entity.ModEntityTypes;
import org.dimdev.dimdoors.fluid.ModFluids; import org.dimdev.dimdoors.fluid.ModFluids;
import org.dimdev.dimdoors.rift.registry.LinkProperties; import org.dimdev.dimdoors.rift.registry.LinkProperties;
import org.dimdev.dimdoors.rift.targets.EscapeTarget; 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 org.dimdev.dimdoors.world.ModDimensions;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ArmorItem; import net.minecraft.item.ArmorItem;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
@ -26,6 +28,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.Items; import net.minecraft.item.Items;
import net.minecraft.item.SpawnEggItem;
import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
@ -145,6 +148,11 @@ public final class ModItems {
@RegistryObject("rift_stabilizer") @RegistryObject("rift_stabilizer")
public static final Item RIFT_STABILIZER = create(new RiftStabilizerItem(new Item.Settings().maxCount(1).maxDamage(6).group(DIMENSIONAL_DOORS))); 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") @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))); 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))); public static final Item CREEPY_RECORD = create(new MusicDiscItem(10, ModSoundEvents.CREEPY, new Item.Settings().group(DIMENSIONAL_DOORS)));
@RegistryObject("white_void_record") @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") @RegistryObject("marking_plate")
public static final Item MARKING_PLATE = create(ModBlocks.MARKING_PLATE); public static final Item MARKING_PLATE = create(ModBlocks.MARKING_PLATE);

View file

@ -1,13 +1,21 @@
package org.dimdev.dimdoors.item; package org.dimdev.dimdoors.item;
import java.util.function.Predicate;
import org.dimdev.dimdoors.block.entity.DetachedRiftBlockEntity; import org.dimdev.dimdoors.block.entity.DetachedRiftBlockEntity;
import org.dimdev.dimdoors.block.entity.RiftBlockEntity; import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity; 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.BlockHitResult;
import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.EntityHitResult;
import net.minecraft.util.hit.HitResult; 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.BlockView;
import net.minecraft.world.RaycastContext;
public final class RaycastHelper { public final class RaycastHelper {
public static final int REACH_DISTANCE = 5; public static final int REACH_DISTANCE = 5;
@ -23,4 +31,12 @@ public final class RaycastHelper {
public static boolean hitsLivingEntity(HitResult hit) { public static boolean hitsLivingEntity(HitResult hit) {
return hit != null && hit.getType() == HitResult.Type.ENTITY && ((EntityHitResult) hit).getEntity() instanceof LivingEntity; 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);
}
} }

View file

@ -19,6 +19,7 @@ public final class ModSoundEvents {
public static final SoundEvent RIFT_START = register("dimdoors:rift_start"); public static final SoundEvent RIFT_START = register("dimdoors:rift_start");
public static final SoundEvent TEARING = register("dimdoors:tearing"); public static final SoundEvent TEARING = register("dimdoors:tearing");
public static final SoundEvent WHITE_VOID = register("dimdoors:white_void"); public static final SoundEvent WHITE_VOID = register("dimdoors:white_void");
public static final SoundEvent BLOOP = register("dimdoors:bloop");
private static SoundEvent register(String id) { private static SoundEvent register(String id) {
return Registry.register(Registry.SOUND_EVENT, id, new SoundEvent(new Identifier(id))); return Registry.register(Registry.SOUND_EVENT, id, new SoundEvent(new Identifier(id)));

View file

@ -93,6 +93,9 @@
"item.dimdoors.eternal_fluid_bucket": "Eternal Fluid Bucket", "item.dimdoors.eternal_fluid_bucket": "Eternal Fluid Bucket",
"item.dimdoors.white_void_record": "Music Disc", "item.dimdoors.white_void_record": "Music Disc",
"item.dimdoors.white_void_record.desc": "White Void - The sound of Pocket", "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", "fluid.dimdoors.eternal_fabric": "Eternal Fabric",
"entity.dimdoors.monolith": "", "entity.dimdoors.monolith": "",
"commands.dimteleport.usage": "/dimteleport <dimension> <x> <y> <z> [yaw] [pitch]", "commands.dimteleport.usage": "/dimteleport <dimension> <x> <y> <z> [yaw] [pitch]",

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "dimdoors:item/dimensional_eraser"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "dimdoors:item/monolith_spawner"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "dimdoors:item/record_creepy"
}
}

View file

@ -12,5 +12,6 @@
"rift_end": { "sounds" : [ "dimdoors:rift_end" ] }, "rift_end": { "sounds" : [ "dimdoors:rift_end" ] },
"rift_start": { "sounds" : [ "dimdoors:rift_start" ] }, "rift_start": { "sounds" : [ "dimdoors:rift_start" ] },
"tearing": { "sounds" : [ "dimdoors:tearing"] }, "tearing": { "sounds" : [ "dimdoors:tearing"] },
"white_void": { "sounds" : [ "dimdoors:white_void"] } "white_void": { "sounds" : [ "dimdoors:white_void"] },
"bloop": { "sounds" : [ "dimdoors:bloop"]}
} }

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

View file

@ -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
}
]
}
}