Skip to content

Commit

Permalink
1.19 and refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Jerozgen committed Jun 3, 2022
1 parent a2ac744 commit 9d17c25
Show file tree
Hide file tree
Showing 32 changed files with 183 additions and 408 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '0.10-SNAPSHOT'
id 'fabric-loom' version '0.12-SNAPSHOT'
id 'maven-publish'
}

Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.18.1
yarn_mappings=1.18.1+build.18
loader_version=0.12.12
minecraft_version=1.19-rc1
yarn_mappings=1.19-rc1+build.2
loader_version=0.14.6
# Mod Properties
mod_version=1.2.1
mod_version=1.2.2
maven_group=jerozgen
archives_base_name=language-reload
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.45.1+1.18
fabric_version=0.55.0+1.19
22 changes: 9 additions & 13 deletions src/main/java/jerozgen/languagereload/LanguageReload.java
Original file line number Diff line number Diff line change
@@ -1,47 +1,43 @@
package jerozgen.languagereload;

import jerozgen.languagereload.access.*;
import jerozgen.languagereload.mixin.*;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.advancement.AdvancementsScreen;
import net.minecraft.client.gui.screen.ingame.BookScreen;
import net.minecraft.resource.ResourceManager;
import net.minecraft.world.chunk.WorldChunk;

import java.util.concurrent.atomic.AtomicReferenceArray;

@Environment(EnvType.CLIENT)
public class LanguageReload {
public static void reloadLanguages(MinecraftClient client) {
// Reload language and search managers
ResourceManager resourceManager = client.getResourceManager();
var resourceManager = client.getResourceManager();
client.getLanguageManager().reload(resourceManager);
((IMinecraftClient) client).getSearchManager().reload(resourceManager);
((MinecraftClientAccessor) client).getSearchManager().reload(resourceManager);

// Update window title and chat
client.updateWindowTitle();
client.inGameHud.getChatHud().reset();

// Update book and advancements screens
if (client.currentScreen instanceof BookScreen bookScreen) {
((IBookScreen) bookScreen).clearCache();
((BookScreenAccessor) bookScreen).setCachedPageIndex(-1);
} else if (client.currentScreen instanceof AdvancementsScreen advancementsScreen) {
((IAdvancementsScreen) advancementsScreen).recreateWidgets();
}

// Update signs
if (client.world == null) return;
IClientChunkManager chunkManager = (IClientChunkManager) client.world.getChunkManager();
AtomicReferenceArray<WorldChunk> chunks = ((IClientChunkMap) chunkManager.getChunks()).getChunks();
var chunkManager = (ClientChunkManagerAccessor) client.world.getChunkManager();
var chunks = ((ClientChunkMapAccessor) chunkManager.getChunks()).getChunks();
for (int i = 0; i < chunks.length(); i++) {
WorldChunk chunk = chunks.get(i);
var chunk = chunks.get(i);
if (chunk == null) continue;
for (BlockEntity blockEntity : chunk.getBlockEntities().values()) {
for (var blockEntity : chunk.getBlockEntities().values()) {
if (!(blockEntity instanceof SignBlockEntity sign)) continue;
((ISignBlockEntity) sign).clearCache();
((SignBlockEntityAccessor) sign).setTextsBeingEdited(null);
}
}
}
Expand Down
9 changes: 0 additions & 9 deletions src/main/java/jerozgen/languagereload/access/IBookScreen.java

This file was deleted.

This file was deleted.

12 changes: 0 additions & 12 deletions src/main/java/jerozgen/languagereload/access/IClientChunkMap.java

This file was deleted.

10 changes: 0 additions & 10 deletions src/main/java/jerozgen/languagereload/access/ILanguageEntry.java

This file was deleted.

10 changes: 0 additions & 10 deletions src/main/java/jerozgen/languagereload/access/IMinecraftClient.java

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package jerozgen.languagereload.mixin;

import jerozgen.languagereload.access.IAdvancementWidget;
import jerozgen.languagereload.access.IAdvancementsTab;
import net.minecraft.advancement.Advancement;
import net.minecraft.client.MinecraftClient;
Expand All @@ -15,22 +14,22 @@
import java.util.Objects;

@Mixin(AdvancementTab.class)
public abstract class MixinAdvancementTab extends DrawableHelper implements IAdvancementsTab {
public abstract class AdvancementTabMixin extends DrawableHelper implements IAdvancementsTab {
@Shadow @Final private MinecraftClient client;
@Shadow @Final private Map<Advancement, AdvancementWidget> widgets;

@Override
public void recreateWidgets() {
widgets.replaceAll((advancement, widget) -> {
AdvancementWidget newWidget = new AdvancementWidget(
((IAdvancementWidget) widget).getTab(),
var newWidget = new AdvancementWidget(
((AdvancementWidgetAccessor) widget).getTab(),
client,
advancement,
Objects.requireNonNull(advancement.getDisplay())
);
newWidget.setProgress(((IAdvancementWidget) widget).getProgress());
((IAdvancementWidget) newWidget).setParent(((IAdvancementWidget) widget).getParent());
((IAdvancementWidget) newWidget).setChildren(((IAdvancementWidget) widget).getChildren());
newWidget.setProgress(((AdvancementWidgetAccessor) widget).getProgress());
((AdvancementWidgetAccessor) newWidget).setParent(((AdvancementWidgetAccessor) widget).getParent());
((AdvancementWidgetAccessor) newWidget).setChildren(((AdvancementWidgetAccessor) widget).getChildren());
return newWidget;
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,32 @@
package jerozgen.languagereload.access;
package jerozgen.languagereload.mixin;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.advancement.AdvancementProgress;
import net.minecraft.client.gui.screen.advancement.AdvancementTab;
import net.minecraft.client.gui.screen.advancement.AdvancementWidget;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.gen.Accessor;

import java.util.List;

@Environment(EnvType.CLIENT)
public interface IAdvancementWidget {
@Mixin(AdvancementWidget.class)
public interface AdvancementWidgetAccessor {
@Accessor
AdvancementTab getTab();

@Accessor
AdvancementProgress getProgress();

@Accessor
AdvancementWidget getParent();

@Accessor
void setParent(AdvancementWidget parent);

@Accessor
List<AdvancementWidget> getChildren();

@Mutable
@Accessor
void setChildren(List<AdvancementWidget> children);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@
import java.util.Map;

@Mixin(AdvancementsScreen.class)
public abstract class MixinAdvancementsScreen extends Screen implements ClientAdvancementManager.Listener, IAdvancementsScreen {
public abstract class AdvancementsScreenMixin extends Screen implements ClientAdvancementManager.Listener, IAdvancementsScreen {
@Shadow @Final private Map<Advancement, AdvancementTab> tabs;

protected MixinAdvancementsScreen(Text title) {
protected AdvancementsScreenMixin(Text title) {
super(title);
}

@Override
public void recreateWidgets() {
for (AdvancementTab tab : tabs.values()) {
((IAdvancementsTab) tab).recreateWidgets();
for (var advancementTab : tabs.values()) {
((IAdvancementsTab) advancementTab).recreateWidgets();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package jerozgen.languagereload.mixin;

import net.minecraft.client.gui.screen.ingame.BookScreen;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(BookScreen.class)
public interface BookScreenAccessor {
@Accessor
void setCachedPageIndex(int cachedPageIndex);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package jerozgen.languagereload.mixin;

import net.minecraft.client.world.ClientChunkManager;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(ClientChunkManager.class)
public interface ClientChunkManagerAccessor {
@Accessor
ClientChunkManager.ClientChunkMap getChunks();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package jerozgen.languagereload.mixin;

import net.minecraft.client.world.ClientChunkManager;
import net.minecraft.world.chunk.WorldChunk;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

import java.util.concurrent.atomic.AtomicReferenceArray;

@Mixin(ClientChunkManager.ClientChunkMap.class)
public interface ClientChunkMapAccessor {
@Accessor
AtomicReferenceArray<WorldChunk> getChunks();
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,13 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(GameOptions.class)
public abstract class MixinGameOptions implements IGameOptions {
public abstract class GameOptionsMixin implements IGameOptions {
@Shadow public String language;
String previousLanguage = "";

@Inject(
method = "accept(Lnet/minecraft/client/option/GameOptions$Visitor;)V",
at = @At("HEAD")
)
@Inject(method = "accept", at = @At("HEAD"))
private void onAccept(GameOptions.Visitor visitor, CallbackInfo ci) {
this.previousLanguage = visitor.visitString("previousLang", this.previousLanguage);
previousLanguage = visitor.visitString("previousLang", previousLanguage);
}

@Override
Expand All @@ -28,6 +25,6 @@ public String getPreviousLanguage() {

@Override
public void savePreviousLanguage() {
this.previousLanguage = language;
previousLanguage = language;
}
}
Loading

0 comments on commit 9d17c25

Please sign in to comment.