PictureSign 2.0.0-beta.2 - 1.20.2
- Ported to 1.20.2 - Updated MidnightLib & VideoLib - No more crashes when VLC is not installed - Video now gets properly cleared on disconnect - Fixed the helper screen not saving changes permanently
@@ -3,20 +3,20 @@ org.gradle.jvmargs=-Xmx1G
|
|||||||
|
|
||||||
# Fabric Properties
|
# Fabric Properties
|
||||||
# check these on https://fabricmc.net/use
|
# check these on https://fabricmc.net/use
|
||||||
minecraft_version=1.20.1
|
minecraft_version=1.20.2
|
||||||
yarn_mappings=1.20.1+build.2
|
yarn_mappings=1.20.2+build.4
|
||||||
loader_version=0.14.21
|
loader_version=0.14.24
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 2.0.0-beta.1
|
mod_version = 2.0.0-beta.2
|
||||||
maven_group = eu.midnightdust
|
maven_group = eu.midnightdust
|
||||||
archives_base_name = picturesign
|
archives_base_name = picturesign
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
||||||
fabric_version=0.83.1+1.20.1
|
fabric_version=0.90.7+1.20.2
|
||||||
midnightlib_version=1.4.1-fabric
|
midnightlib_version=1.5.0-fabric
|
||||||
videolib_version=0.2.1-mnd
|
videolib_version=0.2.2-mnd
|
||||||
vlcj_version=4.8.2
|
vlcj_version=4.8.2
|
||||||
|
|
||||||
iris_version=1.6.4+1.20
|
iris_version=1.6.4+1.20
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import net.fabricmc.api.ClientModInitializer;
|
|||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientBlockEntityEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientBlockEntityEvents;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
|
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
|
||||||
import net.fabricmc.fabric.api.client.networking.v1.ClientLoginConnectionEvents;
|
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
|
||||||
import net.minecraft.block.entity.SignBlockEntity;
|
import net.minecraft.block.entity.SignBlockEntity;
|
||||||
import net.minecraft.client.option.KeyBinding;
|
import net.minecraft.client.option.KeyBinding;
|
||||||
import net.minecraft.client.util.InputUtil;
|
import net.minecraft.client.util.InputUtil;
|
||||||
@@ -21,6 +21,7 @@ import org.lwjgl.glfw.GLFW;
|
|||||||
public class PictureSignClient implements ClientModInitializer {
|
public class PictureSignClient implements ClientModInitializer {
|
||||||
public static Logger LOGGER = LogManager.getLogger("PictureSign");
|
public static Logger LOGGER = LogManager.getLogger("PictureSign");
|
||||||
public static String MOD_ID = "picturesign";
|
public static String MOD_ID = "picturesign";
|
||||||
|
public static final boolean hasVideoLib = PlatformFunctions.isModLoaded("videolib");
|
||||||
public static String[] clipboard = new String[4];
|
public static String[] clipboard = new String[4];
|
||||||
public static final KeyBinding BINDING_COPY_SIGN = new KeyBinding("key."+MOD_ID+".copy_sign",
|
public static final KeyBinding BINDING_COPY_SIGN = new KeyBinding("key."+MOD_ID+".copy_sign",
|
||||||
InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_U, "key.categories."+MOD_ID);
|
InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_U, "key.categories."+MOD_ID);
|
||||||
@@ -29,14 +30,11 @@ public class PictureSignClient implements ClientModInitializer {
|
|||||||
PictureSignConfig.init(MOD_ID, PictureSignConfig.class);
|
PictureSignConfig.init(MOD_ID, PictureSignConfig.class);
|
||||||
|
|
||||||
KeyBindingHelper.registerKeyBinding(BINDING_COPY_SIGN);
|
KeyBindingHelper.registerKeyBinding(BINDING_COPY_SIGN);
|
||||||
ClientLoginConnectionEvents.DISCONNECT.register((handler, client) -> {
|
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> {
|
||||||
if (PlatformFunctions.isModLoaded("videolib")) {
|
if (hasVideoLib) VideoHandler.closeAll();
|
||||||
VideoHandler.videoPlayers.forEach(VideoHandler::closePlayer);
|
|
||||||
VideoHandler.playedOnce.clear();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.register((blockEntity, world) -> {
|
ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.register((blockEntity, world) -> {
|
||||||
if (PlatformFunctions.isModLoaded("videolib")) {
|
if (hasVideoLib) {
|
||||||
BlockPos pos = blockEntity.getPos();
|
BlockPos pos = blockEntity.getPos();
|
||||||
Identifier videoId = new Identifier(MOD_ID, pos.getX() + "_" + pos.getY() + "_" + pos.getZ()+"_f");
|
Identifier videoId = new Identifier(MOD_ID, pos.getX() + "_" + pos.getY() + "_" + pos.getZ()+"_f");
|
||||||
VideoHandler.closePlayer(videoId);
|
VideoHandler.closePlayer(videoId);
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package eu.midnightdust.picturesign.mixin;
|
package eu.midnightdust.picturesign.mixin;
|
||||||
|
|
||||||
import eu.midnightdust.lib.util.screen.TexturedOverlayButtonWidget;
|
|
||||||
import eu.midnightdust.picturesign.PictureSignClient;
|
import eu.midnightdust.picturesign.PictureSignClient;
|
||||||
import eu.midnightdust.picturesign.config.PictureSignConfig;
|
import eu.midnightdust.picturesign.config.PictureSignConfig;
|
||||||
import eu.midnightdust.picturesign.screen.PictureSignHelperScreen;
|
import eu.midnightdust.picturesign.screen.PictureSignHelperScreen;
|
||||||
import net.minecraft.block.entity.SignBlockEntity;
|
import net.minecraft.block.entity.SignBlockEntity;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen;
|
import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen;
|
||||||
|
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
@@ -22,9 +22,9 @@ import static eu.midnightdust.picturesign.PictureSignClient.MOD_ID;
|
|||||||
|
|
||||||
@Mixin(AbstractSignEditScreen.class)
|
@Mixin(AbstractSignEditScreen.class)
|
||||||
public abstract class MixinSignEditScreen extends Screen {
|
public abstract class MixinSignEditScreen extends Screen {
|
||||||
private static final Identifier PICTURESIGN_ICON_TEXTURE = new Identifier(MOD_ID,"textures/gui/picturesign_button.png");
|
private static final Identifier PICTURESIGN_ICON_TEXTURE = new Identifier(MOD_ID,"icon/picturesign");
|
||||||
private static final Identifier CLIPBOARD_ICON_TEXTURE = new Identifier(MOD_ID,"textures/gui/clipboard_button.png");
|
private static final Identifier CLIPBOARD_ICON_TEXTURE = new Identifier(MOD_ID,"icon/clipboard");
|
||||||
private static final Identifier TRASHBIN_ICON_TEXTURE = new Identifier(MOD_ID,"textures/gui/trashbin_button.png");
|
private static final Identifier TRASHBIN_ICON_TEXTURE = new Identifier(MOD_ID,"icon/trashbin");
|
||||||
@Shadow @Final private SignBlockEntity blockEntity;
|
@Shadow @Final private SignBlockEntity blockEntity;
|
||||||
|
|
||||||
@Shadow @Final private String[] messages;
|
@Shadow @Final private String[] messages;
|
||||||
@@ -38,27 +38,35 @@ public abstract class MixinSignEditScreen extends Screen {
|
|||||||
|
|
||||||
@Inject(at = @At("TAIL"),method = "init")
|
@Inject(at = @At("TAIL"),method = "init")
|
||||||
private void picturesign$init(CallbackInfo ci) {
|
private void picturesign$init(CallbackInfo ci) {
|
||||||
if (PictureSignClient.clipboard != null && PictureSignClient.clipboard[0] != null)
|
if (PictureSignClient.clipboard != null && PictureSignClient.clipboard[0] != null) {
|
||||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width - 84, this.height - 40, 20, 20, 0, 0, 20, CLIPBOARD_ICON_TEXTURE, 32, 64, (buttonWidget) -> {
|
TextIconButtonWidget clipboardBuilder = TextIconButtonWidget.builder(Text.empty(), (buttonWidget) -> {
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
messages[i] = PictureSignClient.clipboard[i];
|
messages[i] = PictureSignClient.clipboard[i];
|
||||||
int finalI = i;
|
int finalI = i;
|
||||||
blockEntity.changeText(changer -> changer.withMessage(finalI, Text.of(messages[finalI])), front);
|
blockEntity.changeText(changer -> changer.withMessage(finalI, Text.of(messages[finalI])), front);
|
||||||
}
|
}
|
||||||
}, Text.empty()));
|
}, true).texture(CLIPBOARD_ICON_TEXTURE, 16, 16).dimension(20, 20).build();
|
||||||
if (PictureSignConfig.helperUi)
|
clipboardBuilder.setPosition(this.width - 84, this.height - 40);
|
||||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width - 62, this.height - 40, 20, 20, 0, 0, 20, TRASHBIN_ICON_TEXTURE, 32, 64, (buttonWidget) -> {
|
this.addDrawableChild(clipboardBuilder);
|
||||||
|
}
|
||||||
|
if (PictureSignConfig.helperUi) {
|
||||||
|
TextIconButtonWidget trashbinBuilder = TextIconButtonWidget.builder(Text.empty(), (buttonWidget) -> {
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
messages[i] = "";
|
messages[i] = "";
|
||||||
int finalI = i;
|
int finalI = i;
|
||||||
blockEntity.changeText(changer -> changer.withMessage(finalI, Text.empty()), front);
|
blockEntity.changeText(changer -> changer.withMessage(finalI, Text.empty()), front);
|
||||||
}
|
}
|
||||||
}, Text.empty()));
|
}, true).texture(TRASHBIN_ICON_TEXTURE, 16, 16).dimension(20, 20).build();
|
||||||
if (PictureSignConfig.helperUi)
|
trashbinBuilder.setPosition(this.width - 62, this.height - 40);
|
||||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width - 40, this.height - 40, 20, 20, 0, 0, 20, PICTURESIGN_ICON_TEXTURE, 32, 64, (buttonWidget) -> {
|
this.addDrawableChild(trashbinBuilder);
|
||||||
|
|
||||||
|
TextIconButtonWidget picturesignBuilder = TextIconButtonWidget.builder(Text.empty(), (buttonWidget) -> {
|
||||||
switchScreen = true;
|
switchScreen = true;
|
||||||
Objects.requireNonNull(client).setScreen(new PictureSignHelperScreen(this.blockEntity, front, false));
|
Objects.requireNonNull(client).setScreen(new PictureSignHelperScreen(this.blockEntity, front, false));
|
||||||
}, Text.empty()));
|
}, true).texture(PICTURESIGN_ICON_TEXTURE, 16, 16).dimension(20, 20).build();
|
||||||
|
picturesignBuilder.setPosition(this.width - 40, this.height - 40);
|
||||||
|
this.addDrawableChild(picturesignBuilder);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@Inject(at = @At("HEAD"), method = "removed", cancellable = true)
|
@Inject(at = @At("HEAD"), method = "removed", cancellable = true)
|
||||||
private void picturesign$removed(CallbackInfo ci) {
|
private void picturesign$removed(CallbackInfo ci) {
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class PictureSignRenderer {
|
|||||||
});
|
});
|
||||||
if (!isSafeUrl && !url.startsWith("https://youtu.be/") && !url.startsWith("https://youtube.com/") && !url.startsWith("https://www.youtube.com/")) return;
|
if (!isSafeUrl && !url.startsWith("https://youtu.be/") && !url.startsWith("https://youtube.com/") && !url.startsWith("https://www.youtube.com/")) return;
|
||||||
}
|
}
|
||||||
if ((!PictureSignConfig.enableVideoSigns || !PlatformFunctions.isModLoaded("videolib")) && !PictureSignType.isType(signBlockEntity, PictureSignType.PICTURE, front)) return;
|
if ((!PictureSignConfig.enableVideoSigns || !PictureSignClient.hasVideoLib) && !PictureSignType.isType(signBlockEntity, PictureSignType.PICTURE, front)) return;
|
||||||
if (url.startsWith("https://youtube.com/") || url.startsWith("https://www.youtube.com/watch?v=") || url.startsWith("https://youtu.be/")) {
|
if (url.startsWith("https://youtube.com/") || url.startsWith("https://www.youtube.com/watch?v=") || url.startsWith("https://youtu.be/")) {
|
||||||
url = url.replace("https://www.", "https://");
|
url = url.replace("https://www.", "https://");
|
||||||
url = url.replace("youtube.com/watch?v=", PictureSignConfig.invidiousInstance.replace("https://", "").replace("/", "")+"/latest_version?id=");
|
url = url.replace("youtube.com/watch?v=", PictureSignConfig.invidiousInstance.replace("https://", "").replace("/", "")+"/latest_version?id=");
|
||||||
@@ -65,7 +65,7 @@ public class PictureSignRenderer {
|
|||||||
|| (world.getBlockState(pos.up()).getBlock().equals(Blocks.REDSTONE_TORCH) || world.getBlockState(pos.up()).getBlock().equals(Blocks.REDSTONE_WALL_TORCH))
|
|| (world.getBlockState(pos.up()).getBlock().equals(Blocks.REDSTONE_TORCH) || world.getBlockState(pos.up()).getBlock().equals(Blocks.REDSTONE_WALL_TORCH))
|
||||||
&& world.getBlockState(pos.up()).get(Properties.LIT).equals(false)))
|
&& world.getBlockState(pos.up()).get(Properties.LIT).equals(false)))
|
||||||
{
|
{
|
||||||
VideoHandler.closePlayer(videoId);
|
if (PictureSignClient.hasVideoLib) VideoHandler.closePlayer(videoId);
|
||||||
PictureURLUtils.cachedJsonData.remove(url);
|
PictureURLUtils.cachedJsonData.remove(url);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package eu.midnightdust.picturesign.screen;
|
package eu.midnightdust.picturesign.screen;
|
||||||
|
|
||||||
import eu.midnightdust.lib.util.screen.TexturedOverlayButtonWidget;
|
|
||||||
import eu.midnightdust.picturesign.PictureSignClient;
|
import eu.midnightdust.picturesign.PictureSignClient;
|
||||||
import eu.midnightdust.picturesign.config.PictureSignConfig;
|
import eu.midnightdust.picturesign.config.PictureSignConfig;
|
||||||
import eu.midnightdust.picturesign.util.PictureSignType;
|
import eu.midnightdust.picturesign.util.PictureSignType;
|
||||||
@@ -15,6 +14,7 @@ import net.minecraft.client.gui.screen.ingame.SignEditScreen;
|
|||||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||||
import net.minecraft.client.gui.widget.SliderWidget;
|
import net.minecraft.client.gui.widget.SliderWidget;
|
||||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||||
|
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
||||||
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
||||||
import net.minecraft.client.render.*;
|
import net.minecraft.client.render.*;
|
||||||
import net.minecraft.client.render.block.entity.SignBlockEntityRenderer;
|
import net.minecraft.client.render.block.entity.SignBlockEntityRenderer;
|
||||||
@@ -36,9 +36,9 @@ import java.util.stream.IntStream;
|
|||||||
import static eu.midnightdust.picturesign.PictureSignClient.MOD_ID;
|
import static eu.midnightdust.picturesign.PictureSignClient.MOD_ID;
|
||||||
|
|
||||||
public class PictureSignHelperScreen extends Screen {
|
public class PictureSignHelperScreen extends Screen {
|
||||||
private static final Identifier TEXTSIGN_ICON_TEXTURE = new Identifier(MOD_ID,"textures/gui/textsign_button.png");
|
private static final Identifier TEXTSIGN_ICON_TEXTURE = new Identifier(MOD_ID,"icon/textsign");
|
||||||
private static final Identifier CLIPBOARD_ICON_TEXTURE = new Identifier(MOD_ID,"textures/gui/clipboard_button.png");
|
private static final Identifier CLIPBOARD_ICON_TEXTURE = new Identifier(MOD_ID,"icon/clipboard");
|
||||||
private static final Identifier TRASHBIN_ICON_TEXTURE = new Identifier(MOD_ID,"textures/gui/trashbin_button.png");
|
private static final Identifier TRASHBIN_ICON_TEXTURE = new Identifier(MOD_ID,"icon/trashbin");
|
||||||
private final SignBlockEntity sign;
|
private final SignBlockEntity sign;
|
||||||
private SignBlockEntityRenderer.SignModel model;
|
private SignBlockEntityRenderer.SignModel model;
|
||||||
protected String[] text;
|
protected String[] text;
|
||||||
@@ -72,8 +72,8 @@ public class PictureSignHelperScreen extends Screen {
|
|||||||
}
|
}
|
||||||
this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, (button) -> this.finishEditing()).dimensions(this.width / 2 - 100, this.height / 4 + 120, 200, 20).build());
|
this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, (button) -> this.finishEditing()).dimensions(this.width / 2 - 100, this.height / 4 + 120, 200, 20).build());
|
||||||
|
|
||||||
if (PictureSignClient.clipboard != null && PictureSignClient.clipboard[0] != null)
|
if (PictureSignClient.clipboard != null && PictureSignClient.clipboard[0] != null) {
|
||||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width - 84, this.height - 40, 20, 20, 0, 0, 20, CLIPBOARD_ICON_TEXTURE, 32, 64, (buttonWidget) -> {
|
TextIconButtonWidget clipboardBuilder = TextIconButtonWidget.builder(Text.empty(), (buttonWidget) -> {
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
text[i] = PictureSignClient.clipboard[i];
|
text[i] = PictureSignClient.clipboard[i];
|
||||||
int finalI = i;
|
int finalI = i;
|
||||||
@@ -81,9 +81,12 @@ public class PictureSignHelperScreen extends Screen {
|
|||||||
}
|
}
|
||||||
assert client != null;
|
assert client != null;
|
||||||
client.setScreen(this);
|
client.setScreen(this);
|
||||||
}, Text.of("")));
|
}, true).texture(CLIPBOARD_ICON_TEXTURE, 16, 16).dimension(20, 20).build();
|
||||||
if (PictureSignConfig.helperUi)
|
clipboardBuilder.setPosition(this.width - 84, this.height - 40);
|
||||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width - 62, this.height - 40, 20, 20, 0, 0, 20, TRASHBIN_ICON_TEXTURE, 32, 64, (buttonWidget) -> {
|
this.addDrawableChild(clipboardBuilder);
|
||||||
|
}
|
||||||
|
if (PictureSignConfig.helperUi) {
|
||||||
|
TextIconButtonWidget trashbinBuilder = TextIconButtonWidget.builder(Text.empty(), (buttonWidget) -> {
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
text[i] = "";
|
text[i] = "";
|
||||||
int finalI = i;
|
int finalI = i;
|
||||||
@@ -91,11 +94,17 @@ public class PictureSignHelperScreen extends Screen {
|
|||||||
}
|
}
|
||||||
assert client != null;
|
assert client != null;
|
||||||
client.setScreen(this);
|
client.setScreen(this);
|
||||||
}, Text.of("")));
|
}, true).texture(TRASHBIN_ICON_TEXTURE, 16, 16).dimension(20, 20).build();
|
||||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width - 40, this.height - 40, 20, 20, 0, 0, 20, TEXTSIGN_ICON_TEXTURE, 32, 64, (buttonWidget) -> {
|
trashbinBuilder.setPosition(this.width - 62, this.height - 40);
|
||||||
switchScreen = true;
|
this.addDrawableChild(trashbinBuilder);
|
||||||
Objects.requireNonNull(client).setScreen(isHanging ? new HangingSignEditScreen(this.sign, false, front) : new SignEditScreen(this.sign, front, false));
|
|
||||||
}, Text.of("")));
|
TextIconButtonWidget textsignBuilder = TextIconButtonWidget.builder(Text.empty(), (buttonWidget) -> {
|
||||||
|
switchScreen = true;
|
||||||
|
Objects.requireNonNull(client).setScreen(isHanging ? new HangingSignEditScreen(this.sign, false, front) : new SignEditScreen(this.sign, front, false));
|
||||||
|
}, true).texture(TEXTSIGN_ICON_TEXTURE, 16, 16).dimension(20, 20).build();
|
||||||
|
textsignBuilder.setPosition(this.width - 40, this.height - 40);
|
||||||
|
this.addDrawableChild(textsignBuilder);
|
||||||
|
}
|
||||||
if (text[0].startsWith("!VS:")) pictureSignType = PictureSignType.VIDEO;
|
if (text[0].startsWith("!VS:")) pictureSignType = PictureSignType.VIDEO;
|
||||||
if (text[0].startsWith("!LS:")) pictureSignType = PictureSignType.LOOPED_VIDEO;
|
if (text[0].startsWith("!LS:")) pictureSignType = PictureSignType.LOOPED_VIDEO;
|
||||||
this.addDrawableChild(ButtonWidget.builder(Text.of(text[0].startsWith("!PS:") ? "Image" : (text[0].startsWith("!VS:") ? "Video" : "Loop")), (buttonWidget) -> {
|
this.addDrawableChild(ButtonWidget.builder(Text.of(text[0].startsWith("!PS:") ? "Image" : (text[0].startsWith("!VS:") ? "Video" : "Loop")), (buttonWidget) -> {
|
||||||
@@ -215,6 +224,11 @@ public class PictureSignHelperScreen extends Screen {
|
|||||||
this.changedListener = changedListener;
|
this.changedListener = changedListener;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void finishEditing() {
|
||||||
|
assert this.client != null;
|
||||||
|
switchScreen = false;
|
||||||
|
this.client.setScreen(null);
|
||||||
|
}
|
||||||
public void removed() {
|
public void removed() {
|
||||||
if (this.client == null || switchScreen) return;
|
if (this.client == null || switchScreen) return;
|
||||||
ClientPlayNetworkHandler clientPlayNetworkHandler = this.client.getNetworkHandler();
|
ClientPlayNetworkHandler clientPlayNetworkHandler = this.client.getNetworkHandler();
|
||||||
@@ -258,15 +272,9 @@ public class PictureSignHelperScreen extends Screen {
|
|||||||
this.finishEditing();
|
this.finishEditing();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void finishEditing() {
|
|
||||||
sign.markDirty();
|
|
||||||
assert this.client != null;
|
|
||||||
this.client.setScreen(null);
|
|
||||||
}
|
|
||||||
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
|
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
|
||||||
if (this.client == null) return;
|
if (this.client == null) return;
|
||||||
DiffuseLighting.disableGuiDepthLighting();
|
DiffuseLighting.disableGuiDepthLighting();
|
||||||
this.renderBackground(context);
|
|
||||||
context.drawTextWithShadow(textRenderer, Text.of("Link" +
|
context.drawTextWithShadow(textRenderer, Text.of("Link" +
|
||||||
(PictureSignConfig.safeMode ? (pictureSignType.equals(PictureSignType.PICTURE) ? " (imgur.com/imgbb.com/iili.io/pictshare.net)" : " (youtube.com/youtu.be/vimeo.com)") : "")),
|
(PictureSignConfig.safeMode ? (pictureSignType.equals(PictureSignType.PICTURE) ? " (imgur.com/imgbb.com/iili.io/pictshare.net)" : " (youtube.com/youtu.be/vimeo.com)") : "")),
|
||||||
this.width / 2 - 175, this.height / 5 + 3, -8816268);
|
this.width / 2 - 175, this.height / 5 + 3, -8816268);
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ public class VideoHandler {
|
|||||||
videoPlayers.remove(id);
|
videoPlayers.remove(id);
|
||||||
playedOnce.remove(id);
|
playedOnce.remove(id);
|
||||||
}
|
}
|
||||||
|
public static void closeAll() {
|
||||||
|
try {videoManager.close();} catch (Exception ignored) {}
|
||||||
|
videoPlayers.clear();
|
||||||
|
playedOnce.clear();
|
||||||
|
}
|
||||||
public static void stop(Identifier id) {
|
public static void stop(Identifier id) {
|
||||||
videoManager.getOrCreate(id).getControlsInterface().stop();
|
videoManager.getOrCreate(id).getControlsInterface().stop();
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 762 B |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |