Skip to content

Commit

Permalink
Fixed dedicated server issues
Browse files Browse the repository at this point in the history
  • Loading branch information
stuin committed Jun 16, 2021
1 parent 4cf790f commit 7b35cac
Show file tree
Hide file tree
Showing 21 changed files with 153 additions and 139 deletions.
10 changes: 6 additions & 4 deletions src/main/java/modfest/lacrimis/ClientLacrimis.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package modfest.lacrimis;

import modfest.lacrimis.client.init.ClientModCrafting;
import modfest.lacrimis.client.init.ClientModNetworking;
import modfest.lacrimis.client.init.ClientModRenderers;
import modfest.lacrimis.init.*;
import net.minecraft.client.render.RenderLayer;
import net.fabricmc.api.ClientModInitializer;
Expand All @@ -15,9 +18,8 @@ public void onInitializeClient() {
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.infusionTable, RenderLayer.getCutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.tearLantern, RenderLayer.getCutout());

ModEntityTypes.registerClient();
ModCrafting.registerClient();
ModNetworking.registerClient();
ModParticles.registerClient();
ClientModRenderers.registerClient();
ClientModCrafting.registerClient();
ClientModNetworking.registerClient();
}
}
2 changes: 1 addition & 1 deletion src/main/java/modfest/lacrimis/Lacrimis.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class Lacrimis implements ModInitializer {
@Override
public void onInitialize() {
ModBlocks.register();
ModEntityTypes.register();
ModEntities.register();
ModItems.register();
ModCrafting.register();
ModNetworking.register();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public TearCollectorBlock(Settings settings) {

@Override
public BlockState getPlacementState(ItemPlacementContext ctx) {
return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection().getOpposite());
return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection());
}

public BlockState rotate(BlockState state, BlockRotation rotation) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package modfest.lacrimis.block.entity;

import modfest.lacrimis.init.ModEntityTypes;
import modfest.lacrimis.init.ModEntities;
import net.minecraft.block.BlockState;
import net.minecraft.entity.EntityType;
import net.minecraft.nbt.CompoundTag;
Expand All @@ -11,7 +11,7 @@ public class CombinerEntity extends SoulTankEntity {
public EntityType<?> type;

public CombinerEntity() {
super(ModEntityTypes.combiner, 0, 2);
super(ModEntities.combiner, 0, 2);
type = null;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package modfest.lacrimis.block.entity;

import modfest.lacrimis.block.DrainedCryingObsidianBlock;
import modfest.lacrimis.block.TearCollectorBlock;
import modfest.lacrimis.init.*;
import modfest.lacrimis.item.BottleOfTearsItem;
import modfest.lacrimis.util.DuctUtil;
Expand All @@ -19,7 +18,6 @@
import net.minecraft.util.math.Box;

import java.util.Optional;
import java.util.stream.IntStream;

import modfest.lacrimis.crafting.CrucibleRecipe;
import net.minecraft.util.math.Direction;
Expand All @@ -32,7 +30,7 @@ public class CrucibleEntity extends SoulTankEntity implements Tickable {
private Direction collector = null;

public CrucibleEntity() {
super(ModEntityTypes.crucible, 1000, 1);
super(ModEntities.crucible, 1000, 1);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import modfest.lacrimis.crafting.InfusionRecipe;
import modfest.lacrimis.init.ModCrafting;
import modfest.lacrimis.init.ModEntityTypes;
import modfest.lacrimis.init.ModEntities;
import modfest.lacrimis.init.ModParticles;
import modfest.lacrimis.util.DuctUtil;
import modfest.lacrimis.util.SoulTank;
Expand All @@ -27,7 +27,7 @@ public class InfusionTableEntity extends SoulTankEntity implements Tickable {
public boolean startCrafting = false;

public InfusionTableEntity() {
super(ModEntityTypes.infusionTable, 1000, 10);
super(ModEntities.infusionTable, 1000, 10);
getTank().setLimit(0);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
package modfest.lacrimis.block.entity;

import modfest.lacrimis.Lacrimis;
import modfest.lacrimis.init.ModEntityTypes;
import modfest.lacrimis.init.ModEntities;
import modfest.lacrimis.util.NetworksState;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.Pair;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;

Expand All @@ -22,7 +18,7 @@ public class NetworkLinkEntity extends BlockEntity {
private NetworksState state = null;

public NetworkLinkEntity() {
super(ModEntityTypes.networkLink);
super(ModEntities.networkLink);
}

public void setState(boolean on, float[] color, World world) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package modfest.lacrimis.block.entity;

import modfest.lacrimis.block.DrainedCryingObsidianBlock;
import modfest.lacrimis.init.ModEntityTypes;
import modfest.lacrimis.init.ModEntities;
import modfest.lacrimis.init.ModParticles;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
Expand All @@ -13,7 +13,7 @@
public class TearLanternEntity extends BlockEntity implements Tickable {

public TearLanternEntity() {
super(ModEntityTypes.tearLantern);
super(ModEntities.tearLantern);
}

@Override
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/modfest/lacrimis/client/init/ClientModCrafting.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package modfest.lacrimis.client.init;

import modfest.lacrimis.Lacrimis;
import modfest.lacrimis.compat.patchiouli.PageCrucible;
import modfest.lacrimis.compat.patchiouli.PageInfusion;
import modfest.lacrimis.crafting.CombinerScreen;
import modfest.lacrimis.crafting.CombinerScreenHandler;
import modfest.lacrimis.crafting.InfusionScreen;
import modfest.lacrimis.crafting.InfusionScreenHandler;
import modfest.lacrimis.init.ModCrafting;
import net.fabricmc.fabric.api.client.screen.ScreenProviderRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
import vazkii.patchouli.client.book.ClientBookRegistry;

public class ClientModCrafting {
public static void registerClient() {
if(MinecraftClient.getInstance().player != null) {
// Infusion GUI
ScreenProviderRegistry.INSTANCE.<InfusionScreenHandler>registerFactory(ModCrafting.INFUSION_SCREEN_ID,
container -> new InfusionScreen(container, MinecraftClient.getInstance().player.inventory, new TranslatableText(Lacrimis.MODID + ".gui.infusion")));
ScreenProviderRegistry.INSTANCE.<CombinerScreenHandler>registerFactory(ModCrafting.COMBINER_SCREEN_ID,
container -> new CombinerScreen(container, MinecraftClient.getInstance().player.inventory, new TranslatableText(Lacrimis.MODID + ".gui.combiner")));
}
// Patchouli pages
ClientBookRegistry.INSTANCE.pageTypes.put(new Identifier(Lacrimis.MODID, "crucible"), PageCrucible.class);
ClientBookRegistry.INSTANCE.pageTypes.put(new Identifier(Lacrimis.MODID, "infusion"), PageInfusion.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package modfest.lacrimis.client.init;

import io.netty.buffer.Unpooled;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World;

import static modfest.lacrimis.init.ModNetworking.*;

public class ClientModNetworking {

@Environment(EnvType.CLIENT)
public static void registerClient() {
ClientPlayNetworking.registerGlobalReceiver(CRUCIBLE_PARTICLES_ID, ClientModNetworking::handleCrucibleParticlesPacket);
}

//Client Crucible Particles
private static void handleCrucibleParticlesPacket(MinecraftClient client, ClientPlayNetworkHandler handler, PacketByteBuf buffer, PacketSender sender) {
double x = buffer.readDouble();
double y = buffer.readDouble();
double z = buffer.readDouble();

client.execute(() -> {
World world = client.world;
if(client.world != null) {
for(int i = 0; i < 10; i++) {
float angle = (float) (2 * Math.PI * world.random.nextFloat());
double dx = 0.1 * MathHelper.cos(angle);
double dz = 0.1 * MathHelper.sin(angle);
world.addParticle(ParticleTypes.ENCHANTED_HIT, true, x, y, z, dx, 0.05, dz);
}
}
});
}

public static void sendCombinerNullPacket(BlockPos pos) {
PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());
buf.writeBlockPos(pos);
ClientPlayNetworking.send(COMBINER_NULL_ID, buf);
}

public static void sendInfusionStartPacket(BlockPos pos) {
PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());
buf.writeBlockPos(pos);
ClientPlayNetworking.send(INFUSION_START_ID, buf);
}
}
37 changes: 37 additions & 0 deletions src/main/java/modfest/lacrimis/client/init/ClientModRenderers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package modfest.lacrimis.client.init;

import modfest.lacrimis.client.ObsidianTearFlyingParticle;
import modfest.lacrimis.client.PurpleMistParticle;
import modfest.lacrimis.client.render.block.CrucibleEntityRenderer;
import modfest.lacrimis.client.render.block.InfusionTableEntityRenderer;
import modfest.lacrimis.client.render.block.NetworkLinkEntityRenderer;
import modfest.lacrimis.client.render.entity.GhostEntityRenderer;
import modfest.lacrimis.client.render.entity.SoulShellRenderer;
import modfest.lacrimis.entity.TaintedPearlEntity;
import modfest.lacrimis.init.ModEntities;
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry;
import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry;
import net.minecraft.client.render.entity.FlyingItemEntityRenderer;

import static modfest.lacrimis.init.ModParticles.OBSIDIAN_TEAR_FLYING;
import static modfest.lacrimis.init.ModParticles.PURPLE_MIST;

public class ClientModRenderers {
public static void registerClient() {
EntityRendererRegistry.INSTANCE.register(ModEntities.ghost, (dispatcher, ctx) -> new GhostEntityRenderer(dispatcher));
EntityRendererRegistry.INSTANCE.register(ModEntities.soulShell, (dispatcher, ctx) -> new SoulShellRenderer(dispatcher));
EntityRendererRegistry.INSTANCE.register(ModEntities.taintedPearl, (dispatcher, ctx) -> new FlyingItemEntityRenderer<TaintedPearlEntity>(dispatcher, ctx.getItemRenderer()));

BlockEntityRendererRegistry.INSTANCE.register(ModEntities.crucible, CrucibleEntityRenderer::new);
BlockEntityRendererRegistry.INSTANCE.register(ModEntities.infusionTable, InfusionTableEntityRenderer::new);
BlockEntityRendererRegistry.INSTANCE.register(ModEntities.networkLink, NetworkLinkEntityRenderer::new);

CrucibleEntityRenderer.onInit();
InfusionTableEntityRenderer.onInit();


ParticleFactoryRegistry.getInstance().register(PURPLE_MIST, PurpleMistParticle.Factory::new);
ParticleFactoryRegistry.getInstance().register(OBSIDIAN_TEAR_FLYING, ObsidianTearFlyingParticle.Factory::new);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package modfest.lacrimis.crafting;

import modfest.lacrimis.client.init.ClientModNetworking;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.CraftingResultInventory;
Expand All @@ -19,7 +20,6 @@
import modfest.lacrimis.Lacrimis;
import modfest.lacrimis.block.entity.CombinerEntity;
import modfest.lacrimis.init.ModItems;
import modfest.lacrimis.init.ModNetworking;

public class CombinerScreenHandler extends ScreenHandler implements InventoryChangedListener {
private final CombinerEntity entity;
Expand Down Expand Up @@ -60,7 +60,7 @@ protected ItemStack onTakeOutput(ItemStack stack) {
entity.type = null;
output.setStack(0, ItemStack.EMPTY);
if(entity.getWorld() != null && entity.getWorld().isClient)
ModNetworking.sendCombinerNullPacket(entity.getPos());
ClientModNetworking.sendCombinerNullPacket(entity.getPos());
return stack;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package modfest.lacrimis.crafting;

import modfest.lacrimis.block.entity.InfusionTableEntity;
import modfest.lacrimis.init.ModNetworking;
import modfest.lacrimis.client.init.ClientModNetworking;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.entity.player.PlayerEntity;
Expand Down Expand Up @@ -51,7 +51,7 @@ public InfusionScreenHandler(int syncId, PlayerEntity player, InfusionTableEntit

public void startCrafting() {
entity.startCrafting = true;
ModNetworking.sendInfusionStartPacket(entity.getPos());
ClientModNetworking.sendInfusionStartPacket(entity.getPos());
}

@Override
Expand Down
10 changes: 2 additions & 8 deletions src/main/java/modfest/lacrimis/entity/SoulShellEntity.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package modfest.lacrimis.entity;

import com.google.common.collect.ImmutableList;
import modfest.lacrimis.Lacrimis;
import modfest.lacrimis.init.ModEntityTypes;
import modfest.lacrimis.init.ModEntities;
import modfest.lacrimis.init.ModItems;
import modfest.lacrimis.init.ModNetworking;
import net.minecraft.SharedConstants;
import net.minecraft.block.Block;
import net.minecraft.entity.*;
Expand All @@ -13,10 +11,7 @@
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.mob.MobEntity;
import net.minecraft.entity.player.HungerManager;
import net.minecraft.entity.player.PlayerAbilities;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundTag;
Expand All @@ -35,7 +30,6 @@
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;

import java.util.Iterator;
import java.util.List;

public class SoulShellEntity extends LivingEntity {
Expand Down Expand Up @@ -189,7 +183,7 @@ protected void dropInventory() {
}

public void swapWithPlayer(World world, PlayerEntity player) {
SoulShellEntity other = ModEntityTypes.soulShell.create(world);
SoulShellEntity other = ModEntities.soulShell.create(world);
if(other == null || world.isClient)
return;

Expand Down
21 changes: 0 additions & 21 deletions src/main/java/modfest/lacrimis/init/ModCrafting.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,11 @@
package modfest.lacrimis.init;

import modfest.lacrimis.compat.patchiouli.PageCrucible;
import modfest.lacrimis.compat.patchiouli.PageInfusion;
import modfest.lacrimis.crafting.*;
import net.fabricmc.fabric.api.client.screen.ScreenProviderRegistry;
import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.recipe.RecipeSerializer;
import net.minecraft.recipe.RecipeType;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
Expand All @@ -24,7 +17,6 @@
import modfest.lacrimis.Lacrimis;
import modfest.lacrimis.block.entity.CombinerEntity;
import modfest.lacrimis.block.entity.InfusionTableEntity;
import vazkii.patchouli.client.book.ClientBookRegistry;

public class ModCrafting {
public static final Identifier INFUSION_SCREEN_ID = new Identifier(Lacrimis.MODID, "infusion");
Expand Down Expand Up @@ -78,17 +70,4 @@ public ScreenHandler create(int syncId, Identifier identifier, PlayerEntity play
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(Lacrimis.MODID, "infusion_shapeless"), SHAPELESS_INFUSION_SERIALIZER);
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(Lacrimis.MODID, "crucible"), CRUCIBLE_SERIALIZER);
}

public static void registerClient() {
// Infusion GUI
ScreenProviderRegistry.INSTANCE.<InfusionScreenHandler>registerFactory(ModCrafting.INFUSION_SCREEN_ID,
container -> new InfusionScreen(container, MinecraftClient.getInstance().player.inventory, new TranslatableText(Lacrimis.MODID + ".gui.infusion")));
ScreenProviderRegistry.INSTANCE.<CombinerScreenHandler>registerFactory(ModCrafting.COMBINER_SCREEN_ID,
container -> new CombinerScreen(container, MinecraftClient.getInstance().player.inventory, new TranslatableText(Lacrimis.MODID + ".gui.combiner")));

// Patchouli pages
ClientBookRegistry.INSTANCE.pageTypes.put(new Identifier(Lacrimis.MODID, "crucible"), PageCrucible.class);
ClientBookRegistry.INSTANCE.pageTypes.put(new Identifier(Lacrimis.MODID, "infusion"), PageInfusion.class);
}

}
Loading

0 comments on commit 7b35cac

Please sign in to comment.