Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 20 additions & 66 deletions src/main/java/ch/njol/skript/classes/data/BukkitClasses.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,43 @@

import ch.njol.skript.Skript;
import ch.njol.skript.bukkitutil.EntityUtils;
import ch.njol.skript.classes.*;
import ch.njol.skript.classes.ClassInfo;
import ch.njol.skript.classes.EnumClassInfo;
import ch.njol.skript.classes.Parser;
import ch.njol.skript.classes.PatternedParser;
import ch.njol.skript.classes.Serializer;
import ch.njol.skript.classes.registry.RegistryClassInfo;
import ch.njol.skript.expressions.ExprDamageCause;
import ch.njol.skript.expressions.base.EventValueExpression;
import ch.njol.skript.lang.ParseContext;
import ch.njol.skript.lang.util.SimpleLiteral;
import ch.njol.skript.registrations.Classes;
import ch.njol.skript.util.BlockUtils;
import ch.njol.yggdrasil.Fields;
import io.papermc.paper.registry.RegistryKey;
import io.papermc.paper.world.MoonPhase;
import net.kyori.adventure.text.Component;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Difficulty;
import org.bukkit.FireworkEffect;
import org.bukkit.GameMode;
import org.bukkit.GameRule;
import org.bukkit.Material;
import org.bukkit.SoundCategory;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.attribute.Attribute;
import org.bukkit.block.Biome;
import org.bukkit.block.BlockState;
import org.bukkit.block.DoubleChest;
import org.bukkit.block.banner.PatternType;
import org.bukkit.block.data.BlockData;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.*;
import org.bukkit.entity.EntitySnapshot;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Vehicle;
import org.bukkit.entity.Villager;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
Comment thread
Absolutionism marked this conversation as resolved.
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
Expand Down Expand Up @@ -85,67 +100,6 @@ public BukkitClasses() {}
.defaultExpression(new EventValueExpression<>(Projectile.class))
.changer(DefaultChangers.nonLivingEntityChanger));

Classes.registerClass(new ClassInfo<>(BlockData.class, "blockdata")
.user("block ?datas?")
.name("Block Data")
.description("Block data is the detailed information about a block, referred to in Minecraft as BlockStates, " +
"allowing for the manipulation of different aspects of the block, including shape, waterlogging, direction the block is facing, " +
"and so much more. Information regarding each block's optional data can be found on Minecraft's Wiki. Find the block you're " +
"looking for and scroll down to 'Block States'. Different states must be separated by a semicolon (see examples). " +
"The 'minecraft:' namespace is optional, as well as are underscores.")
.examples("set block at player to campfire[lit=false]",
"set target block of player to oak stairs[facing=north;waterlogged=true]",
"set block at player to grass_block[snowy=true]",
"set loop-block to minecraft:chest[facing=north]",
"set block above player to oak_log[axis=y]",
"set target block of player to minecraft:oak_leaves[distance=2;persistent=false]")
.after("itemtype")
.since("2.5")
.parser(new Parser<>() {
@Nullable
@Override
public BlockData parse(String input, ParseContext context) {
return BlockUtils.createBlockData(input);
}

@Override
public String toString(BlockData o, int flags) {
return o.getAsString().replace(",", ";");
}

@Override
public String toVariableNameString(BlockData o) {
return "blockdata:" + o.getAsString();
}
})
.serializer(new Serializer<>() {
@Override
public Fields serialize(BlockData blockData) {
return Fields.singletonObject("blockdata", blockData.getAsString());
}

@Override
protected BlockData deserialize(Fields fields) throws StreamCorruptedException {
String data = fields.getObject("blockdata", String.class);
assert data != null;
try {
return Bukkit.createBlockData(data);
} catch (IllegalArgumentException ex) {
throw new StreamCorruptedException("Invalid block data: " + data);
}
}

@Override
public boolean mustSyncDeserialization() {
return true;
}

@Override
protected boolean canBeInstantiated() {
return false;
}
}).cloner(BlockData::clone));

Classes.registerClass(new ClassInfo<>(World.class, "world")
.user("worlds?")
.name("World")
Expand Down
76 changes: 0 additions & 76 deletions src/main/java/ch/njol/skript/expressions/ExprBlockData.java

This file was deleted.

25 changes: 12 additions & 13 deletions src/main/java/ch/njol/skript/expressions/ExprBlocks.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
package ch.njol.skript.expressions;

import java.util.Iterator;

import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.event.Event;
import org.bukkit.util.Vector;
import org.jetbrains.annotations.Nullable;

import com.google.common.collect.Lists;

import ch.njol.skript.Skript;
import ch.njol.skript.SkriptConfig;
import ch.njol.skript.doc.Description;
Expand All @@ -26,6 +15,16 @@
import ch.njol.skript.util.Direction;
import ch.njol.util.Kleenean;
import ch.njol.util.coll.iterator.ArrayIterator;
import com.google.common.collect.Lists;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.event.Event;
import org.bukkit.util.Vector;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.bukkit.misc.elements.expressions.ExprDirection;

import java.util.Iterator;

@Name("Blocks")
@Description({"Blocks relative to other blocks or between other blocks.",
Expand Down Expand Up @@ -144,8 +143,8 @@ public Iterator<Block> iterator(Event event) {
return null;
// start block + (max - 1) == max
int distance = SkriptConfig.maxTargetBlockDistance.value() - 1;
if (this.direction instanceof ExprDirection) {
Expression<Number> numberExpression = ((ExprDirection) this.direction).amount;
if (this.direction instanceof ExprDirection exprDirection) {
Expression<Number> numberExpression = exprDirection.getAmount();
if (numberExpression != null) {
Number number = numberExpression.getSingle(event);
if (number != null)
Expand Down
Loading
Loading