• If you have a mod, tool or prefab, please use the Resources section. Click Mods at the top of the forums.

Adding Custom Workstations

So I've been playing around with adding in a custom workstation in blocks.xml, I've managed to get the block place able but I can't actually interact with it, it just says "Press E to use", but pressing E does nothing and holding E does not pop up a radial menu. I finally just copypasted the Forge and changed the mesh and I still can't interact with it.

Other than adding it in blocks.xml, where am I missing to add it in? Does it require modding beyond the normal XML/XPath modding?

 
you have to add it to the xui and if you are using tools at this workbench you will need to add a tools window for it in the windows.xml or use an existing one.

or you can look at the tableSaw and it uses the workbench UI using this line <property name="WorkstationWindow" value="workstation_workbench" />

 
Here is a full eg. of adding a custom workstation:

+Blocks

Code:
<block name="[color="#FF8C00"]workstationResearchTable[/color]">
<property name="Class" value="Workstation"/>
<property name="CustomIcon" value="schoolDesk"/>
<property name="Material" value="Mwood_weak"/>
<property name="MaxDamage" value="800"/>
<property name="StabilitySupport" value="false"/>
<property name="Shape" value="Ext3dModel"/>
<property name="Texture" value="282"/>
<property name="Mesh" value="models"/>
<property name="Path" value="solid"/>
<property name="Model" value="Furniture/school_desk" param1="main_mesh"/>
<property name="ImposterDontBlock" value="true"/>
<property name="Place" value="TowardsPlacerInverted"/>
<property name="OnlySimpleRotations" value="true"/>
<property name="IsTerrainDecoration" value="true"/>
<property name="HeatMapStrength" value="0.5"/>
<property name="HeatMapTime" value="1200"/>
<property name="HeatMapFrequency" value="25"/>
<property name="Stacknumber" value="1"/>
<property class="Workstation">
	<property name="Modules" value="tools,output"/>
</property>
<property name="WorkstationIcon" value="ui_game_symbol_workbench" />
<property name="OpenSound" value="open_cardboard" />
<property name="CloseSound" value="close_cardboard" />
<property class="RepairItems">
	<property name="resourceWood" value="50"/>
	<property name="resourceNail" value="10"/>
	<property name="resourceGlue" value="10"/>
</property>
<drop event="Harvest" name="terrStone" count="0" tool_category="Disassemble"/>
<drop event="Destroy" name="workstationResearchTable" count="1" tag="salvageHarvest"/>
<drop event="Fall" name="terrDestroyedWoodDebris" count="1" prob="0.75" stick_chance="1"/>
<property name="TakeDelay" value="15"/>
<property name="DescriptionKey" value="workstationResearchTableDesc"/>
<property name="EconomicValue" value="776"/>
<property name="Group" value="Building,Science"/>
<property name="FilterTags" value="fdecor,fother,ffurniture"/>
<property name="SortOrder1" value="70i0"/>
</block>

+Windows


Code:
<window name="[color="#00FFFF"]windowToolsResearchTable[/color]" width="228" height="121" panel="Right" cursor_area="true" >
	<panel style="header.panel">			
		<sprite style="header.icon" sprite="ui_game_symbol_pen"/>
		<label style="header.name" text="TOOLS" text_key="xuiTools" />
	</panel>

	<rect name="content" depth="0" pos="0,-46" height="75" disablefallthrough="true" on_press="true">

		<grid name="inventory" rows="1" cols="1" pos="3,-3" cell_width="75" cell_height="75" controller="WorkstationToolGrid" repeat_content="true" allow_sort_order="false" required_tools="toolGeometrySet" required_tools_only="true">
			<required_item_stack name="0"/>
		</grid>		

		<!-- <grid name="slot_preview" depth="1" rows="1" cols="3" pos="3,-3" cell_width="75" cell_height="75" controller="SlotPreview">
			<rect>
				<sprite name="slot" depth="2" width="70" height="50" color="[white_quarter_alpha]" sprite="toolCookingPot" atlas="ItemIconAtlasGreyscale"  pos="35,-30" pivot="center" foregroundlayer="true" />
			</rect>
			<rect>
				<sprite name="slot" depth="2" width="70" height="50" color="[white_quarter_alpha]" sprite="toolCookingGrill" atlas="ItemIconAtlasGreyscale"  pos="35,-30" pivot="center" foregroundlayer="true"/>
			</rect>
			<rect>
				<sprite name="slot" depth="2" width="70" height="50" color="[white_quarter_alpha]" sprite="toolBeaker" atlas="ItemIconAtlasGreyscale"  pos="35,-30" pivot="center" foregroundlayer="true"/>
			</rect>
		</grid> -->
	</rect>
</window>

+xui


Code:
<window_group name="workstation_[color="#FF8C00"]workstationResearchTable[/color]" controller="XUiC_WorkstationWindowGroup">
		<window name="windowCraftingList"/>
		<window name="craftingInfoPanel"/>
		<window name="windowCraftingQueue"/>
		<window name="[color="#00FFFF"]windowToolsResearchTable[/color]" />
		<window name="windowOutput" />
		<window name="windowNonPagingHeader" />
	</window_group>
 
Here is a full eg. of adding a custom workstation:
+Blocks

Code:
<block name="[color="#FF8C00"]workstationResearchTable[/color]">
<property name="Class" value="Workstation"/>
<property name="CustomIcon" value="schoolDesk"/>
<property name="Material" value="Mwood_weak"/>
<property name="MaxDamage" value="800"/>
<property name="StabilitySupport" value="false"/>
<property name="Shape" value="Ext3dModel"/>
<property name="Texture" value="282"/>
<property name="Mesh" value="models"/>
<property name="Path" value="solid"/>
<property name="Model" value="Furniture/school_desk" param1="main_mesh"/>
<property name="ImposterDontBlock" value="true"/>
<property name="Place" value="TowardsPlacerInverted"/>
<property name="OnlySimpleRotations" value="true"/>
<property name="IsTerrainDecoration" value="true"/>
<property name="HeatMapStrength" value="0.5"/>
<property name="HeatMapTime" value="1200"/>
<property name="HeatMapFrequency" value="25"/>
<property name="Stacknumber" value="1"/>
<property class="Workstation">
	<property name="Modules" value="tools,output"/>
</property>
<property name="WorkstationIcon" value="ui_game_symbol_workbench" />
<property name="OpenSound" value="open_cardboard" />
<property name="CloseSound" value="close_cardboard" />
<property class="RepairItems">
	<property name="resourceWood" value="50"/>
	<property name="resourceNail" value="10"/>
	<property name="resourceGlue" value="10"/>
</property>
<drop event="Harvest" name="terrStone" count="0" tool_category="Disassemble"/>
<drop event="Destroy" name="workstationResearchTable" count="1" tag="salvageHarvest"/>
<drop event="Fall" name="terrDestroyedWoodDebris" count="1" prob="0.75" stick_chance="1"/>
<property name="TakeDelay" value="15"/>
<property name="DescriptionKey" value="workstationResearchTableDesc"/>
<property name="EconomicValue" value="776"/>
<property name="Group" value="Building,Science"/>
<property name="FilterTags" value="fdecor,fother,ffurniture"/>
<property name="SortOrder1" value="70i0"/>
</block>

+Windows


Code:
<window name="[color="#00FFFF"]windowToolsResearchTable[/color]" width="228" height="121" panel="Right" cursor_area="true" >
	<panel style="header.panel">			
		<sprite style="header.icon" sprite="ui_game_symbol_pen"/>
		<label style="header.name" text="TOOLS" text_key="xuiTools" />
	</panel>

	<rect name="content" depth="0" pos="0,-46" height="75" disablefallthrough="true" on_press="true">

		<grid name="inventory" rows="1" cols="1" pos="3,-3" cell_width="75" cell_height="75" controller="WorkstationToolGrid" repeat_content="true" allow_sort_order="false" required_tools="toolGeometrySet" required_tools_only="true">
			<required_item_stack name="0"/>
		</grid>		

		<!-- <grid name="slot_preview" depth="1" rows="1" cols="3" pos="3,-3" cell_width="75" cell_height="75" controller="SlotPreview">
			<rect>
				<sprite name="slot" depth="2" width="70" height="50" color="[white_quarter_alpha]" sprite="toolCookingPot" atlas="ItemIconAtlasGreyscale"  pos="35,-30" pivot="center" foregroundlayer="true" />
			</rect>
			<rect>
				<sprite name="slot" depth="2" width="70" height="50" color="[white_quarter_alpha]" sprite="toolCookingGrill" atlas="ItemIconAtlasGreyscale"  pos="35,-30" pivot="center" foregroundlayer="true"/>
			</rect>
			<rect>
				<sprite name="slot" depth="2" width="70" height="50" color="[white_quarter_alpha]" sprite="toolBeaker" atlas="ItemIconAtlasGreyscale"  pos="35,-30" pivot="center" foregroundlayer="true"/>
			</rect>
		</grid> -->
	</rect>
</window>

+xui


Code:
<window_group name="workstation_[color="#FF8C00"]workstationResearchTable[/color]" controller="XUiC_WorkstationWindowGroup">
		<window name="windowCraftingList"/>
		<window name="craftingInfoPanel"/>
		<window name="windowCraftingQueue"/>
		<window name="[color="#00FFFF"]windowToolsResearchTable[/color]" />
		<window name="windowOutput" />
		<window name="windowNonPagingHeader" />
	</window_group>
You're the best Clockwork! Yeah I was messing with it for a couple hours trying this and that and just COULD NOT get it to work... I'll play with this a bit more when I get home from work. (BTW we uploaded your Unofficial XML Fixes to the server we play on and with a few hours a frind of our blew up his defenses with an HE Rocket on Bloodmoon. It was hilarious)

 
You're the best Clockwork! Yeah I was messing with it for a couple hours trying this and that and just COULD NOT get it to work... I'll play with this a bit more when I get home from work. (BTW we uploaded your Unofficial XML Fixes to the server we play on and with a few hours a frind of our blew up his defenses with an HE Rocket on Bloodmoon. It was hilarious)
Lmao, that is awesome, hey and if you guys want even more of a challenge come check out my ACP mod at some point if it interests you.

Anyways you guys are welcome hope it helps. Cheers!

 
got it

u only need the xui for A17

Code:
	<ruleset name="default" scale="1.255" stackpanel_scale="1.05">
	<window_group name="workstation_URBENCHNAME" controller="XUiC_WorkstationWindowGroup">
		<window name="windowCraftingList"/>
		<window name="craftingInfoPanel"/>
		<window name="windowCraftingQueue"/>
		<window name="windowOutput" />
		<window name="windowNonPagingHeader" />
		<!-- <window name="windowCombine" /> -->
	</window_group>	
		</ruleset>
that works fine for me

 
Last edited by a moderator:
Back
Top