mirror of
https://github.com/TicTicBoooom-Mods/MasterfulMachinery.git
synced 2026-01-18 16:37:23 +01:00
added projector renderer with controller relative position rendering. not implemented position adjustments yet.
This commit is contained in:
67
.vscode/launch.json
vendored
Normal file
67
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "java",
|
||||
"name": "runClient",
|
||||
"request": "launch",
|
||||
"mainClass": "net.minecraftforge.userdev.LaunchTesting",
|
||||
"projectName": "masterfulmachinery",
|
||||
"cwd": "${workspaceFolder}\\run",
|
||||
"vmArgs": "-Dforge.logging.console.level\u003ddebug -Dforge.logging.markers\u003dREGISTRIES -Dmixin.env.remapRefMap\u003dtrue -Dmixin.env.refMapRemappingFile\u003dA:\\Dev\\MC\\MasterfulMachinery\\build/createSrgToMcp/output.srg -XX:+IgnoreUnrecognizedVMOptions --add-exports\u003djava.base/sun.security.util\u003dALL-UNNAMED --add-exports\u003djdk.naming.dns/com.sun.jndi.dns\u003djava.naming --add-opens\u003djava.base/java.util.jar\u003dALL-UNNAMED -XX:HeapDumpPath\u003dMojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump \"-Dos.name\u003dWindows 10\" -Dos.version\u003d10.0",
|
||||
"args": "",
|
||||
"env": {
|
||||
"MOD_CLASSES": "masterfulmachinery%%${workspaceFolder}\\bin\\main;masterfulmachinery%%${workspaceFolder}\\bin\\main;mmtest%%${workspaceFolder}\\bin\\test;mmtest%%${workspaceFolder}\\bin\\test",
|
||||
"MCP_MAPPINGS": "snapshot_20210309-1.16.5",
|
||||
"MCP_VERSION": "20210115.111550",
|
||||
"FORGE_VERSION": "36.2.25",
|
||||
"assetIndex": "1.16",
|
||||
"assetDirectory": "C:\\Users\\kyle\\.gradle\\caches\\forge_gradle\\assets",
|
||||
"nativesDirectory": "${workspaceFolder}\\build\\natives",
|
||||
"FORGE_GROUP": "net.minecraftforge",
|
||||
"target": "fmluserdevclient",
|
||||
"MC_VERSION": "1.16.5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "java",
|
||||
"name": "runData",
|
||||
"request": "launch",
|
||||
"mainClass": "net.minecraftforge.userdev.LaunchTesting",
|
||||
"projectName": "masterfulmachinery",
|
||||
"cwd": "${workspaceFolder}\\run",
|
||||
"vmArgs": "-Dforge.logging.console.level\u003ddebug -Dforge.logging.markers\u003dREGISTRIES -Dmixin.env.remapRefMap\u003dtrue -Dmixin.env.refMapRemappingFile\u003dA:\\Dev\\MC\\MasterfulMachinery\\build/createSrgToMcp/output.srg -XX:+IgnoreUnrecognizedVMOptions --add-exports\u003djava.base/sun.security.util\u003dALL-UNNAMED --add-exports\u003djdk.naming.dns/com.sun.jndi.dns\u003djava.naming --add-opens\u003djava.base/java.util.jar\u003dALL-UNNAMED",
|
||||
"args": "--mod masterfulmachinery --all --output A:\\Dev\\MC\\MasterfulMachinery\\src\\generated\\resources --existing A:\\Dev\\MC\\MasterfulMachinery\\src\\main\\resources",
|
||||
"env": {
|
||||
"MOD_CLASSES": "masterfulmachinery%%${workspaceFolder}\\bin\\main;masterfulmachinery%%${workspaceFolder}\\bin\\main",
|
||||
"MCP_MAPPINGS": "snapshot_20210309-1.16.5",
|
||||
"MCP_VERSION": "20210115.111550",
|
||||
"FORGE_VERSION": "36.2.25",
|
||||
"assetIndex": "1.16",
|
||||
"assetDirectory": "C:\\Users\\kyle\\.gradle\\caches\\forge_gradle\\assets",
|
||||
"FORGE_GROUP": "net.minecraftforge",
|
||||
"target": "fmluserdevdata",
|
||||
"MC_VERSION": "1.16.5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "java",
|
||||
"name": "runServer",
|
||||
"request": "launch",
|
||||
"mainClass": "net.minecraftforge.userdev.LaunchTesting",
|
||||
"projectName": "masterfulmachinery",
|
||||
"cwd": "${workspaceFolder}\\run",
|
||||
"vmArgs": "-Dforge.logging.console.level\u003dinfo -Dforge.logging.markers\u003dREGISTRIES -Dmixin.env.remapRefMap\u003dtrue -Dmixin.env.refMapRemappingFile\u003dA:\\Dev\\MC\\MasterfulMachinery\\build/createSrgToMcp/output.srg -XX:+IgnoreUnrecognizedVMOptions --add-exports\u003djava.base/sun.security.util\u003dALL-UNNAMED --add-exports\u003djdk.naming.dns/com.sun.jndi.dns\u003djava.naming --add-opens\u003djava.base/java.util.jar\u003dALL-UNNAMED",
|
||||
"args": "-mixin.config\u003dmasterfulmachinery.mixins.json",
|
||||
"env": {
|
||||
"MOD_CLASSES": "masterfulmachinery%%${workspaceFolder}\\bin\\main;masterfulmachinery%%${workspaceFolder}\\bin\\main;mmtest%%${workspaceFolder}\\bin\\test;mmtest%%${workspaceFolder}\\bin\\test",
|
||||
"MCP_MAPPINGS": "snapshot_20210309-1.16.5",
|
||||
"MCP_VERSION": "20210115.111550",
|
||||
"FORGE_VERSION": "36.2.25",
|
||||
"FORGE_GROUP": "net.minecraftforge",
|
||||
"target": "fmluserdevserver",
|
||||
"MC_VERSION": "1.16.5"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"java.dependency.packagePresentation": "hierarchical",
|
||||
"java.configuration.updateBuildConfiguration": "interactive"
|
||||
}
|
||||
@@ -180,7 +180,7 @@ dependencies {
|
||||
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
|
||||
compileOnly 'org.projectlombok:lombok:1.18.22'
|
||||
annotationProcessor 'org.projectlombok:lombok:1.18.22'
|
||||
minecraft 'net.minecraftforge:forge:1.16.5-36.2.25'
|
||||
minecraft 'net.minecraftforge:forge:1.16.5-36.2.39'
|
||||
|
||||
// compileOnly 'com.google.code.gson:gson:2.9.0'
|
||||
implementation 'org.spongepowered:mixin:0.8-SNAPSHOT'
|
||||
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package com.ticticboooom.mods.mm;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.ter.ProjectorTileEntityRenderer;
|
||||
import com.ticticboooom.mods.mm.block.ter.model.controller.ControllerBlockModel;
|
||||
import com.ticticboooom.mods.mm.block.ter.model.port.PortBlockModel;
|
||||
import com.ticticboooom.mods.mm.cap.BlueprintData;
|
||||
import com.ticticboooom.mods.mm.cap.IBlueprintData;
|
||||
import com.ticticboooom.mods.mm.client.screen.BlueprintScreen;
|
||||
import com.ticticboooom.mods.mm.client.screen.ControllerScreen;
|
||||
import com.ticticboooom.mods.mm.client.screen.PortScreen;
|
||||
import com.ticticboooom.mods.mm.client.screen.ProjectorScreen;
|
||||
import com.ticticboooom.mods.mm.net.MMNetworkManager;
|
||||
import com.ticticboooom.mods.mm.ports.PortTypeRegistry;
|
||||
import com.ticticboooom.mods.mm.ports.base.PortType;
|
||||
@@ -22,8 +26,9 @@ import net.minecraftforge.client.event.ModelBakeEvent;
|
||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
import net.minecraftforge.common.capabilities.CapabilityManager;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.thread.EffectiveSide;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
@@ -43,7 +48,6 @@ public class ModRoot {
|
||||
MMItems.ITEMS.register(bus);
|
||||
MMContainerTypes.CONTAINERS.register(bus);
|
||||
bus.addListener(ModRoot::commonSetup);
|
||||
|
||||
if (EffectiveSide.get().isClient()) {
|
||||
bus.addListener(ModRoot::modelRegistry);
|
||||
bus.addListener(ModRoot::bake);
|
||||
@@ -54,6 +58,9 @@ public class ModRoot {
|
||||
|
||||
private static void commonSetup(FMLCommonSetupEvent event) {
|
||||
event.enqueueWork(MMNetworkManager::init);
|
||||
event.enqueueWork(() -> {
|
||||
CapabilityManager.INSTANCE.register(IBlueprintData.class, new BlueprintData.Storage(), BlueprintData::new);
|
||||
});
|
||||
}
|
||||
|
||||
public static void bake(ModelBakeEvent event) {
|
||||
@@ -89,6 +96,8 @@ public class ModRoot {
|
||||
ScreenManager.registerFactory(MMContainerTypes.CONTROLLER.get(), ControllerScreen::new);
|
||||
ScreenManager.registerFactory(MMContainerTypes.PORT.get(), PortScreen::new);
|
||||
ScreenManager.registerFactory(MMContainerTypes.BLUEPRINT.get(), BlueprintScreen::new);
|
||||
ScreenManager.registerFactory(MMContainerTypes.PROJECTOR.get(), ProjectorScreen::new);
|
||||
ClientRegistry.bindTileEntityRenderer(MMTiles.PROJECTOR.get(), ProjectorTileEntityRenderer::new);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
package com.ticticboooom.mods.mm;
|
||||
|
||||
import com.electronwill.nightconfig.core.AbstractConfig;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.lwjgl.system.CallbackI;
|
||||
|
||||
public class Ref {
|
||||
|
||||
|
||||
@@ -1,34 +1,24 @@
|
||||
package com.ticticboooom.mods.mm.block;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.tile.ControllerTile;
|
||||
import com.ticticboooom.mods.mm.block.tile.PortTile;
|
||||
import com.ticticboooom.mods.mm.setup.MMItems;
|
||||
import com.ticticboooom.mods.mm.setup.MMTiles;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.util.text.IFormattableTextComponent;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.sound.sampled.Port;
|
||||
import java.util.List;
|
||||
|
||||
public class PortBlock extends Block {
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.ticticboooom.mods.mm.block;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.tile.ProjectorTile;
|
||||
import com.ticticboooom.mods.mm.setup.MMTiles;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.HorizontalBlock;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.state.StateContainer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class ProjectorBlock extends HorizontalBlock {
|
||||
|
||||
public ProjectorBlock() {
|
||||
super(Properties.create(Material.IRON));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) {
|
||||
super.fillStateContainer(builder.add(HORIZONTAL_FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext ctx) {
|
||||
return this.getDefaultState().with(HORIZONTAL_FACING, ctx.getPlacementHorizontalFacing().getOpposite());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(BlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return MMTiles.PROJECTOR.get().create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) {
|
||||
if (!worldIn.isRemote()) {
|
||||
TileEntity blockEntity = worldIn.getTileEntity(pos);
|
||||
if (blockEntity instanceof ProjectorTile) {
|
||||
NetworkHooks.openGui((ServerPlayerEntity) player, (ProjectorTile) blockEntity, pos);
|
||||
}
|
||||
}
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import com.ticticboooom.mods.mm.data.model.ControllerModel;
|
||||
import com.ticticboooom.mods.mm.setup.MMBlocks;
|
||||
import com.ticticboooom.mods.mm.util.TagHelper;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -14,11 +13,9 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.ticticboooom.mods.mm.block.item;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.ControllerModel;
|
||||
import com.ticticboooom.mods.mm.data.model.PortModel;
|
||||
import com.ticticboooom.mods.mm.data.model.StructureModel;
|
||||
import com.ticticboooom.mods.mm.setup.MMItems;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -12,8 +11,6 @@ import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.NonNullList;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import javax.sound.sampled.Port;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
|
||||
public class MMItemGroup extends ItemGroup {
|
||||
@@ -32,7 +29,6 @@ public class MMItemGroup extends ItemGroup {
|
||||
@Override
|
||||
public void fill(NonNullList<ItemStack> items) {
|
||||
super.fill(items);
|
||||
items.clear();
|
||||
items.addAll(getControllers());
|
||||
}
|
||||
|
||||
|
||||
@@ -2,19 +2,15 @@ package com.ticticboooom.mods.mm.block.item;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.tile.PortTile;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.ControllerModel;
|
||||
import com.ticticboooom.mods.mm.data.model.PortModel;
|
||||
import com.ticticboooom.mods.mm.ports.PortTypeRegistry;
|
||||
import com.ticticboooom.mods.mm.ports.base.PortType;
|
||||
import com.ticticboooom.mods.mm.setup.MMBlocks;
|
||||
import com.ticticboooom.mods.mm.setup.MMRegistries;
|
||||
import com.ticticboooom.mods.mm.util.TagHelper;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.ticticboooom.mods.mm.block.item;
|
||||
|
||||
import com.ticticboooom.mods.mm.setup.MMBlocks;
|
||||
import net.minecraft.item.BlockItem;
|
||||
|
||||
public class ProjectorItem extends BlockItem {
|
||||
|
||||
public ProjectorItem() {
|
||||
super(MMBlocks.PROJECTOR.get(), new Properties().group(MMItemGroup.INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.ticticboooom.mods.mm.block.ter;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.ticticboooom.mods.mm.block.tile.ProjectorTile;
|
||||
import com.ticticboooom.mods.mm.cap.Capabilities;
|
||||
import com.ticticboooom.mods.mm.cap.IBlueprintData;
|
||||
import com.ticticboooom.mods.mm.client.helper.GuiBlockRenderBuilder;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.StructureModel;
|
||||
import com.ticticboooom.mods.mm.setup.MMRegistries;
|
||||
import com.ticticboooom.mods.mm.structures.StructureKeyType;
|
||||
import com.ticticboooom.mods.mm.util.TagHelper;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.BlockRendererDispatcher;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.RenderTypeLookup;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.vector.Quaternion;
|
||||
import net.minecraft.util.math.vector.Vector3f;
|
||||
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class ProjectorTileEntityRenderer extends TileEntityRenderer<ProjectorTile> {
|
||||
|
||||
public ProjectorTileEntityRenderer(TileEntityRendererDispatcher rendererDispatcherIn) {
|
||||
super(rendererDispatcherIn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ProjectorTile tileEntityIn, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) {
|
||||
ItemStack blueprint = tileEntityIn.blueprint.getStackInSlot(0);
|
||||
if (blueprint == null || blueprint.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Optional<IBlueprintData> bp = blueprint.getCapability(Capabilities.BLUEPRINT_DATA).resolve();
|
||||
if (!bp.isPresent()) {
|
||||
return;
|
||||
}
|
||||
ResourceLocation structure = bp.get().getStructure();
|
||||
StructureModel model = DataRegistry.STRUCTURES.get(structure);
|
||||
if (model == null){
|
||||
return;
|
||||
}
|
||||
BlockRendererDispatcher brd = Minecraft.getInstance().getBlockRendererDispatcher();
|
||||
|
||||
BlockPos pos = tileEntityIn.getPos();
|
||||
|
||||
for (StructureModel.PositionedKey key : model.positionedKeys) {
|
||||
StructureKeyType value = MMRegistries.STRUCTURE_KEY_TYPES.getValue(key.type);
|
||||
value.onBlueprintInitialRender(pos.add(key.pos), model, key.data);
|
||||
GuiBlockRenderBuilder guiBlockRenderBuilder = value.onBlueprintRender(pos.add(key.pos), model, key.data);
|
||||
BlockState blockState = guiBlockRenderBuilder.blockState;
|
||||
TileEntity tile = guiBlockRenderBuilder.tile;
|
||||
IBakedModel mdl = brd.getModelForState(blockState);
|
||||
|
||||
int color = Minecraft.getInstance().getBlockColors().getColor(blockState, null, null, 0);
|
||||
float r = (float) (color >> 16 & 255) / 255.0F;
|
||||
float g = (float) (color >> 8 & 255) / 255.0F;
|
||||
float b = (float) (color & 255) / 255.0F;
|
||||
matrixStackIn.push();
|
||||
matrixStackIn.translate(key.pos.getX(), key.pos.getY(), key.pos.getZ());
|
||||
matrixStackIn.scale(0.7f, 0.7f, 0.7f);
|
||||
brd.getBlockModelRenderer().renderModel(matrixStackIn.getLast(), bufferIn.getBuffer(RenderTypeLookup.func_239220_a_(blockState, false)), blockState, mdl, r,g,b, 0xF000F0, OverlayTexture.NO_OVERLAY, tile != null ? tile.getModelData() : EmptyModelData.INSTANCE);
|
||||
matrixStackIn.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
|
||||
public class ControllerBlockModel implements IDynamicBakedModel {
|
||||
|
||||
@@ -1,25 +1,13 @@
|
||||
package com.ticticboooom.mods.mm.block.ter.model.controller;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.ter.model.DefaultBakedModel;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.ControllerModel;
|
||||
import com.ticticboooom.mods.mm.data.model.base.BlockstateModel;
|
||||
import com.ticticboooom.mods.mm.setup.MMBlocks;
|
||||
import net.java.games.input.Controller;
|
||||
import net.minecraft.block.DirectionalBlock;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.ItemOverrideList;
|
||||
import net.minecraft.client.renderer.model.ModelBakery;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.state.DirectionProperty;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.ModelDataManager;
|
||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package com.ticticboooom.mods.mm.block.ter.model.port;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sun.org.apache.xpath.internal.operations.Bool;
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.data.model.ControllerModel;
|
||||
import com.ticticboooom.mods.mm.data.model.PortModel;
|
||||
import com.ticticboooom.mods.mm.ports.PortTypeRegistry;
|
||||
import com.ticticboooom.mods.mm.ports.base.PortType;
|
||||
|
||||
@@ -21,7 +21,6 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraftforge.client.model.data.IModelData;
|
||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.ticticboooom.mods.mm.block.tile;
|
||||
|
||||
import com.ticticboooom.mods.mm.client.container.ProjectorContainer;
|
||||
import com.ticticboooom.mods.mm.setup.MMTiles;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.Inventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class ProjectorTile extends TileEntity implements INamedContainerProvider {
|
||||
|
||||
public ProjectorTile() {
|
||||
super(MMTiles.PROJECTOR.get());
|
||||
}
|
||||
|
||||
public Inventory blueprint = new Inventory(ItemStack.EMPTY);
|
||||
|
||||
|
||||
@Override
|
||||
public ITextComponent getDisplayName() {
|
||||
return new StringTextComponent("Projector");
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Container createMenu(int p_createMenu_1_, PlayerInventory p_createMenu_2_, PlayerEntity p_createMenu_3_) {
|
||||
return new ProjectorContainer(this, p_createMenu_2_, p_createMenu_1_);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.ticticboooom.mods.mm.cap;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.INBT;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class BlueprintData implements IBlueprintData {
|
||||
private ResourceLocation structure;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public ResourceLocation getStructure() {
|
||||
return structure;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStructure(ResourceLocation structure) {
|
||||
this.structure = structure;
|
||||
}
|
||||
|
||||
public static final class Storage implements Capability.IStorage<IBlueprintData> {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public INBT writeNBT(Capability<IBlueprintData> capability, IBlueprintData instance, Direction side) {
|
||||
CompoundNBT nbt = new CompoundNBT();
|
||||
nbt.putString("Structure", instance.getStructure() == null ? "" : instance.getStructure().toString());
|
||||
return nbt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readNBT(Capability<IBlueprintData> capability, IBlueprintData instance, Direction side, INBT nbt) {
|
||||
CompoundNBT comp = (CompoundNBT) nbt;
|
||||
String structure = comp.getString("Structure");
|
||||
if (structure.equals("")){
|
||||
return;
|
||||
}
|
||||
instance.setStructure(ResourceLocation.tryCreate(structure));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.ticticboooom.mods.mm.cap;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.INBT;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class BlueprintDataProvider implements ICapabilitySerializable<INBT> {
|
||||
|
||||
private final BlueprintData capability = new BlueprintData();
|
||||
private final LazyOptional<IBlueprintData> capabilityLO = LazyOptional.of(() -> capability);
|
||||
|
||||
@Override
|
||||
public INBT serializeNBT() {
|
||||
return Capabilities.BLUEPRINT_DATA.writeNBT(capability, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserializeNBT(INBT nbt) {
|
||||
Capabilities.BLUEPRINT_DATA.readNBT(capability, null, nbt);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (cap == Capabilities.BLUEPRINT_DATA) {
|
||||
return capabilityLO.cast();
|
||||
}
|
||||
return LazyOptional.empty();
|
||||
}
|
||||
}
|
||||
26
src/main/java/com/ticticboooom/mods/mm/cap/Capabilities.java
Normal file
26
src/main/java/com/ticticboooom/mods/mm/cap/Capabilities.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.ticticboooom.mods.mm.cap;
|
||||
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.setup.MMItems;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.CapabilityInject;
|
||||
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
|
||||
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE)
|
||||
public class Capabilities {
|
||||
|
||||
@CapabilityInject(IBlueprintData.class)
|
||||
public static Capability<IBlueprintData> BLUEPRINT_DATA = null;
|
||||
|
||||
@SubscribeEvent
|
||||
public static void on(AttachCapabilitiesEvent<ItemStack> event) {
|
||||
if (event.getObject().getItem() == MMItems.BLUEPRINT.get()) {
|
||||
ResourceLocation structure_capability = new ResourceLocation(Ref.MOD_ID, "structure_capability");
|
||||
event.addCapability(structure_capability, new BlueprintDataProvider());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.ticticboooom.mods.mm.cap;
|
||||
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public interface IBlueprintData {
|
||||
ResourceLocation getStructure();
|
||||
void setStructure(ResourceLocation structure);
|
||||
}
|
||||
@@ -1,41 +1,68 @@
|
||||
package com.ticticboooom.mods.mm.client.container;
|
||||
|
||||
import com.ticticboooom.mods.mm.cap.Capabilities;
|
||||
import com.ticticboooom.mods.mm.cap.IBlueprintData;
|
||||
import com.ticticboooom.mods.mm.client.container.slot.BlueprintSlot;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.StructureModel;
|
||||
import com.ticticboooom.mods.mm.net.MMNetworkManager;
|
||||
import com.ticticboooom.mods.mm.net.packets.UpdateBluprintItemPacket;
|
||||
import com.ticticboooom.mods.mm.setup.MMContainerTypes;
|
||||
import com.ticticboooom.mods.mm.util.TagHelper;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.NetworkManager;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.IntReferenceHolder;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraftforge.fml.network.NetworkDirection;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Optional;
|
||||
|
||||
public class BlueprintContainer extends Container {
|
||||
|
||||
public IntReferenceHolder indexHolder = IntReferenceHolder.single();
|
||||
private PlayerInventory inv;
|
||||
|
||||
public BlueprintContainer(int windowId, PlayerInventory inv, PacketBuffer data) {
|
||||
super(MMContainerTypes.BLUEPRINT.get(), windowId);
|
||||
ItemStack currentItem = inv.player.getHeldItemMainhand();
|
||||
Optional<IBlueprintData> bp = currentItem.getCapability(Capabilities.BLUEPRINT_DATA).resolve();
|
||||
if (bp.isPresent()) {
|
||||
ResourceLocation structureId = bp.get().getStructure();
|
||||
if (structureId != null) {
|
||||
structure = DataRegistry.STRUCTURES.get(structureId);
|
||||
}
|
||||
}
|
||||
|
||||
this.inv = inv;
|
||||
int index = 0;
|
||||
for (int i = 0; i < 11; i++) {
|
||||
addSlot(new BlueprintSlot(index, -35 + 1, -15 + (i * 18)+ 1));
|
||||
addSlot(new BlueprintSlot(index, -35 + 1, -15 + (i * 18) + 1));
|
||||
index++;
|
||||
addSlot(new BlueprintSlot(index, -35 + 18+ 1, -15 + (i * 18)+ 1));
|
||||
addSlot(new BlueprintSlot(index, -35 + 18 + 1, -15 + (i * 18) + 1));
|
||||
index++;
|
||||
addSlot(new BlueprintSlot(index, -35 + (2 * 18)+ 1, -15 + (i * 18)+ 1));
|
||||
addSlot(new BlueprintSlot(index, -35 + (2 * 18) + 1, -15 + (i * 18) + 1));
|
||||
index++;
|
||||
addSlot(new BlueprintSlot(index, -35 + (3 * 18)+ 1, -15 + (i * 18)+ 1));
|
||||
addSlot(new BlueprintSlot(index, -35 + (3 * 18) + 1, -15 + (i * 18) + 1));
|
||||
index++;
|
||||
}
|
||||
|
||||
controllerSlot = (BlueprintSlot) addSlot(new BlueprintSlot(index++, 185, 116));
|
||||
}
|
||||
|
||||
public StructureModel structure;
|
||||
public BlueprintSlot controllerSlot;
|
||||
|
||||
public void rotateDisplayedStructureForward() {
|
||||
indexHolder.set(indexHolder.get() + 1);
|
||||
@@ -53,10 +80,19 @@ public class BlueprintContainer extends Container {
|
||||
this.structure = DataRegistry.STRUCTURES.values().toArray(new StructureModel[0])[indexHolder.get()];
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(PlayerEntity playerIn) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContainerClosed(PlayerEntity playerIn) {
|
||||
ItemStack item = playerIn.getHeldItemMainhand();
|
||||
IBlueprintData data = item.getCapability(Capabilities.BLUEPRINT_DATA).resolve().get();
|
||||
if (structure != null) {
|
||||
data.setStructure(this.structure.id);
|
||||
MMNetworkManager.INSTANCE.sendToServer(new UpdateBluprintItemPacket.Data(playerIn.getUniqueID(), this.structure.id));
|
||||
}
|
||||
super.onContainerClosed(playerIn);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.ticticboooom.mods.mm.client.container;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.tile.ControllerTile;
|
||||
import com.ticticboooom.mods.mm.block.tile.PortTile;
|
||||
import com.ticticboooom.mods.mm.setup.MMContainerTypes;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
@@ -9,7 +8,6 @@ import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.ticticboooom.mods.mm.client.container;
|
||||
|
||||
|
||||
import com.ticticboooom.mods.mm.block.tile.ProjectorTile;
|
||||
import com.ticticboooom.mods.mm.setup.MMContainerTypes;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
public class ProjectorContainer extends Container {
|
||||
public ProjectorTile tile;
|
||||
public PlayerInventory inv;
|
||||
|
||||
public ProjectorContainer(ProjectorTile tile, PlayerInventory inv, int id) {
|
||||
super(MMContainerTypes.PROJECTOR.get(), id);
|
||||
this.tile = tile;
|
||||
this.inv = inv;
|
||||
|
||||
addSlot(new Slot(tile.blueprint, 0, 152, -9));
|
||||
|
||||
int playerOffsetX = 8;
|
||||
int playerOffsetY = 121;
|
||||
for (int j = 0; j < 3; j++) {
|
||||
for (int i = 0; i < 9; i++) {
|
||||
addSlot(new Slot(inv, 9 + (j * 9 + i), i* 18 + playerOffsetX, j* 18 + playerOffsetY));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
addSlot(new Slot(inv, i,8 + (i * 18), 179));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(PlayerEntity playerIn) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public ProjectorContainer(int windowId, PlayerInventory inv, PacketBuffer data) {
|
||||
this((ProjectorTile) inv.player.world.getTileEntity(data.readBlockPos()), inv, windowId);
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,7 @@ public class GuiBlockRenderBuilder {
|
||||
private Vector3f prePosition = new Vector3f();
|
||||
private Vector3f positionOffset = new Vector3f();
|
||||
private TileEntityRenderer<TileEntity> ter = null;
|
||||
private TileEntity tile;
|
||||
public TileEntity tile;
|
||||
|
||||
public GuiBlockRenderBuilder(BlockState blockState, AirBlockReader reader) {
|
||||
this(blockState, blockState.createTileEntity(reader), reader);
|
||||
|
||||
@@ -11,9 +11,11 @@ import com.ticticboooom.mods.mm.client.helper.GuiBlockRenderBuilder;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.ControllerModel;
|
||||
import com.ticticboooom.mods.mm.data.model.StructureModel;
|
||||
import com.ticticboooom.mods.mm.setup.MMItems;
|
||||
import com.ticticboooom.mods.mm.setup.MMRegistries;
|
||||
import com.ticticboooom.mods.mm.structures.StructureKeyType;
|
||||
import com.ticticboooom.mods.mm.util.GuiBlockUtils;
|
||||
import com.ticticboooom.mods.mm.util.TagHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||
@@ -23,6 +25,7 @@ import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@@ -57,13 +60,19 @@ public class BlueprintScreen extends ContainerScreen<BlueprintContainer> {
|
||||
public BlueprintScreen(BlueprintContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) {
|
||||
super(screenContainer, inv, titleIn);
|
||||
this.screenContainer = screenContainer;
|
||||
float tx = 9.75f, ty = -3, tz = 10;
|
||||
prePos = new Vector3f(tx, ty, tz);
|
||||
this.xRotation = -225;
|
||||
this.yRotation = 15;
|
||||
this.yLastMousePosition = 0;
|
||||
this.xLastMousePosition = 0;
|
||||
scaleFactor = 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
|
||||
super.render(matrixStack, mouseX, mouseY, partialTicks);
|
||||
this.renderHoveredTooltip(matrixStack, mouseX, mouseY);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -93,14 +102,6 @@ public class BlueprintScreen extends ContainerScreen<BlueprintContainer> {
|
||||
if (screenContainer.structure == null) {
|
||||
Optional<Map.Entry<ResourceLocation, StructureModel>> first = DataRegistry.STRUCTURES.entrySet().stream().findFirst();
|
||||
screenContainer.structure = first.get().getValue();
|
||||
renderStructure(screenContainer.structure, matrixStack, x, y, true);
|
||||
float tx = 9.75f, ty = -3, tz = 10;
|
||||
prePos = new Vector3f(tx, ty, tz);
|
||||
this.xRotation = -225;
|
||||
this.yRotation = 15;
|
||||
this.yLastMousePosition = 0;
|
||||
this.xLastMousePosition = 0;
|
||||
scaleFactor = 1;
|
||||
}
|
||||
if (screenContainer.structure != null) {
|
||||
renderStructure(screenContainer.structure, matrixStack, x, y, false);
|
||||
@@ -111,18 +112,15 @@ public class BlueprintScreen extends ContainerScreen<BlueprintContainer> {
|
||||
renderActStructureButtons(x, y, matrixStack);
|
||||
FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer;
|
||||
fontRenderer.drawString(matrixStack, screenContainer.structure.name.getString(),guiLeft + 40, guiTop + 110, 0x444444);
|
||||
Minecraft.getInstance().textureManager.bindTexture(new ResourceLocation(Ref.MOD_ID, "textures/gui/slot_parts.png"));
|
||||
blit(matrixStack, guiLeft + 184, guiTop + 115, 0, 26, 18, 18);
|
||||
prevMouseState = GLFW.glfwGetMouseButton(Minecraft.getInstance().getMainWindow().getHandle(), GLFW.GLFW_MOUSE_BUTTON_LEFT);
|
||||
|
||||
}
|
||||
|
||||
private void renderStructure(StructureModel model, MatrixStack ms, int mouseX, int mouseY, boolean isInitial) {
|
||||
Quaternion rotation = new Quaternion(new Vector3f(1, 0, 0), yRotation, true);
|
||||
rotation.multiply(new Quaternion(new Vector3f(0, -1, 0), -xRotation, true));
|
||||
if (isInitial) {
|
||||
for (StructureModel.PositionedKey key : model.positionedKeys) {
|
||||
StructureKeyType value = MMRegistries.STRUCTURE_KEY_TYPES.getValue(key.type);
|
||||
|
||||
}
|
||||
} else {
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.enableRescaleNormal();
|
||||
RenderSystem.enableAlphaTest();
|
||||
@@ -183,7 +181,6 @@ public class BlueprintScreen extends ContainerScreen<BlueprintContainer> {
|
||||
// End tick
|
||||
xLastMousePosition = mouseX;
|
||||
yLastMousePosition = mouseY;
|
||||
}
|
||||
}
|
||||
|
||||
private void renderItems() {
|
||||
@@ -212,6 +209,11 @@ public class BlueprintScreen extends ContainerScreen<BlueprintContainer> {
|
||||
break;
|
||||
}
|
||||
}
|
||||
ItemStack itemStack = new ItemStack(MMItems.CONTROLLER.get());
|
||||
TagHelper.setRL(itemStack, "Controller", screenContainer.structure.controllerId.get((int) controllerIndex));
|
||||
screenContainer.controllerSlot.setItem(itemStack);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void renderActStructureButtons(int x, int y, MatrixStack ms) {
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.ticticboooom.mods.mm.client.screen;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.cap.Capabilities;
|
||||
import com.ticticboooom.mods.mm.cap.IBlueprintData;
|
||||
import com.ticticboooom.mods.mm.client.container.ProjectorContainer;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.StructureModel;
|
||||
import com.ticticboooom.mods.mm.util.TagHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class ProjectorScreen extends ContainerScreen<ProjectorContainer> {
|
||||
private final ProjectorContainer screenContainer;
|
||||
private static final ResourceLocation GUI = new ResourceLocation(Ref.MOD_ID, "textures/gui/port_gui.png");
|
||||
private static final ResourceLocation SLOT_PARTS = new ResourceLocation(Ref.MOD_ID, "textures/gui/slot_parts.png");
|
||||
|
||||
|
||||
public ProjectorScreen(ProjectorContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) {
|
||||
super(screenContainer, inv, titleIn);
|
||||
this.screenContainer = screenContainer;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks, int x, int y) {
|
||||
this.renderBackground(matrixStack);
|
||||
Minecraft.getInstance().textureManager.bindTexture(GUI);
|
||||
this.blit(matrixStack, this.guiLeft, this.guiTop - 20, 0, 0, 175, 256);
|
||||
Minecraft.getInstance().textureManager.bindTexture(SLOT_PARTS);
|
||||
blit(matrixStack, guiLeft + 151, guiTop - 10, 0, 26, 18, 18);
|
||||
|
||||
ItemStack blueprint = screenContainer.tile.blueprint.getStackInSlot(0);
|
||||
if (!blueprint.isEmpty()) {
|
||||
Optional<IBlueprintData> structure = blueprint.getCapability(Capabilities.BLUEPRINT_DATA).resolve();
|
||||
if (structure.isPresent() && structure.get().getStructure() != null) {
|
||||
StructureModel structureModel = DataRegistry.STRUCTURES.get(structure.get().getStructure());
|
||||
drawString(matrixStack, Minecraft.getInstance().fontRenderer, structureModel.name, 0x444444, this.guiLeft + 5, this.guiTop + 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(MatrixStack stack, int mouseX, int mouseY, float p_230430_4_) {
|
||||
super.render(stack, mouseX, mouseY, p_230430_4_);
|
||||
|
||||
this.renderHoveredTooltip(stack, mouseX, mouseY);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(MatrixStack matrixStack, int x, int y) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package com.ticticboooom.mods.mm.item;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.item.MMItemGroup;
|
||||
import com.ticticboooom.mods.mm.client.container.BlueprintContainerProvider;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.ticticboooom.mods.mm.net;
|
||||
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.net.packets.TileClientUpdatePacket;
|
||||
import com.ticticboooom.mods.mm.net.packets.UpdateBluprintItemPacket;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fml.network.NetworkRegistry;
|
||||
import net.minecraftforge.fml.network.simple.SimpleChannel;
|
||||
@@ -18,5 +19,6 @@ public class MMNetworkManager {
|
||||
public static void init() {
|
||||
int i = 0;
|
||||
INSTANCE.registerMessage(i++, TileClientUpdatePacket.Data.class, TileClientUpdatePacket.Data::encode, TileClientUpdatePacket.Data::decode, TileClientUpdatePacket::handle);
|
||||
INSTANCE.registerMessage(i++, UpdateBluprintItemPacket.Data.class, UpdateBluprintItemPacket.Data::encode, UpdateBluprintItemPacket.Data::decode, UpdateBluprintItemPacket::handle);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.ticticboooom.mods.mm.net.packets;
|
||||
|
||||
import com.ticticboooom.mods.mm.cap.Capabilities;
|
||||
import com.ticticboooom.mods.mm.net.MMNetworkManager;
|
||||
import com.ticticboooom.mods.mm.setup.MMItems;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.network.NetworkManager;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tags.NetworkTagManager;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.network.NetworkDirection;
|
||||
import net.minecraftforge.fml.network.NetworkEvent;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class UpdateBluprintItemPacket {
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public static final class Data {
|
||||
private final UUID player;
|
||||
private final ResourceLocation structure;
|
||||
|
||||
public static void encode(Data data, PacketBuffer buffer) {
|
||||
buffer.writeUniqueId(data.getPlayer());
|
||||
buffer.writeString(data.structure.toString());
|
||||
}
|
||||
|
||||
public static Data decode(PacketBuffer buffer) {
|
||||
return new Data(buffer.readUniqueId(), ResourceLocation.tryCreate(buffer.readString()));
|
||||
}
|
||||
}
|
||||
|
||||
public static void handle(Data data, Supplier<NetworkEvent.Context> ctx) {
|
||||
ctx.get().enqueueWork(() -> {
|
||||
if (ctx.get().getDirection() == NetworkDirection.PLAY_TO_SERVER) {
|
||||
ItemStack item = ctx.get().getSender().getHeldItemMainhand();
|
||||
if (item.getItem() == MMItems.BLUEPRINT.get()) {
|
||||
item.getCapability(Capabilities.BLUEPRINT_DATA).resolve().get().setStructure(data.structure);
|
||||
MMNetworkManager.INSTANCE.send(PacketDistributor.ALL.noArg(), data);
|
||||
}
|
||||
} else {
|
||||
ClientWorld level = Minecraft.getInstance().world;
|
||||
for (AbstractClientPlayerEntity player : level.getPlayers()) {
|
||||
if (player.getUniqueID().equals(data.player)) {
|
||||
ItemStack item = player.getHeldItemMainhand();
|
||||
if (item.getItem() == MMItems.BLUEPRINT.get()) {
|
||||
item.getCapability(Capabilities.BLUEPRINT_DATA).resolve().get().setStructure(data.structure);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
ctx.get().setPacketHandled(true);
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,11 @@
|
||||
package com.ticticboooom.mods.mm.ports.base;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.ticticboooom.mods.mm.block.tile.PortTile;
|
||||
import com.ticticboooom.mods.mm.setup.MMTiles;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.registries.ForgeRegistryEntry;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public abstract class PortType extends ForgeRegistryEntry<PortType> {
|
||||
public abstract PortStorage parseStorage(JsonObject data);
|
||||
public TileEntity createTileEntity() {
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.ticticboooom.mods.mm.setup;
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.block.ControllerBlock;
|
||||
import com.ticticboooom.mods.mm.block.PortBlock;
|
||||
import com.ticticboooom.mods.mm.block.ProjectorBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
@@ -13,4 +14,5 @@ public class MMBlocks {
|
||||
|
||||
public static final RegistryObject<ControllerBlock> CONTROLLER = BLOCKS.register("controller", ControllerBlock::new);
|
||||
public static final RegistryObject<PortBlock> PORT = BLOCKS.register("port", PortBlock::new);
|
||||
public static final RegistryObject<ProjectorBlock> PROJECTOR = BLOCKS.register("projector", ProjectorBlock::new);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package com.ticticboooom.mods.mm.setup;
|
||||
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.block.ControllerBlock;
|
||||
import com.ticticboooom.mods.mm.block.PortBlock;
|
||||
import com.ticticboooom.mods.mm.client.container.BlueprintContainer;
|
||||
import com.ticticboooom.mods.mm.client.container.ControllerContainer;
|
||||
import com.ticticboooom.mods.mm.client.container.PortContainer;
|
||||
import net.minecraft.block.Block;
|
||||
import com.ticticboooom.mods.mm.client.container.ProjectorContainer;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraftforge.common.extensions.IForgeContainerType;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
@@ -19,4 +17,5 @@ public class MMContainerTypes {
|
||||
public static final RegistryObject<ContainerType<ControllerContainer>> CONTROLLER = CONTAINERS.register("controller", () -> IForgeContainerType.create(ControllerContainer::new));
|
||||
public static final RegistryObject<ContainerType<PortContainer>> PORT = CONTAINERS.register("port", () -> IForgeContainerType.create(PortContainer::new));
|
||||
public static final RegistryObject<ContainerType<BlueprintContainer>> BLUEPRINT = CONTAINERS.register("blueprint", () -> IForgeContainerType.create(BlueprintContainer::new));
|
||||
public static final RegistryObject<ContainerType<ProjectorContainer>> PROJECTOR = CONTAINERS.register("projector", () -> IForgeContainerType.create(ProjectorContainer::new));
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package com.ticticboooom.mods.mm.setup;
|
||||
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.block.ControllerBlock;
|
||||
import com.ticticboooom.mods.mm.block.item.ControllerBlockItem;
|
||||
import com.ticticboooom.mods.mm.block.item.PortBlockItem;
|
||||
import com.ticticboooom.mods.mm.block.item.ProjectorItem;
|
||||
import com.ticticboooom.mods.mm.item.BlueprintItem;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
@@ -17,4 +16,5 @@ public class MMItems {
|
||||
public static final RegistryObject<ControllerBlockItem> CONTROLLER = ITEMS.register("controller", ControllerBlockItem::new);
|
||||
public static final RegistryObject<PortBlockItem> PORT = ITEMS.register("port", PortBlockItem::new);
|
||||
public static final RegistryObject<BlueprintItem> BLUEPRINT = ITEMS.register("blueprint", BlueprintItem::new);
|
||||
public static final RegistryObject<ProjectorItem> PROJECTOR = ITEMS.register("projector", ProjectorItem::new);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.ticticboooom.mods.mm.setup;
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.block.tile.ControllerTile;
|
||||
import com.ticticboooom.mods.mm.block.tile.PortTile;
|
||||
import com.ticticboooom.mods.mm.block.tile.ProjectorTile;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
@@ -13,4 +14,6 @@ public class MMTiles {
|
||||
|
||||
public static final RegistryObject<TileEntityType<ControllerTile>> CONTROLLER = TILES.register("controller", () -> TileEntityType.Builder.create(ControllerTile::new, MMBlocks.CONTROLLER.get()).build(null));
|
||||
public static final RegistryObject<TileEntityType<PortTile>> PORT = TILES.register("port", () -> TileEntityType.Builder.create(PortTile::new, MMBlocks.PORT.get()).build(null));
|
||||
public static final RegistryObject<TileEntityType<ProjectorTile>> PROJECTOR = TILES.register("projector", () -> TileEntityType.Builder.create(ProjectorTile::new, MMBlocks.PROJECTOR.get()).build(null));
|
||||
|
||||
}
|
||||
|
||||
@@ -4,13 +4,11 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.ticticboooom.mods.mm.Ref;
|
||||
import com.ticticboooom.mods.mm.block.tile.PortTile;
|
||||
import com.ticticboooom.mods.mm.client.helper.AirBlockReader;
|
||||
import com.ticticboooom.mods.mm.client.helper.GuiBlockRenderBuilder;
|
||||
import com.ticticboooom.mods.mm.data.DataRegistry;
|
||||
import com.ticticboooom.mods.mm.data.model.PortModel;
|
||||
import com.ticticboooom.mods.mm.data.model.StructureModel;
|
||||
import com.ticticboooom.mods.mm.ports.ctx.MachineStructureContext;
|
||||
import com.ticticboooom.mods.mm.setup.MMBlocks;
|
||||
import com.ticticboooom.mods.mm.setup.MMItems;
|
||||
import com.ticticboooom.mods.mm.structures.StructureKeyType;
|
||||
import com.ticticboooom.mods.mm.structures.StructureKeyTypeValue;
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.ticticboooom.mods.mm.util.GuiBlockUtils;
|
||||
import com.ticticboooom.mods.mm.util.TagHelper;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"#minecraft:logs"
|
||||
]
|
||||
},
|
||||
"B": "minecraft:glass"
|
||||
"B": "mekanism:induction_port"
|
||||
},
|
||||
"requiredPorts": {
|
||||
},
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#Wed Jun 29 13:54:49 BST 2022
|
||||
VERSION_CODE=1898
|
||||
#Sun Sep 18 13:56:29 BST 2022
|
||||
VERSION_CODE=2009
|
||||
|
||||
Reference in New Issue
Block a user