Skip to content

Commit

Permalink
fix crash on dedicated server
Browse files Browse the repository at this point in the history
  • Loading branch information
reoseah committed Nov 3, 2024
1 parent 3c7ec41 commit e4cfe5a
Show file tree
Hide file tree
Showing 15 changed files with 55 additions and 3 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ yarn_mappings=1.21.1+build.3
loader_version=0.16.2

# Mod Properties
mod_version=0.0.2
mod_version=0.0.3
maven_group=io.github.reoseah
archives_base_name=magisterium

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import com.mojang.serialization.MapCodec;
import io.github.reoseah.magisterium.spellbook.BookLayout;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
Expand All @@ -18,6 +20,7 @@ public interface BookElement {

MapCodec<? extends BookElement> getCodec();

@Environment(EnvType.CLIENT)
void visit(BookLayout.Builder builder, BookProperties properties, TextRenderer textRenderer);
}

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.Drawable;
Expand Down Expand Up @@ -40,10 +42,12 @@ protected int getHeight(int width, TextRenderer textRenderer) {
}

@Override
@Environment(EnvType.CLIENT)
protected Drawable createWidget(int x, int y, BookProperties properties, int maxHeight, TextRenderer textRenderer) {
return new Widget(properties, x, y, background, slots);
}

@Environment(EnvType.CLIENT)
private static class Widget implements Drawable, SlotPropertiesProvider {
private final BookProperties properties;
private final int x;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.reoseah.magisterium.spellbook.BookLayout;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.text.Text;
import net.minecraft.text.TextCodecs;
Expand All @@ -29,6 +31,7 @@ public MapCodec<? extends BookElement> getCodec() {
}

@Override
@Environment(EnvType.CLIENT)
public void visit(BookLayout.Builder builder, BookProperties properties, TextRenderer textRenderer) {
builder.startNewFold();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@

import io.github.reoseah.magisterium.spellbook.BookLayout;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Drawable;

public abstract class DivisibleBlock extends SimpleBlock {
@Override
@Environment(EnvType.CLIENT)
public void visit(BookLayout.Builder builder, BookProperties properties, TextRenderer textRenderer) {
int elementY = builder.getCurrentY() + (builder.isNewPage() ? 0 : this.getTopMargin());
int elementHeight = this.getHeight(properties.pageWidth, textRenderer);
Expand All @@ -31,10 +34,13 @@ public void visit(BookLayout.Builder builder, BookProperties properties, TextRen
builder.setCurrentY(builder.getMinY() + pair.nextHeight());
}

@Environment(EnvType.CLIENT)
protected abstract boolean canDivide(int height, int maxHeight, TextRenderer textRenderer);

@Environment(EnvType.CLIENT)
protected abstract WidgetPair createWidgetPair(int x, int y, int width, int maxHeight, int nextX, int nextY, int nextHeight, TextRenderer textRenderer);

@Environment(EnvType.CLIENT)
protected record WidgetPair(Drawable current, Drawable next, int nextHeight) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.reoseah.magisterium.spellbook.BookLayout;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;

import java.util.List;
Expand All @@ -27,6 +29,7 @@ public MapCodec<? extends BookElement> getCodec() {
}

@Override
@Environment(EnvType.CLIENT)
public void visit(BookLayout.Builder builder, BookProperties properties, TextRenderer textRenderer) {
builder.startNewFold();
builder.allowWrap(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import it.unimi.dsi.fastutil.objects.ObjectIntPair;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.Drawable;
Expand Down Expand Up @@ -31,16 +33,19 @@ public MapCodec<? extends BookElement> getCodec() {
}

@Override
@Environment(EnvType.CLIENT)
protected int getHeight(int width, TextRenderer textRenderer) {
return textRenderer.getWrappedLinesHeight(this.text, width);
}

@Override
@Environment(EnvType.CLIENT)
protected int getTopMargin() {
return super.getTopMargin() + 2;
}

@Override
@Environment(EnvType.CLIENT)
protected Drawable createWidget(int x, int y, BookProperties properties, int maxHeight, TextRenderer textRenderer) {
List<OrderedText> lines = textRenderer.wrapLines(this.text, properties.pageWidth);
List<ObjectIntPair<OrderedText>> centeredLines = new ArrayList<>(lines.size());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.mojang.serialization.MapCodec;
import io.github.reoseah.magisterium.spellbook.BookLayout;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;

public class PageBreak implements BookElement {
Expand All @@ -15,6 +17,7 @@ public MapCodec<? extends BookElement> getCodec() {
}

@Override
@Environment(EnvType.CLIENT)
public void visit(BookLayout.Builder builder, BookProperties properties, TextRenderer textRenderer) {
builder.advancePage();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Drawable;
import net.minecraft.text.Text;
Expand All @@ -25,11 +27,13 @@ public MapCodec<? extends BookElement> getCodec() {
}

@Override
@Environment(EnvType.CLIENT)
protected int getHeight(int width, TextRenderer textRenderer) {
return textRenderer.getWrappedLinesHeight(this.text, width);
}

@Override
@Environment(EnvType.CLIENT)
protected Drawable createWidget(int x, int y, BookProperties properties, int maxHeight, TextRenderer textRenderer) {
var lines = textRenderer.wrapLines(this.text, properties.pageWidth);
return (matrices, mouseX, mouseY, delta) -> {
Expand All @@ -40,11 +44,13 @@ protected Drawable createWidget(int x, int y, BookProperties properties, int max
}

@Override
@Environment(EnvType.CLIENT)
protected boolean canDivide(int height, int maxHeight, TextRenderer textRenderer) {
return maxHeight >= textRenderer.fontHeight;
}

@Override
@Environment(EnvType.CLIENT)
protected WidgetPair createWidgetPair(int x, int y, int width, int maxHeight, int nextX, int nextY, int nextHeight, TextRenderer textRenderer) {
var lines = textRenderer.wrapLines(this.text, width);
int lineCountOnCurrentPage = maxHeight / textRenderer.fontHeight;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.mojang.serialization.DataResult;
import io.github.reoseah.magisterium.spellbook.BookLayout;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Drawable;

Expand All @@ -16,6 +18,7 @@ public abstract class SimpleBlock implements BookElement {
}, DataResult::success);

@Override
@Environment(EnvType.CLIENT)
public void visit(BookLayout.Builder builder, BookProperties properties, TextRenderer textRenderer) {
int elementHeight = this.getHeight(properties.pageWidth, textRenderer);

Expand All @@ -33,13 +36,15 @@ public void visit(BookLayout.Builder builder, BookProperties properties, TextRen
/**
* @return number of pixels to offset from the previous element
*/
@Environment(EnvType.CLIENT)
protected int getTopMargin() {
return 4;
}

/**
* @return how many pixels this element wants to take on a page
*/
@Environment(EnvType.CLIENT)
protected abstract int getHeight(int width, TextRenderer textRenderer);

/**
Expand All @@ -51,5 +56,6 @@ protected int getTopMargin() {
* @see net.minecraft.client.gui.Element
* @see SlotPropertiesProvider
*/
@Environment(EnvType.CLIENT)
protected abstract Drawable createWidget(int x, int y, BookProperties properties, int maxHeight, TextRenderer textRenderer);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import io.github.reoseah.magisterium.spellbook.BookProperties;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
Expand Down Expand Up @@ -47,6 +49,7 @@ public MapCodec<? extends BookElement> getCodec() {
}

@Override
@Environment(EnvType.CLIENT)
protected int getHeight(int width, TextRenderer textRenderer) {
var lines = textRenderer.wrapLines(this.text, width - 12);
var linesAsString = lines.stream().map(t -> {
Expand All @@ -70,15 +73,19 @@ protected int getHeight(int width, TextRenderer textRenderer) {
}

@Override
@Environment(EnvType.CLIENT)
protected int getTopMargin() {
return super.getTopMargin() + 2;
}

@Override
@Environment(EnvType.CLIENT)
protected Drawable createWidget(int x, int y, BookProperties properties, int maxHeight, TextRenderer textRenderer) {
return new UtteranceWidget(this.text, x, y, properties, properties.pageWidth, textRenderer);
}

// TODO make this a static class
@Environment(EnvType.CLIENT)
private class UtteranceWidget implements Drawable, Element {
private final int buttonX;
private final int buttonY;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.reoseah.magisterium.spellbook.BookProperties;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Drawable;

Expand All @@ -23,12 +25,14 @@ public MapCodec<? extends BookElement> getCodec() {
}

@Override
@Environment(EnvType.CLIENT)
protected int getHeight(int width, TextRenderer textRenderer) {
// forces new page
return 10000;
}

@Override
@Environment(EnvType.CLIENT)
protected Drawable createWidget(int x, int y, BookProperties properties, int maxHeight, TextRenderer textRenderer) {
int height = this.element.getHeight(properties.pageWidth, textRenderer);
int newY = y + (maxHeight - height) / 2;
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 4 additions & 1 deletion src/main/resources/data/magisterium/recipe/arcane_lift.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,10 @@
{
"x": 42,
"y": 0,
"background": "magisterium:item/placeholder/question_mark"
"background": "magisterium:item/placeholder/bottle",
"ingredient": {
"item": "minecraft:experience_bottle"
}
}
]
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"magisterium:glyphic_ignition_page",
"magisterium:conflagrate_page",
"magisterium:illusory_wall_page",
"magisterium:unstable_charge_page",
"magisterium:cold_snap_page",
"magisterium:arcane_lift_page",
"magisterium:dispel_magic_page"
Expand Down

0 comments on commit e4cfe5a

Please sign in to comment.