Skip to content

Commit fa4f9f0

Browse files
authored
Merge pull request #28 from DFOnline/updates
Fix a few things
2 parents 1d3bb67 + 355bf3b commit fa4f9f0

File tree

4 files changed

+43
-15
lines changed

4 files changed

+43
-15
lines changed

src/main/java/io/github/techstreet/dfscript/commands/misc/ScriptsCommand.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package io.github.techstreet.dfscript.commands.misc;
22

33
import com.mojang.brigadier.CommandDispatcher;
4+
import com.mojang.brigadier.arguments.IntegerArgumentType;
45
import com.mojang.brigadier.arguments.StringArgumentType;
56
import io.github.techstreet.dfscript.DFScript;
67
import io.github.techstreet.dfscript.commands.Command;
78
import io.github.techstreet.dfscript.commands.arguments.StringFuncArgumentType;
9+
import io.github.techstreet.dfscript.event.system.EventManager;
810
import io.github.techstreet.dfscript.screen.script.ScriptListScreen;
911
import io.github.techstreet.dfscript.script.Script;
1012
import io.github.techstreet.dfscript.script.ScriptManager;
1113
import io.github.techstreet.dfscript.script.values.ScriptValue;
1214
import io.github.techstreet.dfscript.util.chat.ChatUtil;
13-
import java.util.ArrayList;
1415
import java.util.List;
1516
import java.util.Map.Entry;
1617
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
@@ -49,6 +50,14 @@ public void register(CommandDispatcher<FabricClientCommandSource> cd) {
4950
)
5051
)
5152
)
53+
.then(literal("recursion")
54+
.then(argument("limit", IntegerArgumentType.integer(-1)).executes(ctx -> {
55+
int limit = IntegerArgumentType.getInteger(ctx,"limit");
56+
EventManager.getInstance().setEventLimit(limit);
57+
ChatUtil.info("Set events per tick limit to " + limit);
58+
return 0;
59+
}))
60+
)
5261
);
5362
}
5463

@@ -81,9 +90,11 @@ private void listVars(String script, String filter) {
8190

8291
@Override
8392
public String getDescription() {
84-
return "[blue]/scripts[reset]\n" +
85-
"\n" +
86-
"Opens a GUI to edit custom DFScript scripts.\n";
93+
return """
94+
[blue]/scripts[reset]
95+
96+
Opens a GUI to edit custom DFScript scripts.
97+
""";
8798
}
8899

89100
@Override

src/main/java/io/github/techstreet/dfscript/event/system/EventManager.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
public class EventManager {
99

1010
private static EventManager instance;
11+
private int events = 0;
12+
private int eventLimit = 100;
1113
private final HashMap<Class<? extends Event>, List<Consumer<Event>>> listeners = new HashMap<>();
1214

1315
public EventManager() {
@@ -31,7 +33,17 @@ public <T extends Event> void register(Class<T> type, Consumer<T> consumer) {
3133

3234
public void dispatch(Event event) {
3335
for (Consumer<Event> consumer : listeners.getOrDefault(event.getClass(), new ArrayList<>())) {
36+
if(events == eventLimit) return;
37+
events++;
3438
consumer.accept(event);
3539
}
3640
}
41+
42+
public void resetEvents() {
43+
this.events = 0;
44+
}
45+
46+
public void setEventLimit(int eventLimit) {
47+
this.eventLimit = eventLimit;
48+
}
3749
}

src/main/java/io/github/techstreet/dfscript/mixin/player/MLocalPlayer.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
import io.github.techstreet.dfscript.event.SendChatEvent;
44
import io.github.techstreet.dfscript.event.TickEvent;
55
import io.github.techstreet.dfscript.event.system.EventManager;
6-
import io.github.techstreet.dfscript.util.chat.ChatUtil;
76
import net.minecraft.client.network.ClientPlayerEntity;
87
import net.minecraft.text.Text;
9-
import org.jetbrains.annotations.Nullable;
108
import org.spongepowered.asm.mixin.Mixin;
119
import org.spongepowered.asm.mixin.injection.At;
1210
import org.spongepowered.asm.mixin.injection.Inject;
@@ -27,6 +25,7 @@ private void chat(String message, Text preview, CallbackInfo ci) {
2725

2826
@Inject(method = "sendCommand(Ljava/lang/String;)Z", at = @At("HEAD"), cancellable = true)
2927
private void command(String command, CallbackInfoReturnable<Boolean> ci) {
28+
if(command.startsWith("scripts")) return;
3029
SendChatEvent event = new SendChatEvent("/"+command);
3130
EventManager.getInstance().dispatch(event);
3231
if (event.isCancelled()) {
@@ -36,6 +35,7 @@ private void command(String command, CallbackInfoReturnable<Boolean> ci) {
3635

3736
@Inject(method = "sendCommand(Ljava/lang/String;Lnet/minecraft/text/Text;)V", at = @At("HEAD"), cancellable = true)
3837
private void command2(String command, Text preview, CallbackInfo ci) {
38+
if(command.startsWith("scripts")) return;
3939
SendChatEvent event = new SendChatEvent("/"+command);
4040
EventManager.getInstance().dispatch(event);
4141
if (event.isCancelled()) {
@@ -45,7 +45,9 @@ private void command2(String command, Text preview, CallbackInfo ci) {
4545

4646
@Inject(method = "tick", at = @At("HEAD"))
4747
private void tick(CallbackInfo ci) {
48-
EventManager.getInstance().dispatch(new TickEvent());
48+
EventManager em = EventManager.getInstance();
49+
em.dispatch(new TickEvent());
50+
em.resetEvents();
4951
}
5052

5153
}

src/main/java/io/github/techstreet/dfscript/screen/CScreen.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ public void render(@NotNull MatrixStack stack, int mouseX, int mouseY, float tic
3131

3232
stack.translate(mc.currentScreen.width/2f, mc.currentScreen.height/2f, 0);
3333

34-
float s = (float) mc.getWindow().getScaleFactor();
35-
stack.scale(s,s,0);
34+
// float scaleFactor = (float) mc.getWindow().getScaleFactor();
35+
float scaleFactor = 2;
36+
stack.scale(scaleFactor,scaleFactor,0);
3637

3738
stack.translate(-width/2f, -height/2f, 0);
3839

@@ -41,8 +42,8 @@ public void render(@NotNull MatrixStack stack, int mouseX, int mouseY, float tic
4142
mouseX += -mc.currentScreen.width/2;
4243
mouseY += -mc.currentScreen.height/2;
4344

44-
mouseX /= s;
45-
mouseY /= s;
45+
mouseX /= scaleFactor;
46+
mouseY /= scaleFactor;
4647

4748
mouseX += width/2;
4849
mouseY += height/2;
@@ -108,18 +109,20 @@ public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
108109

109110
public double translateMouseX(double mouseX) {
110111
MinecraftClient mc = DFScript.MC;
111-
float s = (float) mc.getWindow().getScaleFactor();
112+
// float s = (float) mc.getWindow().getScaleFactor();
113+
float scaleFactor = 2;
112114
mouseX += -mc.currentScreen.width/2f;
113-
mouseX /= s;
115+
mouseX /= scaleFactor;
114116
mouseX += width/2f;
115117
return mouseX;
116118
}
117119

118120
public double translateMouseY(double mouseY) {
119121
MinecraftClient mc = DFScript.MC;
120-
float s = (float) mc.getWindow().getScaleFactor();
122+
// float scaleFactor = (float) mc.getWindow().getScaleFactor();
123+
float scaleFactor = 2;
121124
mouseY += -mc.currentScreen.height/2f;
122-
mouseY /= s;
125+
mouseY /= scaleFactor;
123126
mouseY += height/2f;
124127
return mouseY;
125128
}

0 commit comments

Comments
 (0)