Skip to content

Commit

Permalink
Make game launch
Browse files Browse the repository at this point in the history
  • Loading branch information
samolego committed May 8, 2024
1 parent 7f3841e commit ae7adde
Show file tree
Hide file tree
Showing 17 changed files with 198 additions and 176 deletions.
25 changes: 17 additions & 8 deletions src/main/java/org/samo_lego/fabrictailor/FabricTailor.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.fabricmc.api.EnvType;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.ServerConfigurationConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
Expand All @@ -14,13 +15,14 @@
import org.samo_lego.fabrictailor.compatibility.CarpetFunctions;
import org.samo_lego.fabrictailor.config.TailorConfig;
import org.samo_lego.fabrictailor.network.NetworkHandler;
import org.samo_lego.fabrictailor.network.payload.DefaultSkinPayload;
import org.samo_lego.fabrictailor.network.payload.HDSkinPayload;
import org.samo_lego.fabrictailor.network.payload.VanillaSkinPayload;

import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import static org.samo_lego.fabrictailor.network.SkinPackets.*;

public class FabricTailor implements ModInitializer {

private static final Logger LOGGER = LogManager.getLogger();
Expand All @@ -29,6 +31,10 @@ public class FabricTailor implements ModInitializer {
public static File configFile;
public static final ExecutorService THREADPOOL = Executors.newCachedThreadPool();

public static void errorLog(String error) {
LOGGER.error("[FabricTailor] An error occurred: {}", error);
}

@Override
public void onInitialize() {
CommandRegistrationCallback.EVENT.register((dispatcher, context, selection) -> {
Expand All @@ -47,14 +53,17 @@ public void onInitialize() {


ServerPlayConnectionEvents.INIT.register(NetworkHandler::onInit);

ServerConfigurationConnectionEvents.CONFIGURE.register(NetworkHandler::onConfigured);
ServerPlayNetworking.registerGlobalReceiver(FABRICTAILOR_VANILLA_CHANGE, NetworkHandler::changeVanillaSkinPacket);
ServerPlayNetworking.registerGlobalReceiver(FABRICTAILOR_HD_CHANGE, NetworkHandler::changeHDSkinPacket);
ServerPlayNetworking.registerGlobalReceiver(FABRICTAILOR_DEFAULT_SKIN, NetworkHandler::defaultSkinPacket);
}

public static void errorLog(String error) {
LOGGER.error("[FabricTailor] An error occurred: " + error);
PayloadTypeRegistry.playC2S().register(VanillaSkinPayload.TYPE, VanillaSkinPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(VanillaSkinPayload.TYPE, NetworkHandler::changeVanillaSkinPacket);

PayloadTypeRegistry.playC2S().register(HDSkinPayload.TYPE, HDSkinPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(HDSkinPayload.TYPE, NetworkHandler::changeHDSkinPacket);

PayloadTypeRegistry.playC2S().register(DefaultSkinPayload.TYPE, DefaultSkinPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(DefaultSkinPayload.TYPE, NetworkHandler::defaultSkinPacket);
}

public static void reloadConfig() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.fabricmc.fabric.api.client.networking.v1.ClientConfigurationNetworking;
import net.fabricmc.fabric.api.client.networking.v1.ClientLoginConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.ChatFormatting;
import net.minecraft.client.KeyMapping;
import org.lwjgl.glfw.GLFW;
import org.samo_lego.fabrictailor.client.screen.SkinChangeScreen;
import org.samo_lego.fabrictailor.network.SkinPackets;
import org.samo_lego.fabrictailor.network.payload.FabricTailorHelloPayload;
import org.samo_lego.fabrictailor.util.TextTranslations;

/**
Expand Down Expand Up @@ -61,9 +62,10 @@ public void onInitializeClient() {
forceOpen = false;
});

ClientConfigurationNetworking.registerGlobalReceiver(SkinPackets.FT_HELLO, (client, handler, buf, responseSender) -> {
PayloadTypeRegistry.configurationS2C().register(FabricTailorHelloPayload.TYPE, FabricTailorHelloPayload.CODEC);
ClientConfigurationNetworking.registerGlobalReceiver(FabricTailorHelloPayload.TYPE, (payload, context) -> {
TAILORED_SERVER = true;
ALLOW_DEFAULT_SKIN = buf.readBoolean();
ALLOW_DEFAULT_SKIN = payload.allowSkinButton();
});
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
package org.samo_lego.fabrictailor.client.screen;

import com.mojang.authlib.properties.PropertyMap;
import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.ChatFormatting;
import net.minecraft.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.Checkbox;
Expand All @@ -19,12 +15,14 @@
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.advancements.AdvancementsScreen;
import net.minecraft.client.gui.screens.inventory.InventoryScreen;
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import org.joml.Quaternionf;
import org.samo_lego.fabrictailor.casts.TailoredPlayer;
import org.samo_lego.fabrictailor.client.screen.tabs.*;
import org.samo_lego.fabrictailor.client.screen.tabs.CapeTab;
import org.samo_lego.fabrictailor.client.screen.tabs.LocalSkinTab;
import org.samo_lego.fabrictailor.client.screen.tabs.PlayerSkinTab;
import org.samo_lego.fabrictailor.client.screen.tabs.SkinTabType;
import org.samo_lego.fabrictailor.client.screen.tabs.UrlSkinTab;
import org.samo_lego.fabrictailor.mixin.client.AAbstractClientPlayer;
import org.samo_lego.fabrictailor.util.TextTranslations;

Expand Down Expand Up @@ -164,7 +162,7 @@ private void applyNewSkin() {
final var packetInfo = this.selectedTab.getSkinChangePacket(minecraft.player, skinInput.getValue(), this.skinModelCheckbox.selected());
packetInfo.ifPresent(packet -> {
if (TAILORED_SERVER) {
ClientPlayNetworking.send(packet.getFirst(), packet.getSecond());
ClientPlayNetworking.send(packet);
} else {
// Change skin clientside only todo: reload skin
PropertyMap map = ((AAbstractClientPlayer) this.minecraft.player).ft_getPlayerInfo().getProfile().getProperties();
Expand Down Expand Up @@ -226,54 +224,34 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta)


if (this.selectedTab.showModelBackwards()) {
int x = startX + 64;
int y = startY + 120;
int size = 50;
float mousex = -(((float) width / 2) - 75 - mouseX);
float mousey = ((float) height / 2) - mouseY;
var entity = minecraft.player;
var player = minecraft.player;
float f = (float) Math.atan(mousex / 40.0f);
float g = (float) Math.atan(mousey / 40.0f);
PoseStack poseStack = RenderSystem.getModelViewStack();
poseStack.pushPose();
poseStack.translate(x, y, 1050.0);
poseStack.scale(1.0f, 1.0f, -1.0f);
RenderSystem.applyModelViewMatrix();
PoseStack poseStack2 = new PoseStack();
poseStack2.translate(0.0, 0.0, 1000.0);
poseStack2.scale(size, size, size);
Quaternionf quaternion = Axis.ZP.rotationDegrees(180.0f);
Quaternionf quaternion2 = Axis.XP.rotationDegrees(g * 20.0f);
quaternion.mul(quaternion2);
poseStack2.mulPose(quaternion);
float h = entity.yBodyRot;
float i = entity.getYRot();
float j = entity.getXRot();
float k = entity.yHeadRotO;
float l = entity.yHeadRot;
entity.yBodyRot = f * 20.0f;
entity.setYRot(f * 40.0f);
entity.setXRot(-g * 20.0f);
entity.yHeadRot = entity.getYRot();
entity.yHeadRotO = entity.getYRot();
Lighting.setupForEntityInInventory();
EntityRenderDispatcher entityRenderDispatcher = Minecraft.getInstance().getEntityRenderDispatcher();
quaternion2.conjugate();
entityRenderDispatcher.overrideCameraOrientation(quaternion2);
entityRenderDispatcher.setRenderShadow(false);
var bufferSource = Minecraft.getInstance().renderBuffers().bufferSource();
RenderSystem.runAsFancy(() -> entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 0.0f, 1.0f, poseStack2, bufferSource, 0xF000F0));
bufferSource.endBatch();
entityRenderDispatcher.setRenderShadow(true);
entity.yBodyRot = h;
entity.setYRot(i);
entity.setXRot(j);
entity.yHeadRotO = k;
entity.yHeadRot = l;
poseStack.popPose();
RenderSystem.applyModelViewMatrix();
Lighting.setupFor3DItems();

float yBodyRot = player.yBodyRot;
float yRot = player.getYRot();
float xRot = player.getXRot();
float yHeadRotO = player.yHeadRotO;
float yHeadRot = player.yHeadRot;

player.yBodyRot = f * 20.0f;
player.setYRot(f * 40.0f);
player.setXRot(-g * 20.0f);
player.yHeadRot = player.getYRot();
player.yHeadRotO = player.getYRot();


int x = this.startX + 24;
int y = this.startY - 76;
InventoryScreen.renderEntityInInventoryFollowsMouse(guiGraphics, x, y, x + 75, y + 208, 48, 1.0f, mouseX + 2, mouseY - 16, this.minecraft.player);

player.yBodyRot = yBodyRot;
player.setYRot(yRot);
player.setXRot(xRot);
player.yHeadRotO = yHeadRotO;
player.yHeadRot = yHeadRot;
} else {
// Drawing Player
// Luckily vanilla code is available
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
package org.samo_lego.fabrictailor.client.screen.tabs;

import com.mojang.authlib.minecraft.MinecraftProfileTexture;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import org.samo_lego.fabrictailor.network.SkinPackets;
import org.samo_lego.fabrictailor.network.payload.HDSkinPayload;
import org.samo_lego.fabrictailor.util.TextTranslations;

import java.util.Optional;

import static org.samo_lego.fabrictailor.network.SkinPackets.FABRICTAILOR_HD_CHANGE;

public class CapeTab implements SkinTabType {

@Override
Expand All @@ -33,9 +29,10 @@ public ItemStack getIcon() {
}

@Override
public Optional<Pair<ResourceLocation, FriendlyByteBuf>> getSkinChangePacket(LocalPlayer player, String capeUrl, boolean useSlim) {
public Optional<CustomPacketPayload> getSkinChangePacket(LocalPlayer player, String capeUrl, boolean useSlim) {
var skinData = this.getExtendedProperty(player, MinecraftProfileTexture.Type.CAPE, capeUrl, null);
return Optional.of(new Pair<>(FABRICTAILOR_HD_CHANGE, SkinPackets.skin2ByteBuf(skinData)));

return Optional.of(new HDSkinPayload(skinData));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@
package org.samo_lego.fabrictailor.client.screen.tabs;

import com.mojang.authlib.properties.Property;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import org.samo_lego.fabrictailor.network.SkinPackets;
import org.samo_lego.fabrictailor.network.payload.VanillaSkinPayload;
import org.samo_lego.fabrictailor.util.SkinFetcher;
import org.samo_lego.fabrictailor.util.TextTranslations;

import java.util.Optional;

import static org.samo_lego.fabrictailor.network.SkinPackets.FABRICTAILOR_VANILLA_CHANGE;

public class LocalSkinTab implements SkinTabType {
private final MutableComponent TITLE;
private final MutableComponent DESCRIPTION;
Expand Down Expand Up @@ -43,12 +39,12 @@ public ItemStack getIcon() {
}

@Override
public Optional<Pair<ResourceLocation, FriendlyByteBuf>> getSkinChangePacket(LocalPlayer player, String filePath, boolean useSlim) {
public Optional<CustomPacketPayload> getSkinChangePacket(LocalPlayer player, String filePath, boolean useSlim) {
Property skinData = SkinFetcher.setSkinFromFile(filePath, useSlim);

if (skinData == null)
return Optional.empty();
return Optional.of(new Pair<>(FABRICTAILOR_VANILLA_CHANGE, SkinPackets.skin2ByteBuf(skinData)));
return Optional.of(new VanillaSkinPayload(skinData));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
package org.samo_lego.fabrictailor.client.screen.tabs;

import com.mojang.authlib.properties.Property;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.gui.screens.advancements.AdvancementTabType;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import org.samo_lego.fabrictailor.network.SkinPackets;
import org.samo_lego.fabrictailor.network.payload.VanillaSkinPayload;
import org.samo_lego.fabrictailor.util.SkinFetcher;
import org.samo_lego.fabrictailor.util.TextTranslations;

import java.util.Optional;

import static org.samo_lego.fabrictailor.network.SkinPackets.FABRICTAILOR_VANILLA_CHANGE;

public class PlayerSkinTab implements SkinTabType {

private final MutableComponent TITLE;
Expand Down Expand Up @@ -50,13 +46,13 @@ public boolean hasSkinModels() {
}

@Override
public Optional<Pair<ResourceLocation, FriendlyByteBuf>> getSkinChangePacket(LocalPlayer player, String playername, boolean _ignored) {
public Optional<CustomPacketPayload> getSkinChangePacket(LocalPlayer player, String playername, boolean _ignored) {
Property skinData = SkinFetcher.fetchSkinByName(playername);

if (skinData == null)
return Optional.empty();

return Optional.of(new Pair<>(FABRICTAILOR_VANILLA_CHANGE, SkinPackets.skin2ByteBuf(skinData)));
return Optional.of(new VanillaSkinPayload(skinData));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@
import com.google.gson.JsonParser;
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
import com.mojang.authlib.properties.Property;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.gui.screens.advancements.AdvancementTabType;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.world.item.ItemStack;
import org.samo_lego.fabrictailor.casts.TailoredPlayer;
import org.samo_lego.fabrictailor.mixin.client.AAbstractClientPlayer;
Expand All @@ -32,7 +30,7 @@ default boolean isSelected(int startX, int startY, int mouseX, int mouseY) {
return mouseX > startX && mouseX < startX + this.width && mouseY > startY && mouseY < startY + this.height;
}

Optional<Pair<ResourceLocation, FriendlyByteBuf>> getSkinChangePacket(LocalPlayer player, String param, boolean useSlim);
Optional<CustomPacketPayload> getSkinChangePacket(LocalPlayer player, String param, boolean useSlim);

default boolean hasSkinModels() {
return true;
Expand Down
Loading

0 comments on commit ae7adde

Please sign in to comment.