Skip to content

Commit

Permalink
change how components are added and created
Browse files Browse the repository at this point in the history
  • Loading branch information
BlueWeabo committed Sep 15, 2024
1 parent 588dd0d commit d5fcc3e
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void addInformation(ItemStack itemStack, EntityPlayer player, List<String
.getMultiTileContainer(itemStack.getItemDamage());
Class<? extends TooltipAssigner> toolTipClass = container.getTooltipClass();
if (toolTipClass == null) return;
Entity entity = container.getOriginalEntity();
Entity entity = container.getFakeEntity();
TooltipAssigner tooltipData = entity.get(toolTipClass);
tooltipData.assignTooltip(tooltip);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.gtnewhorizons.mutecore.api.registry;

import java.lang.reflect.Constructor;

import com.gtnewhorizons.mutecore.MuTECore;

public class ComponentContainer {

private final Class<?> clazz;
private final Object[] constructorArgs;

public ComponentContainer(Class<?> clazz, Object... constructorArgs) {
this.clazz = clazz;
this.constructorArgs = constructorArgs;
}

public Object create() {
try {
Class<?>[] argTypes = new Class<?>[constructorArgs.length];
for (int i = 0; i < constructorArgs.length; i++) {
argTypes[i] = constructorArgs[i].getClass();
}
Constructor<?> constructor = clazz.getDeclaredConstructor(argTypes);
return constructor.newInstance(constructorArgs);
} catch (Exception e) {
MuTECore.LOG.error(e.getMessage());
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.gtnewhorizons.mutecore.api.registry;

import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand All @@ -21,7 +25,8 @@ public class MultiTileContainer {
private final @Nonnull Class<? extends MultiTileEntity> clazz;
private final int id;
private final @Nonnull WeakReference<MultiTileEntityRegistry> reg;
private final @Nonnull Entity originalEntity;
private final Set<ComponentContainer> components;
private final @Nonnull Entity fakeEntity;
private Class<? extends TooltipAssigner> tooltipClass;
private @Nonnull MuTEGUI gui;
private String unlocalizedName;
Expand All @@ -31,12 +36,14 @@ public MultiTileContainer(@Nonnull MultiTileEntityRegistry reg, int id,
this.reg = new WeakReference<>(reg);
this.clazz = clazz;
this.id = id;
originalEntity = MuTECore.ENGINE.createEntity(new FakeEntity());
fakeEntity = MuTECore.ENGINE.createEntity(new FakeEntity());
components = new HashSet<>();
}

public @Nonnull MultiTileContainer addComponents(Object... components) {
for (Object component : components) {
originalEntity.add(component);
public @Nonnull MultiTileContainer addComponents(ComponentContainer... components) {
for (ComponentContainer component : components) {
this.components.add(component);
fakeEntity.add(component.create());
}
return this;
}
Expand All @@ -63,8 +70,13 @@ public boolean register() {
}

public @Nonnull Entity createNewEntity() {
Entity newEntity = MuTECore.ENGINE.createEntityAs(originalEntity);
newEntity.removeType(FakeEntity.class);
List<Object> components = new ArrayList<>();
for (ComponentContainer componentContainer : this.components) {
Object component = componentContainer.create();
if (component == null) continue;
components.add(component);
}
Entity newEntity = MuTECore.ENGINE.createEntity(components.toArray());
newEntity.add(
new Id(
id,
Expand Down Expand Up @@ -100,8 +112,8 @@ public Class<? extends TooltipAssigner> getTooltipClass() {
return tooltipClass;
}

public Entity getOriginalEntity() {
return originalEntity;
public Entity getFakeEntity() {
return fakeEntity;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public void renderInventoryBlock(Block block, int metadata, int modelId, RenderB
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);

MultiTileEntityRegistry reg = mublock.getRegistry();
reg.getRender(metadata).render(reg.getMultiTileContainer(metadata).getOriginalEntity(), renderer, 0, 0, 0, null);
reg.getRender(metadata).render(reg.getMultiTileContainer(metadata).getFakeEntity(), renderer, 0, 0, 0, null);

GL11.glTranslatef(0.5F, 0.5F, 0.5F);
}
Expand Down

0 comments on commit d5fcc3e

Please sign in to comment.