Skip to content

Commit

Permalink
Added BlockEvents.picked event, more repackages, added WIP web API …
Browse files Browse the repository at this point in the history
…registry
  • Loading branch information
LatvianModder committed Jan 31, 2025
1 parent e69f722 commit 95200c3
Show file tree
Hide file tree
Showing 184 changed files with 571 additions and 842 deletions.
3 changes: 2 additions & 1 deletion src/main/java/dev/latvian/mods/kubejs/CommonProperties.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.mojang.datafixers.util.Pair;
import dev.latvian.mods.kubejs.bindings.TextIcons;
import dev.latvian.mods.kubejs.plugin.builtin.wrapper.TextIcons;
import dev.latvian.mods.kubejs.util.BaseProperties;
import dev.latvian.mods.kubejs.util.RegistryAccessContainer;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.ComponentSerialization;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/dev/latvian/mods/kubejs/DevProperties.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package dev.latvian.mods.kubejs;

import dev.latvian.mods.kubejs.util.BaseProperties;

public class DevProperties extends BaseProperties {
private static DevProperties instance;

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/dev/latvian/mods/kubejs/KubeJS.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dev.latvian.mods.kubejs;

import com.google.common.base.Stopwatch;
import dev.latvian.mods.kubejs.bindings.event.StartupEvents;
import dev.latvian.mods.kubejs.client.ClientScriptManager;
import dev.latvian.mods.kubejs.event.KubeStartupEvent;
import dev.latvian.mods.kubejs.fluid.KubeJSFluidIngredients;
Expand All @@ -12,6 +11,7 @@
import dev.latvian.mods.kubejs.level.ruletest.KubeJSRuleTests;
import dev.latvian.mods.kubejs.plugin.KubeJSPlugin;
import dev.latvian.mods.kubejs.plugin.KubeJSPlugins;
import dev.latvian.mods.kubejs.plugin.builtin.event.StartupEvents;
import dev.latvian.mods.kubejs.recipe.KubeJSRecipeSerializers;
import dev.latvian.mods.kubejs.registry.RegistryType;
import dev.latvian.mods.kubejs.script.KubeJSBackgroundThread;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/dev/latvian/mods/kubejs/KubeJSCodecs.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.mojang.serialization.DataResult;
import com.mojang.serialization.JsonOps;
import com.mojang.serialization.MapCodec;
import dev.latvian.mods.kubejs.bindings.StringUtilsWrapper;
import dev.latvian.mods.kubejs.plugin.builtin.wrapper.StringUtilsWrapper;
import dev.latvian.mods.kubejs.util.JsonUtils;
import dev.latvian.mods.rhino.type.EnumTypeInfo;
import dev.latvian.mods.rhino.type.TypeInfo;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package dev.latvian.mods.kubejs;

import dev.latvian.mods.kubejs.bindings.event.StartupEvents;
import dev.latvian.mods.kubejs.block.entity.BlockEntityAttachmentInfo;
import dev.latvian.mods.kubejs.block.entity.BlockEntityBuilder;
import dev.latvian.mods.kubejs.block.entity.KubeBlockEntity;
Expand All @@ -9,6 +8,7 @@
import dev.latvian.mods.kubejs.item.creativetab.CreativeTabKubeEvent;
import dev.latvian.mods.kubejs.plugin.KubeJSPlugin;
import dev.latvian.mods.kubejs.plugin.KubeJSPlugins;
import dev.latvian.mods.kubejs.plugin.builtin.event.StartupEvents;
import dev.latvian.mods.kubejs.registry.RegistryObjectStorage;
import dev.latvian.mods.kubejs.script.ConsoleJS;
import dev.latvian.mods.kubejs.script.ConsoleLine;
Expand All @@ -18,7 +18,6 @@
import net.minecraft.Util;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.EventPriority;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
Expand Down Expand Up @@ -81,7 +80,7 @@ private static void loadComplete0() {

ConsoleJS.STARTUP.flush(true);

if (FMLLoader.getDist() == Dist.DEDICATED_SERVER || !CommonProperties.get().startupErrorGUI) {
if (FMLLoader.getDist().isDedicatedServer() || !CommonProperties.get().startupErrorGUI) {
throw new RuntimeException("There were KubeJS startup script syntax errors! See logs/kubejs/startup.log for more info");
}
}
Expand Down

This file was deleted.

7 changes: 4 additions & 3 deletions src/main/java/dev/latvian/mods/kubejs/block/BlockBuilder.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dev.latvian.mods.kubejs.block;

import com.mojang.serialization.JsonOps;
import dev.latvian.mods.kubejs.bindings.AABBWrapper;
import dev.latvian.mods.kubejs.block.callback.AfterEntityFallenOnBlockCallback;
import dev.latvian.mods.kubejs.block.callback.BlockExplodedCallback;
import dev.latvian.mods.kubejs.block.callback.BlockStateMirrorCallback;
Expand All @@ -11,6 +10,7 @@
import dev.latvian.mods.kubejs.block.callback.CanBeReplacedCallback;
import dev.latvian.mods.kubejs.block.callback.EntityFallenOnBlockCallback;
import dev.latvian.mods.kubejs.block.callback.EntitySteppedOnBlockCallback;
import dev.latvian.mods.kubejs.block.callback.RandomTickCallback;
import dev.latvian.mods.kubejs.block.drop.BlockDropSupplier;
import dev.latvian.mods.kubejs.block.drop.BlockDrops;
import dev.latvian.mods.kubejs.block.entity.BlockEntityBuilder;
Expand All @@ -21,6 +21,7 @@
import dev.latvian.mods.kubejs.generator.KubeAssetGenerator;
import dev.latvian.mods.kubejs.generator.KubeDataGenerator;
import dev.latvian.mods.kubejs.item.ItemBuilder;
import dev.latvian.mods.kubejs.plugin.builtin.wrapper.AABBWrapper;
import dev.latvian.mods.kubejs.registry.AdditionalObjectRegistry;
import dev.latvian.mods.kubejs.registry.BuilderBase;
import dev.latvian.mods.kubejs.registry.ModelledBuilderBase;
Expand Down Expand Up @@ -88,7 +89,7 @@ public abstract class BlockBuilder extends ModelledBuilderBase<Block> {
public transient float slipperiness = Float.NaN;
public transient float speedFactor = Float.NaN;
public transient float jumpFactor = Float.NaN;
public Consumer<RandomTickCallbackJS> randomTickCallback;
public Consumer<RandomTickCallback> randomTickCallback;
public BlockDropSupplier drops;
public transient boolean noValidSpawns;
public transient boolean suffocating;
Expand Down Expand Up @@ -579,7 +580,7 @@ public BlockBuilder jumpFactor(float f) {
* @param randomTickCallback A callback using a block container and a random.
*/
@Info("Sets random tick callback for this black.")
public BlockBuilder randomTick(@Nullable Consumer<RandomTickCallbackJS> randomTickCallback) {
public BlockBuilder randomTick(@Nullable Consumer<RandomTickCallback> randomTickCallback) {
this.randomTickCallback = randomTickCallback;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.latvian.mods.kubejs.block;

import dev.latvian.mods.kubejs.block.callback.RandomTickCallback;
import dev.latvian.mods.kubejs.block.state.BlockStatePredicate;
import dev.latvian.mods.kubejs.event.KubeEvent;
import dev.latvian.mods.kubejs.typings.Info;
Expand Down Expand Up @@ -34,7 +35,7 @@ public void setIsRandomlyTicking(boolean v) {
block.kjs$setIsRandomlyTicking(v);
}

public void setRandomTickCallback(Consumer<RandomTickCallbackJS> callback) {
public void setRandomTickCallback(Consumer<RandomTickCallback> callback) {
block.kjs$setRandomTickCallback(callback);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package dev.latvian.mods.kubejs.block;

import dev.latvian.mods.kubejs.entity.KubeRayTraceResult;
import dev.latvian.mods.kubejs.level.LevelBlock;
import dev.latvian.mods.kubejs.player.KubePlayerEvent;
import dev.latvian.mods.kubejs.plugin.builtin.event.BlockEvents;
import dev.latvian.mods.kubejs.typings.Info;
import dev.latvian.mods.rhino.util.HideFromJS;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.HitResult;
import org.jetbrains.annotations.Nullable;

@Info(value = """
Invoked when player middle-clicks on a block.
""")
public class BlockPickedKubeEvent implements KubePlayerEvent {
public final Level level;
public final LevelBlock block;
public final Player player;
private final HitResult hitResult;
private KubeRayTraceResult target;

public BlockPickedKubeEvent(Level level, BlockPos pos, BlockState state, Player player, HitResult hitResult) {
this.level = level;
this.block = level.kjs$getBlock(pos).cache(state);
this.player = player;
this.hitResult = hitResult;
}

@Override
public Level getLevel() {
return block.getLevel();
}

@Override
public Player getEntity() {
return player;
}

public KubeRayTraceResult getTarget() {
if (target == null) {
target = new KubeRayTraceResult(player, hitResult);
}

return target;
}

@Nullable
@HideFromJS
public static ItemStack handle(BlockState state, HitResult target, LevelReader levelReader, BlockPos pos, Player player) {
if (levelReader instanceof Level level) {
var key = state.kjs$getKey();

if (BlockEvents.PICKED.hasListeners(key) && BlockEvents.PICKED.post(level, key, new BlockPickedKubeEvent(level, pos, state, player, target)).value() instanceof ItemStack stack) {
return stack;
}
}

return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package dev.latvian.mods.kubejs.block;

import dev.latvian.mods.kubejs.bindings.ColorWrapper;
import dev.latvian.mods.kubejs.color.KubeColor;
import dev.latvian.mods.kubejs.color.SimpleColor;
import dev.latvian.mods.kubejs.color.SimpleColorWithAlpha;
import dev.latvian.mods.kubejs.plugin.builtin.wrapper.ColorWrapper;
import dev.latvian.mods.rhino.BaseFunction;
import dev.latvian.mods.rhino.Context;
import dev.latvian.mods.rhino.Undefined;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package dev.latvian.mods.kubejs.block;

import dev.latvian.mods.kubejs.KubeJS;
import dev.latvian.mods.kubejs.bindings.event.BlockEvents;
import dev.latvian.mods.kubejs.client.ModelGenerator;
import dev.latvian.mods.kubejs.client.VariantBlockStateGenerator;
import dev.latvian.mods.kubejs.plugin.builtin.event.BlockEvents;
import dev.latvian.mods.rhino.util.ReturnsSelf;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
Expand Down
25 changes: 0 additions & 25 deletions src/main/java/dev/latvian/mods/kubejs/block/EntityBlockKJS.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package dev.latvian.mods.kubejs.block;

import dev.latvian.mods.kubejs.KubeJS;
import dev.latvian.mods.kubejs.bindings.event.BlockEvents;
import dev.latvian.mods.kubejs.plugin.builtin.event.BlockEvents;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import net.neoforged.bus.api.SubscribeEvent;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
import org.jetbrains.annotations.Nullable;

public class SeedItemBuilder extends BlockItemBuilder {
public static class SeedItemJS extends ItemNameBlockItem implements SpecialPlantable {
public SeedItemJS(SeedItemBuilder b) {
public static class SeedKubeItem extends ItemNameBlockItem implements SpecialPlantable {
public SeedKubeItem(SeedItemBuilder b) {
super(b.blockBuilder.get(), b.createItemProperties());
}

Expand Down Expand Up @@ -48,6 +48,6 @@ public String getTranslationKeyGroup() {

@Override
public Item createObject() {
return new SeedItemJS(this);
return new SeedKubeItem(this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import net.minecraft.world.level.block.state.BlockState;

public class BlockStateMirrorCallback extends BlockStateModifyCallback {

private final Mirror mirror;

public BlockStateMirrorCallback(BlockState state, Mirror mirror) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import net.minecraft.world.level.block.state.BlockState;

public class EntityFallenOnBlockCallback extends EntitySteppedOnBlockCallback {

private final float fallHeight;

public EntityFallenOnBlockCallback(Level level, Entity entity, BlockPos pos, BlockState state, float fallHeight) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package dev.latvian.mods.kubejs.block;
package dev.latvian.mods.kubejs.block.callback;

import dev.latvian.mods.kubejs.level.LevelBlock;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.Level;

public class RandomTickCallbackJS {
public class RandomTickCallback {
public final LevelBlock block;
public final RandomSource random;

public RandomTickCallbackJS(LevelBlock block, RandomSource random) {
public RandomTickCallback(LevelBlock block, RandomSource random) {
this.block = block;
this.random = random;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package dev.latvian.mods.kubejs.block.custom;

import dev.latvian.mods.kubejs.block.KubeJSBlockProperties;
import dev.latvian.mods.kubejs.block.RandomTickCallbackJS;
import dev.latvian.mods.kubejs.block.callback.RandomTickCallback;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
Expand Down Expand Up @@ -59,7 +59,7 @@ public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, Block

@Override
public void randomTick(BlockState blockState, ServerLevel serverLevel, BlockPos blockPos, RandomSource random) {
double f = builder.growSpeedCallback == null ? -1 : builder.growSpeedCallback.applyAsDouble(new RandomTickCallbackJS(serverLevel.kjs$getBlock(blockPos).cache(blockState), random));
double f = builder.growSpeedCallback == null ? -1 : builder.growSpeedCallback.applyAsDouble(new RandomTickCallback(serverLevel.kjs$getBlock(blockPos).cache(blockState), random));
int age = this.getAge(blockState);
if (age < this.getMaxAge()) {
if (f < 0) {
Expand All @@ -76,7 +76,7 @@ public void growCrops(Level level, BlockPos blockPos, BlockState blockState) {
if (builder.fertilizerCallback == null) {
super.growCrops(level, blockPos, blockState);
} else {
int effect = builder.fertilizerCallback.applyAsInt(new RandomTickCallbackJS(level.kjs$getBlock(blockPos).cache(blockState), level.random));
int effect = builder.fertilizerCallback.applyAsInt(new RandomTickCallback(level.kjs$getBlock(blockPos).cache(blockState), level.random));
if (effect > 0) {
level.setBlock(blockPos, this.getStateForAge(Integer.min(getAge(blockState) + effect, getMaxAge())), 2);
}
Expand Down
Loading

0 comments on commit 95200c3

Please sign in to comment.