1.0.12 • Published 1 year ago

sandstone-raycast v1.0.12

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Raycast Library for Sandstone


This library is built for sandstone: https://github.com/sandstone-mc/sandstone :computer:

This library provides a simple raycast function to quickly construct a raycast for blocks and\or entities.

To import the raycast function: 1. Download the NPM Library. :arrow_down:

  • You can do it by running npm i sandstone-raycast in your console.
  1. Import the raycast in your project. :arrow_heading_down:
    import { raycast } from "sandstone-raycast";
  1. Call the raycast function to generate MCFunctons.
  2. Enjoy :star:

Syntax:

raycast(fileName, blockToIgnore, entityToHit, runOnEveryStep, runOnHit, step, maxIter){
    // code
}

nameOfFile Name of the file that will be generated.

blockToIgnore Block name ignore, if the current block is not the specified block then the raycast will stop, can be null.

entityToHit Name of the Entity to look for, it accept Selectors with distance attribute, can be null.

runOnEveryStep MCFunction to run on every step.

runOnHit MCFunction to run on hitting the target.

step Step size of the raycast, default is 1 (OPTIONAL).

maxIter Maximum iteration of the raycast, default is 20 (OPTIONAL).

Example of raycast function:

raycast(
    "raycast/cast",
    "minecraft:air", 
    Selector('@e', 
        { 
            type: "minecraft:husk", 
            dx: 0
        }
    ),
    MCFunction("raycast/update", () => {
        particle("minecraft:crit", rel(0, 0, 0), [0, 0, 0], 0, 1);
    }), 
    MCFunction("raycast/hit", () => {
        effect.give(Selector('@e', { type: 'minecraft:husk', dx: 0}), "minecraft:instant_health");
        say("Hi")
    }), 1, 50
)

Example Pack:

import { effect, execute, loc, MCFunction, Objective, particle, rel, say, Selector } from 'sandstone'
import { raycast } from "sandstone-raycast";

export const rightClickObj = Objective.create("rcObj", "minecraft.used:minecraft.carrot_on_a_stick")
export const rightClick = rightClickObj("@s")

MCFunction('test', () => {
    execute.as(Selector('@a', { scores: { 'rcObj': [1, null] } })).at('@s').anchored("eyes").positioned(loc(0, 0, 1)).run(() => {
        rightClick.set(0);
        raycast(
            "raycast/cast",
            "minecraft:air", 
            Selector('@e', 
                { 
                    type: "minecraft:husk", 
                    dx: 0
                }
            ),
            MCFunction("raycast/update", () => {
                particle("minecraft:crit", rel(0, 0, 0), [0, 0, 0], 0, 1);
            }), 
            MCFunction("raycast/hit", () => {
                effect.give(Selector('@e', { type: 'minecraft:husk', dx: 0}), "minecraft:instant_health");
                say("Hi")
            }), 1, 50
        )
	})
}, {
	runEachTick: true
})

NOTE: This library does NOT handle scores and right click detection

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago