12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package me.hammerle.supersnuvi.tiles;
- import me.hammerle.supersnuvi.entity.Entity;
- import me.hammerle.supersnuvi.util.BlockDataStorage;
- import me.hammerle.supersnuvi.util.Face;
- import me.hammerle.supersnuvi.gamelogic.Level;
- public class HeadHitOnceTile extends BaseBoxTile
- {
- private final BlockDataStorage states = new BlockDataStorage();
-
- private final float tMinX2;
- private final float tMaxX2;
- private final float tMinY2;
- private final float tMaxY2;
-
- public HeadHitOnceTile(float tMinX, float tMinY, float tMaxX, float tMaxY, float tMinX2, float tMinY2, float tMaxX2, float tMaxY2)
- {
- super(tMinX, tMinY, tMaxX, tMaxY);
- this.tMinX2 = tMinX2;
- this.tMaxX2 = tMaxX2;
- this.tMinY2 = tMinY2;
- this.tMaxY2 = tMaxY2;
- }
- @Override
- public float getTextureMinX(int x, int y, Level l)
- {
- return states.contains(x, y, l) ? tMinX2 : super.getTextureMinX(x, y, l);
- }
- @Override
- public float getTextureMinY(int x, int y, Level l)
- {
- return states.contains(x, y, l) ? tMinY2 : super.getTextureMinY(x, y, l);
- }
- @Override
- public float getTextureMaxX(int x, int y, Level l)
- {
- return states.contains(x, y, l) ? tMaxX2 : super.getTextureMaxX(x, y, l);
- }
- @Override
- public float getTextureMaxY(int x, int y, Level l)
- {
- return states.contains(x, y, l) ? tMaxY2 : super.getTextureMaxY(x, y, l);
- }
- @Override
- public void onEntityCollide(Entity ent, int x, int y, Face face, Level l)
- {
- if(face == Face.DOWN && ent.getItemCollector().isHero() && ent.getMotionY() > 0 && states.add(x, y, l))
- {
- l.getTileUpdater().add(l.getData().getBackgroundIndex(), x, y);
- l.callEvent("tile_hit", (sc) ->
- {
- sc.setVar("tile_x", (double) x);
- sc.setVar("tile_y", (double) y);
- sc.setVar("entity", ent);
- }, null);
- }
- }
-
- @Override
- public void reset(Level l)
- {
- states.clear(l);
- }
-
- @Override
- public void reset(int x, int y, Level l)
- {
- states.clear(x, y, l);
- }
- }
|