Jump to content

Recommended Posts

Posted

I am play with my friends and find easy dupe with thaumicenergestics. I am trying to fix it, but can find information about restrict extract items to hopper.

package thaumicenergistics.common.tiles;

import java.util.ArrayList;
import appeng.api.AEApi;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import thaumicenergistics.common.tiles.abstraction.ThETileInventory;

/**
 * Encodes recipes whose result is essentia.
 *
 * @author Nividica
 *
 */
public class TileDistillationPatternEncoder
	extends ThETileInventory
{
	/**
	 * NBT Keys
	 */
	private static String NBTKEY_INVENTORY = "inventory";

	/**
	 * Slot counts
	 */
	public static int SLOT_PATTERNS_COUNT = 2,
					SLOT_SOURCE_ITEM_COUNT = 1,
					SLOT_TOTAL_COUNT = SLOT_SOURCE_ITEM_COUNT + SLOT_PATTERNS_COUNT;
	/**
	 * Slot ID's
	 */
	public static int SLOT_SOURCE_ITEM = 0,
					SLOT_BLANK_PATTERNS = 1,
					SLOT_ENCODED_PATTERN = 2;

	/**
	 * Default constructor.
	 */
	public TileDistillationPatternEncoder()
	{
		super( "distillation.inscriber", SLOT_TOTAL_COUNT, 64 );
	}

	/**
	 * Does not need ticks.
	 */
	@Override
	public boolean canUpdate()
	{
		return false;
	}

	/**
	 * Returns a list of items to drop when broken.
	 *
	 * @return
	 */
	public ArrayList<ItemStack> getDrops( final ArrayList<ItemStack> drops )
	{
		// Add encoded
		if( this.internalInventory.getHasStack( SLOT_ENCODED_PATTERN ) )
		{
			drops.add( this.internalInventory.getStackInSlot( SLOT_ENCODED_PATTERN ) );
		}

		// Add blank
		if( this.internalInventory.getHasStack( SLOT_BLANK_PATTERNS ) )
		{
			drops.add( this.internalInventory.getStackInSlot( SLOT_BLANK_PATTERNS ) );
		}

		return drops;
	}

	/**
	 * True if there is a pattern to encode onto.
	 *
	 * @return
	 */
	public boolean hasPatterns()
	{
		// Is there anything in the pattern slots?
		return this.internalInventory.getHasStack( SLOT_ENCODED_PATTERN ) || this.internalInventory.getHasStack( SLOT_BLANK_PATTERNS );

	}

	@Override
	public boolean isItemValidForSlot( final int slotId, final ItemStack itemStack )
	{
		// Can always clear a slot
		if( itemStack == null )
		{
			return true;
		}

		// Empty pattern slot?
		if( slotId == SLOT_BLANK_PATTERNS )
		{
			return AEApi.instance().definitions().materials().blankPattern().isSameAs( itemStack );
		}

		// Encoded pattern slot?
		if( slotId == SLOT_ENCODED_PATTERN )
		{
			return AEApi.instance().definitions().items().encodedPattern().isSameAs( itemStack );
		}

		return true;
	}

	/**
	 * Read tile state from NBT.
	 */
	@Override
	public void readFromNBT( final NBTTagCompound data )
	{
		// Call super
		super.readFromNBT( data );

		// Has saved inventory?
		if( data.hasKey( NBTKEY_INVENTORY ) )
		{
			this.internalInventory.readFromNBT( data, NBTKEY_INVENTORY );
		}

	}

	/**
	 * Write tile state to NBT.
	 */
	@Override
	public void writeToNBT( final NBTTagCompound data )
	{
		// Call super
		super.writeToNBT( data );

		// Write the inventory
		this.internalInventory.writeToNBT( data, NBTKEY_INVENTORY );

	}
}

 

  • Guest locked this topic
Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hi, this is my second post with the same content as no one answered this and it's been a long time since I made the last post, I want to make a client-only mod, everything is ok, but when I use shaders, none of the textures rendered in RenderLevelStageEvent nor the crow entity model are rendered, I want them to be visible, because it's a horror themed mod I've already tried it with different shaders, but it didn't work with any of them and I really want to add support for shaders Here is how i render the crow model in the CrowEntityRenderer<CrowEntity>, by the time i use this method, i know is not the right method but i don't think this is the cause of the problem, the renderType i'm using is entityCutout @Override public void render(CrowEntity p_entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { super.render(p_entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); ClientEventHandler.getClient().crow.renderToBuffer(poseStack, bufferSource.getBuffer(ClientEventHandler.getClient().crow .renderType(TEXTURE)), packedLight, OverlayTexture.NO_OVERLAY, Utils.rgb(255, 255, 255)); } Here renderLevelStage @Override public void renderWorld(RenderLevelStageEvent e) { horrorEvents.draw(e); } Here is how i render every event public void draw(RenderLevelStageEvent e) { for (HorrorEvent event : currentHorrorEvents) { event.tick(e.getPartialTick()); event.draw(e); } } Here is how i render the crow model on the event @Override public void draw(RenderLevelStageEvent e) { if(e.getStage() == RenderLevelStageEvent.Stage.AFTER_ENTITIES) { float arcProgress = getArcProgress(0.25f); int alpha = (int) Mth.lerp(arcProgress, 0, 255); int packedLight = LevelRenderer.getLightColor(Minecraft.getInstance().level, blockPos); VertexConsumer builder = ClientEventHandler.bufferSource.getBuffer(crow); Crow<CreepyBirdHorrorEvent> model = ClientEventHandler .getClient().crow; model.setupAnim(this); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, packedLight, OverlayTexture.NO_OVERLAY, alpha); builder = ClientEventHandler.bufferSource.getBuffer(eyes); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, 15728880, OverlayTexture.NO_OVERLAY, alpha); } } How i render the model public static void renderModelInWorld(Model model, Vector3f pos, Vector3f offset, Camera camera, PoseStack matrix, VertexConsumer builder, int light, int overlay, int alpha) { matrix.pushPose(); Vec3 cameraPos = camera.getPosition(); double finalX = pos.x - cameraPos.x + offset.x; double finalY = pos.y - cameraPos.y + offset.y; double finalZ = pos.z - cameraPos.z + offset.z; matrix.pushPose(); matrix.translate(finalX, finalY, finalZ); matrix.mulPose(Axis.XP.rotationDegrees(180f)); model.renderToBuffer(matrix, builder, light, overlay, Utils .rgba(255, 255, 255, alpha)); matrix.popPose(); matrix.popPose(); } Thanks in advance
    • Same issue - I have no idea
    • I am trying to develop a modpack for me and my friends to use on our server. Does anyone know how to develop a modpack for a server or could they help take a look at my modpack to potentially help at all?
    • un server de armas realista.  
    • removed both, nope https://pastebin.com/kgtwq9us
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.