mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-17 09:25:06 +01:00
Fix chasing shadows (mostly)
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
package emu.grasscutter.scripts;
|
||||
|
||||
import static emu.grasscutter.scripts.constants.EventType.EVENT_TIMER_EVENT;
|
||||
|
||||
import com.github.davidmoten.rtreemulti.RTree;
|
||||
import com.github.davidmoten.rtreemulti.geometry.Geometry;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
@@ -21,17 +19,20 @@ import emu.grasscutter.server.packet.send.PacketGroupSuiteNotify;
|
||||
import emu.grasscutter.utils.*;
|
||||
import io.netty.util.concurrent.FastThreadLocalThread;
|
||||
import it.unimi.dsi.fastutil.ints.*;
|
||||
import kotlin.Pair;
|
||||
import lombok.val;
|
||||
import org.luaj.vm2.*;
|
||||
import org.luaj.vm2.lib.jse.CoerceJavaToLua;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.*;
|
||||
import kotlin.Pair;
|
||||
import lombok.val;
|
||||
import org.luaj.vm2.*;
|
||||
import org.luaj.vm2.lib.jse.CoerceJavaToLua;
|
||||
|
||||
import static emu.grasscutter.scripts.constants.EventType.EVENT_TIMER_EVENT;
|
||||
|
||||
public class SceneScriptManager {
|
||||
private final Scene scene;
|
||||
@@ -801,26 +802,26 @@ public class SceneScriptManager {
|
||||
private void realCallEvent(@Nonnull ScriptArgs params) {
|
||||
try {
|
||||
ScriptLoader.getScriptLib().setSceneScriptManager(this);
|
||||
int eventType = params.type;
|
||||
Set<SceneTrigger> relevantTriggers = new HashSet<>();
|
||||
if (eventType == EventType.EVENT_ENTER_REGION || eventType == EventType.EVENT_LEAVE_REGION) {
|
||||
relevantTriggers =
|
||||
this.getTriggersByEvent(eventType).stream()
|
||||
.filter(
|
||||
t ->
|
||||
t.getCondition().contains(String.valueOf(params.param1))
|
||||
&& (t.getSource().isEmpty()
|
||||
|| t.getSource().equals(params.getEventSource())))
|
||||
.collect(Collectors.toSet());
|
||||
} else {
|
||||
relevantTriggers =
|
||||
this.getTriggersByEvent(eventType).stream()
|
||||
.filter(
|
||||
t -> params.getGroupId() == 0 || t.getCurrentGroup().id == params.getGroupId())
|
||||
.filter(
|
||||
t -> (t.getSource().isEmpty() || t.getSource().equals(params.getEventSource())))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
var eventType = params.type;
|
||||
var relevantTriggers = switch (eventType) {
|
||||
case EventType.EVENT_ENTER_REGION, EventType.EVENT_LEAVE_REGION ->
|
||||
this.getTriggersByEvent(eventType).stream()
|
||||
.filter(
|
||||
t ->
|
||||
t.getCondition().contains(String.valueOf(params.param1))
|
||||
&& (t.getSource().isEmpty()
|
||||
|| t.getSource().equals(params.getEventSource())))
|
||||
.collect(Collectors.toSet());
|
||||
default ->
|
||||
this.getTriggersByEvent(eventType).stream()
|
||||
.filter(
|
||||
t -> params.getGroupId() == 0 || t.getCurrentGroup().id == params.getGroupId())
|
||||
.filter(
|
||||
t -> (t.getSource().isEmpty() || t.getSource().equals(params.getEventSource())))
|
||||
.collect(Collectors.toSet());
|
||||
};
|
||||
|
||||
for (SceneTrigger trigger : relevantTriggers) {
|
||||
handleEventForTrigger(params, trigger);
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ public class ScriptLib {
|
||||
|
||||
public int SetWorktopOptionsByGroupId(int groupId, int configId, int[] options) {
|
||||
logger.debug("[LUA] Call SetWorktopOptionsByGroupId with {},{},{}",
|
||||
groupId,configId,options);
|
||||
groupId, configId, options);
|
||||
|
||||
val entity = getSceneScriptManager().getScene().getEntityByConfigId(configId, groupId);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user